← Вернуться к списку

Поле php2shell-audit: Windows использует exe, Linux, py, 10 минут, чтобы понять PHP.

itadol5j

Дело не в изгибах. Все дело в стуках:Инструменты загрузки, работающие машины, очистка целей, чтение выводов, решение о том, исправлять или нетДракон. Десять минут до конца.

Во-первых, CVE-2026-109618 и CVE-2026-109619 являются несанкционированными RCE для самого движка PHP, официальная восстановленная версия 8.2.35/8.3.36/8.4.27/8.5.12. Два набора калибра...PHP CVSS 4.0 обыграл 9.2, NVD CVSS 3.1 обыграл 9.89.8 в названии является последним, и оба ссылаются на одну и ту же лазейку, чтобы не думать, что это отличается.

Вот инструменты:Vivipenclaw-code/php2shell-uditАпач-2.0, только сегодня. Он делает две вещи: проверяет, какие PHP установлены на этой машине, подметает неоткрытую версию далекого шторма.Он не атакует трафик, не записывает диски, не меняет конфигурацию.И это то, что я проверил в исходном коде, и удаленный режим на самом деле отправляет только один запрос HEAD для главы ответа.

php2shell-udit терминальные эффекты

I. DIFTING: Два способа узнать, в какой системе вы находитесь.

Linux/MacOS идут Python, нулевой зависимости, стандартной библиотеки достаточно, никакого пипа для загрузки чего-либо:

git clone https://github.com/viviopenclaw-code/php2shell-audit.git
cd php2shell-audit
chmod +x php2shell_audit.py
python3 php2shell_audit.py --local

Windows идет прямо к exe, без Python. Скачать страницу Release php2shell-audit.exe:

certutil -hashfile php2shell-audit.exe SHA256
php2shell-audit.exe --local

Exe - это однофайловая консольная программа, которая поддерживает Win10/11 x64.Никакой кодовой подписи.Таким образом, первый запуск SmartScreen прекратится. Давай сначала побежим. SHA256SUMS.txt Опять же, этот шаг — тот, в котором никто не касается «зеленой» версии, которая распространяется в Интернете.

Две версии одинаковых параметров. Только один набор в задней части учебника, Windows. python3 php2shell_audit.py Заменить php2shell-audit.exe Просто сделайте это.

Методы установки Linux и Windows

Что происходит?

python3 php2shell_audit.py --local

Он сделает четыре вещи, одну вещь:

  1. Найдите PHP.:/usr/bin/php*Я не знаю./usr/sbin/php-fpm*Я не знаю./opt/*Я не знаю./usr/lib/php/*/sapi/*Домашнее пиво тоже считается. Окна, проверь. C:\phpPHP под XAMPP, WAMP, Laragon, Chocolatey, Scoop, Program Files.
  2. Читать версиюПробег php -v Возьмите Баннер, с 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12.
  3. Проверьте конфигурациюРазбор промежуточных инструкций по смягчению последствий в php.ini.
  4. Колоночный процессПеречислите все работы, которые должны быть перезапущены после патча.

Я проехал мимо машины без PHP. Вот результат:

php2shell-audit 1.1.0 - local audit
Host    : admin
System  : Linux 7.0.0-30-generic (x86_64)
------------------------------------------------------------------------
[UNKNOWN] No PHP installation detected.
------------------------------------------------------------------------
php.ini mitigation directives
[WARNING] session.upload_progress.enabled = (unset)  (recommended 0)
[WARNING] fatal_error_backtraces = (unset)  (recommended 0)
[WARNING] expose_php = (unset)  (recommended 0)
------------------------------------------------------------------------
Running services that must be restarted after patching
[INFO] apache2 - 3 process(es)
------------------------------------------------------------------------
[INFO] No PHP binary, FPM daemon or Apache PHP module was found on this host.
------------------------------------------------------------------------
Remediation
[UNKNOWN] No PHP install was audited, so nothing can be confirmed safe.

Смотрите последнюю строчку:Ни PHP, ни PASS.Этот дизайн очень хорошо известен - нет проблем с поиском чего-либо. Это две разные вещи.

Кстати, это связано. expose_php Всех их. Это не имеет ничего общего с самой лазейкой, но это прямое решение о том, может ли удаленное сканирование прочитать номер вашей версии.Выключи его. Отпечатки пальцев нападавшего наполовину слепы.Я не знаю. Конечно, это не называется ремонтом, это называется уменьшением информационного воздействия.

III. Параметры

Обзор аргумента php2shell-udit
ПараметрыРольпо умолчанию
--local / --remoteДва или один, мы решаем проверить машину или цель.требуемый
--file targets.txtЦелевая группа, один в один ряд, #начните с комментарияНикто
--workers NКоличество долгосрочных параллельных курсов10
--json report.jsonВывод полный JSON,- Скачать StdoutНикто
--timeout NЕдиный тайм-аут запроса (sec)8
--insecureПропустить проверку TLS, только для отпечатков пальцевЗакрыть

Код выхода: прямо в точку карты CI

Код выходазначение
0Не найдена пострадавшая версия
2По крайней мере, одна пострадавшая версия была найдена.
1Ошибка на самом инструменте (например, JSON не может писать)

Бросьте номер два, вот в чем дело.Это означает, что вы можете поместить его в линию потока, провести его через фазу строительства, ударить его и не ждать, пока люди его найдут.

iv. Sweeping remote: -remote how

# 单个目标
python3 php2shell_audit.py --remote example.com

# 批量,20 个并发,出 JSON
python3 php2shell_audit.py --remote --file targets.txt --workers 20 --json out.json

# 也可以直接写在命令行里
python3 php2shell_audit.py --remote https://a.example 10.0.0.5

Что? Писать

# production fleet
example.com
https://shop.example.net
10.0.0.5:8080

# Начните с заметки, одной строки, одной на складе targets.example.txt Его можно копировать напрямую.

Что он послал?

Каждая цель.Отправить только один запросТолько один раз сервер отклонит HeAD. И прочитай. Server:Я не знаю.X-Powered-By: и Set-CookieУбирайся оттуда. PHP/x.y.zЯ не знаю.

Ни многочастного, ни большого тела, ни OOM, ни бесполезного.Он умер в пояснительной записке в качестве дизайнерского ограничения.Это не случайно.

Цена должна быть ясной:Удаленный режим не доказывает удобство использованияОн может сообщать только ту информацию, которую добровольно выплевывает сервер. Спрячьте номер версии, и результат всегда будет неизвестен.

V. Как читать выводы

Значение трех выводов
[VULNERABLE] https://shop.example.net
         http    : 200
         server  : Apache/2.4.62 (Debian)
         powered : PHP/8.4.16
         php     : 8.4.16
         verdict : PHP 8.4.16 < fixed 8.4.27
  • [Вулнерабль] Версия была прочитана и ниже восстановленной версии.
  • [ПАСС] Версия была прочитана и больше или равна восстановленной версии.
  • [Предупреждение] Временные инструкции по смягчению последствий не были установлены, как предполагалось.
  • [Неизвестно] Недостаточно доказательств.Не безопасно, неизвестно.

Именно в этом случае весь инструмент является наиболее ценным. Большинство сканеров дают вам только красный, желтый и зеленый, а затем вы думаете, что это все на экране.Неизвестный должен считатьсяЛибо выключите скрытую версию, запустите в контейнере локальную, либо войдите в машину.

Шесть, четыре ямы, одна больше другой.

Четыре ноты с использованием php2shell-udit

Труба 1: Неизвестный ≠ Чистый

Ведущий, который спрятал номер версии, всегда будет сообщать о Неизвестном. Просто убедитесь, что это только на мэйнфрейме. --localЯ не знаю.

Pocket 2: Release скачать бесплатно

Debian / Ubuntu / RHEL / Alpine регулярно звонит в патчи безопасностиНе прыгайте номер версииЯ не знаю. Результатом является завершенная машина, как она выглядит.

Не паникуйте, пока не увидите красный цвет.

apt changelog php8.4
rpm -q --changelog php-8.4 | head -50

Этот шаг, или неспособность сделать это, будет не чем иным, как эскалацией; это также будет просчетом, который является реальной необходимостью модернизации.

Пит 3: Голова также запрашивается.

Это будет в журнале друг друга, и это будет записано WAF. Сканирование без письменного разрешения по своей природе является несанкционированным обнаружением - закон, такой как CFAA, UK CMA 1990.

Мне нужно разрешение, чтобы очистить активы моей компании.В частности, кросс-секторальные, кросс-суб-компании, облачные учетные записи. Не думайте, что «я просто смотрю на голову ответа» не считается.

Карман 4: местный только проверьте машину.

PHP работает в контейнере, работает в контейнере или использует его на хосте. --remote Порт, который был открыт. Хозяин бежит. --local Если вы не можете найти PHP в контейнере, вы получите НЕЗНАННЫЙ - НЕЗНАННЫЙ действительно не знает, не контейнер безопасен.

Семь, узнай, что есть проблема, тогда что?

Патчи — единственный полный ремонт.Все остальное - кровотечение.

# Debian / Ubuntu
sudo apt update && sudo apt install --only-upgrade php

# RHEL / Fedora
sudo dnf upgrade 'php*'

# Alpine
sudo apk upgrade php83 php84

Обновление: 8.2 ветка до 8.2.358.3. 8.3.36Это 8.4. 8.4.27Это 8.5. 8.5.12Я не знаю. 8.1 и выше, только отчет об уровне источника.

Если вы не можете получить патч, сначала сделайте это, а затем начните все сначала.

; CVE-2026-109619
session.upload_progress.enabled = 0

; CVE-2026-109618
memory_limit = -1

; 仅 PHP 8.5
fatal_error_backtraces = 0
  • session.upload_progress.enabled=0 Для написания на php.ini, инструменте FPM или конфигурации сервера,Он должен быть эффективным до запроса.Я не знаю. Слишком поздно.
  • memory_limit=-1 Мне это нужно. php_admin_value Настройка уровня таких приложений не изменяется, при этом гарантируется отсутствие пула/каталога/приложения для восстановления ограниченного значения.
  • Никогда не используйте RLIMIT AS или RLIMIT DATA- Эти двое сделают Карту неудачной и просто войдут в опасный путь.
  • Изменения должны перезапустить каждого работника:systemctl restart php*-fpm apache2 nginxЯ не знаю.Никакой перезапуск не является изменением.

Ни один из этих четырех не может сделать вас в безопасности, и сами власти вполне ясны. Они имеют только одно значение:Прежде чем починить его, прикройте дверь.

VIII. Полная последовательность

  1. Сначала проверь себя.:--localТри-пять секунд, смотрите версию и конфигурацию.
  2. Удаленная партияЭто большое дело.--remote --file И беги, убегай от Джона.
  3. Обработка классификацийВУЛЬНЕРАБЛЬНОЕ обновление, ПРЕДУПРЕЖДЕНИЕ пополнения, НЕЗНАЯ идентификация -Он не закрыт, это нужно сделать.
  4. Обновление + перезапуск рабочегоПатчи, а затем перезапустить все FPM / Apache / nginx.
  5. Resweep аутентификацияБеги снова, подтверди зеленый. Следите за ошибками в задней части порта и смотрите журнал изменений, если это необходимо.
  6. Садись на водопровод.Откажитесь от кода 2 Прямая поломка конструкции, и в следующий раз никто не вспомнит.

Весь процесс длится десять минут, а реальное время — третий шаг.Проверьте неизвестные линии.Я не знаю. Но это не спасет его, потому что, пропустив его, вы получите красивый, поддельный, зеленый отчет.

Значение сканера не в том, чтобы дать вам зеленый свет, а в том, чтобы заставить вас признать, где вы на самом деле не знаете.

Повторите адрес проекта:Gythub.com/viviopenclaw-code/php2shell-uditЯ не знаю. Прочитайте DISSLAIMER.md, прежде чем он будет написан на китайском языке.

Последнее предложение напоминает мне, что этот инструмент 1.1.0 сегодня, первая публичная версия, единая нулевая вилка, небольшое количество кодов, вы можете прочитать их все. php2shell_audit.pyЯ не знаю.Посмотрите на исходный код.Особенно, если вы хотите прочитать php.ini и список процессов с разрешения администратора.