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

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

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

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

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

Категории

Все категории
Loading categories
php2shell-exposurehunt — Репозиторий для поиска уязвимых к PHP2Shell систем и связанного анализа | Kitploit
Инструменты/GitHubGitHub/deathbydata/php2shell-exposurehunt
Оборонительные ИнструментыАнализ уязвимостейАудит конфигурацииСбор информацииРазведка угрозРеагирование на ИнцидентыАнализ Журналов
GitHub

Популярное

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

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

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

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

Смотреть все инструменты →
deathbydata/php2shell-exposurehunt

php2shell-exposurehunt

Репозиторий для поиска уязвимых к PHP2Shell систем и связанного анализа

Репозиторий
116 ч 25 мин назадЕщё не проверено
Поделиться

php2shell-exposurehunt

Охота за экспозицией в Defender XDR для PHP2Shell (CVE-2026-109618 / CVE-2026-109619).

v3.3 · 22 окт. 2026

Назначение: Найти подключённые устройства, на которых активно работает PHP и которые могут быть подвержены PHP2Shell.

Область охвата: Defender XDR Advanced Hunting · подключённые конечные точки Windows и Linux · по умолчанию окно поиска 30 дней · только активный PHP. Не охвачено: неактивные установки и неуправляемые устройства. Не может выполняться в Sentinel, поскольку таблица установленного ПО (TVM) доступна для запросов только в Defender XDR.

Охоты (выполнять по порядку, для каждой ОС)

ОхотаWindowsLinuxВопрос
1windows/01-any-php.kqllinux/01-any-php.kqlЕсть ли PHP? Да/нет для каждого устройства.
2windows/02-evidence-breakout.kqllinux/02-evidence-breakout.kqlДетализация доказательств с версиями.
3windows/03-safety-net.kqllinux/03-safety-net.kqlСтраховочная сеть: устройства, обслуживающие веб-порты, прослушивающий процесс и статус PHP.

Что ищется

Все проверки событий используют одно окно поиска, let Lookback = 30d; в начале каждой охоты. IP-адреса берутся из последнего отчёта по каждому адаптеру за последние 7 дней. Установленное ПО — это текущий снимок TVM. Проверяются только подключённые конечные точки (OnboardingStatus == "Onboarded", DeviceCategory == "Endpoint").

Блок обнаружения PHP (охоты 1, 2 и 3)

Устройство считается имеющим обнаруженный PHP, если совпадает любое из следующих условий.

Как сопоставляются имена:

  • Имена файлов сопоставляются по регулярным выражениям, а не по фиксированным спискам. Каждое регулярное выражение нечувствительно к регистру и привязано (^…$), поэтому оно должно совпадать с полным именем файла, а не с его частью.
  • Сначала выполняется дешёвый фильтр по префиксу имени: startswith "php", плюс frankenphp в обеих ОС и lsphp в Linux. Затем регулярное выражение выполняется только по оставшемуся.
  • Имена в таблицах ниже — это примеры того, что совпадает с каждым шаблоном, и что он отклоняет. Другие номера версий (например, будущий php9.dll) совпадают автоматически.
  • patterns.test.js прогоняет каждое регулярное выражение по этим примерам. Если вы измените регулярное выражение, обновите примеры там.

Windows

ПроверкаТаблицаСовпаденияПочему это важно
Запущенные исполняемые файлы PHPDeviceProcessEventsРегулярное выражение ^(php(-cgi|-win)?|frankenphp)\.exe$, которое допускает ровно четыре имени: php.exe (CLI), php-cgi.exe (FastCGI-воркер), php-win.exe (CLI, без консоли), frankenphp.exe (PHP, встроенный в веб-сервер). phpstorm64.exe и другие инструменты php* не совпадаютДоказывает, что PHP запускался. Охота 2 показывает версию из информации о версии бинарного файла (ProcessVersionInfoProductVersion)
Загруженные DLL движка PHPDeviceImageLoadEventsРегулярное выражение ^php\d*(ts|isapi|apache[\w_]*)?\.dll$: php, любой номер версии, необязательный суффикс ts / isapi / apache…, затем .dll. Примеры приведены в таблице DLL ниже. DLL расширений (php_curl.dll и другие php_*.dll) не совпадают, поскольку подчёркивание не допускается сразу после phpЕдинственный способ увидеть PHP, работающий внутри другого процесса, например IIS или Apache, где не запускается ни один php*.exe. Охота 2 показывает DLL и процесс, который её загрузил
Установленное ПОDeviceTvmSoftwareInventoryНе регулярное выражение: SoftwareName has "php" (php как отдельное слово в имени) или SoftwareVendor =~ "php" (точное, нечувствительное к регистру)Ловит зарегистрированные установки. Zip-установки (обычный метод в Windows) обычно не регистрируются

Примеры DLL движка PHP, которые совпадают с шаблоном Windows

DLLЧто этоТипичный хост-процесс (показан в hunt 2)
php8.dll, php7.dllДвижок, сборка без поддержки потоковphp-cgi.exe (FastCGI под IIS, nginx или Apache mod_fcgid), php.exe
php8ts.dll, php7ts.dll, php5ts.dllДвижок, потокобезопасная сборкаhttpd.exe (модуль Apache), php.exe
php8apache2_4.dll, php7apache2_4.dll, php5apache2_2.dllЗагрузчик модуля Apachehttpd.exe
php5isapi.dllУстаревший модуль IIS ISAPI (PHP 5.2 и более ранние, не поддерживается)w3wp.exe

В таблице перечислены распространённые имена, а не список разрешённых: подходит любое имя, соответствующее шаблону. Имя DLL даёт только мажорную версию. Точная версия берётся из строки процесса php-cgi.exe или php.exe либо из установленного программного обеспечения на том же устройстве.

Linux

ПроверкаТаблицаСовпаденияПочему это важно
Запущенные бинарники PHPDeviceProcessEventsРегулярное выражение ^(php[\d.]*|php-(fpm|cgi)[\d.]*|lsphp[\d.]*|frankenphp)$: php, php-fpm, php-cgi или lsphp (LiteSpeed), каждое с необязательной версией из цифр и точек, плюс frankenphp. Примеры: php, php8.3, php83, php-fpm8.3, php-cgi8.2, lsphp83. Такие инструменты, как phpunit, phpize и php-config, не совпадают, поскольку после базового имени могут следовать только цифры и точкиДоказывает, что PHP запускался. Hunt 2 показывает подсказку major.minor, извлечённую из имени, пути или командной строки вторым регулярным выражением, php-?(?:fpm|cgi)?/?(\d+\.\d+) (например, php-fpm8.3 или /etc/php/8.3/ даёт 8.3.x)
Установленные пакетыDeviceTvmSoftwareInventoryНе регулярное выражение: SoftwareName contains "php" (подстрока, поэтому совпадают имена с версиями, такие как php8.3-fpm и libapache2-mod-php8.3) или SoftwareVendor =~ "php"Единственная проверка для Apache mod_php и для php-fpm, работающего с момента до начала окна: в Linux здесь нет проверки загрузки библиотек, а форкнутые рабочие процессы php-fpm не создают событий запуска процессов

Проверки страховочной сети hunt 3

ПроверкаТаблицаСовпаденияПочему это важно
Активное веб-обслуживаниеDeviceNetworkEventsInboundConnectionAccepted на фиксированном списке портов: 80, 443, 8080, 8443. Loopback исключён (RemoteIPType != "Loopback"). Показывает различные и публичные источники, а также принимающий процесс (via <process>)Доказывает, что устройство обслуживает запросы, даже если его веб-сервер запустился до начала окна ретроспективного просмотра. ntoskrnl.exe = HTTP.sys (IIS, ADFS, RD Gateway, Windows Admin Center, SSTP)
Запущенный веб-серверDeviceProcessEventsНе регулярное выражение: фиксированный список точных имён без учёта регистра (in~). Windows: w3wp.exe, httpd.exe, nginx.exe, caddy.exe, lighttpd.exe, frankenphp.exe. Linux: httpd, apache2, nginx, lshttpd, litespeed, openlitespeed, caddy, lighttpd, frankenphpВеб-сервер, запустившийся в окне и не загрузивший PHP, даёт «Not seen» с высокой уверенностью. Windows также показывает имена пулов приложений IIS, извлечённые из командной строки w3wp.exe регулярным выражением -ap\s+"?([^"\s]+)

Значения столбца PHP в hunt 3

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