环境:春秋云境“免费空间”授权实验靶场。本文仅记录授权靶场中的验证过程;历史实例已关闭。
1. 基本信息
| 项目 | 内容 |
|---|---|
| CVE | CVE-2023-27179 |
| 产品 | GDidees CMS <= 3.9.1 |
| 漏洞类型 | 本地文件泄露 / 路径遍历 |
| 关键接口 | /_admin/imgdownload.php |
| 关键参数 | filename |
| Flag | flag{2c001ade-0fcf-4462-9e06-8694f2c6cdf3} |
| 靶场状态 | 已攻克并关闭历史实例 |
题目页面确认 filename 参数是本地文件泄露入口,并显示当前账号“已攻克”:

2. 漏洞原理
后台图片下载脚本把 filename 参数直接用于文件读取,没有将规范化后的路径限制在图片目录内。攻击者可以用目录遍历或绝对路径语义跳出图片目录,读取 Web 应用源码、配置文件或题目 Flag。
3. 复现过程
3.1 确认文件下载入口
关键路由为:
/_admin/imgdownload.php
参数名为 filename。请求结构:
GET /_admin/imgdownload.php?filename=<path-to-/flag> HTTP/1.1
Host: <target>
在授权实例中将 <path-to-/flag> 替换为相对目录遍历或应用支持的绝对路径形式,观察响应是否返回文件正文。目标实例地址和原始遍历层数没有保存在本地历史记录中,因此这里不伪造完整 URL。
3.2 读取 Flag
验证条件为:
- 不需要后台登录即可访问下载脚本。
filename能跳出原定图片目录。- 响应正文直接返回
/flag内容。
平台记录 的已完成记录保存的响应结果为:
flag{2c001ade-0fcf-4462-9e06-8694f2c6cdf3}
4. 关键利用链
未认证访问 /_admin/imgdownload.php-> filename 用户可控-> 路径规范化/目录边界校验缺失-> 读取目录外 /flag-> HTTP 响应返回 Flag
5. 验证结果
历史验证记录中的 Flag 为:
flag{2c001ade-0fcf-4462-9e06-8694f2c6cdf3}
平台页面保留了“已攻克”状态和 Flag 验证输入框,见下图:

本题没有保存实例地址、原始请求或单独的命令输出;Flag 依据是 平台记录 的历史记录,平台状态依据是当前详情页复核。
6. 修复建议
- 升级 GDidees CMS 至包含修复的版本。
- 下载接口只接受服务端生成的图片 ID,不接受客户端路径。
- 对路径统一解码、规范化并验证固定根目录,拒绝
..、绝对路径和符号链接逃逸。 - 对后台目录增加认证与授权,下载接口使用最小文件权限。
- 修复后回归测试编码遍历、双重编码、Windows 分隔符和空字节等形式。
7. 证据与参考
- 平台题目详情页:
https://yunjing.ichunqiu.com/cve/detail/1164?type=1&pay=2 - NVD:CVE-2023-27179
- 入口、Flag 和关闭状态:来自当前平台详情页及本地
免费空间全部靶场_平台记录.md的已完成记录。
