
phpunit-shell | CVE_2017-9841
um script python3 simples para explorar o CVE-2017-9841.
script simples que explora uma vulnerabilidade de execução remota de código encontrada em
PHPUnit anterior às versões 4.8.28 e 5.x anteriores a 5.6.3. faz uma requisição POST para o
alvo com comandos de sistema inseridos pelo usuário.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9841.
pip3 install requests bs4
Após identificar um alvo executando phpunit:
chmod +x phpunit-shell
./phpunit-shell -h
ou
python3 phpunit-shell -h
a opção -h ou --help mostra como executar o script com alguns exemplos.
há dois argumentos posicionais e alguns argumentos opcionais.
usage: phpunit-shell.py [-h] [-a] [-n] address
phpunit-shell.py explora uma vulnerabilidade de RCE em
aplicações que executam PHPUnit anteriores a 4.8.28 e 5.x anteriores a 5.6.3.
argumentos posicionais:
address ip/hostname, porta, subdiretórios para o arquivo eval-stdin.php vulnerável.
argumentos opcionais:
-h, --help mostra esta mensagem de ajuda e sai
-a, --accessible desativa funcionalidades que podem afetar negativamente leitores de tela
-n, --no-colour remove a saída colorida
exemplo:
phpunit-shell.py 10.10.10.10/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
phpunit-shell por padrão, imprime com cores e com alguma formatação adicional na saída do terminal, no entanto isso nem sempre é útil para aqueles que usam leitores de tela. usar o argumento --accessible desativará a formatação extravagante e as cores na saída do terminal.
também desativará a arte ASCII.
o script não pode assumir nada sobre o sistema que está atacando ou as limitações do usuário/serviço que executa a aplicação vulnerável. ou seja, não é um shell completo, então não é possível mudar de diretório e comandos mais longos podem não ser possíveis.
é mais uma meia-concha simples e rápida 🐢 projetada como um portal para exploração adicional - e eventual shell completo, escalonamento de privilégios, etc... 👍
o script também utiliza um tempo limite de 30 segundos para as requisições, isso pode ser alterado ou desativado completamente editando o script.
o código PHP 'shell_exec' é usado por padrão, mas também pode ser alterado se o usuário desejar. por exemplo, usando 'system' em vez disso.
o script foi principalmente um exercício de criação de um script python simples para explorar o CVE-2017-9841 e acelerar explorações futuras.
https://skerritt.blog/a11y/ - implementação de acessibilidade.