← Обратно към списъка

php2shell-одитно поле: 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 официален CVS 4.0 бийт 9.2, NVD CVS 3.1 победи 9.89.8 в заглавието е последното, и двете се отнасят до една и съща две към едно вратичка, да не мисля, че е различно.

Ето инструментите:Вивипенклав-код/php2shell-uditАпачи-2.0, днес. Тя прави две неща: проверява какво са инсталирали PHP на тази машина, почиства неоткритата версия на далечната буря.Тя не атакува трафика, не пише дискове, не променя конфигурацията.И това е, което проверих в изходния код, и дистанционното режим наистина изпраща само едно искане на главата за отговор.

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

Два начина да видиш в коя система си.

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

Прозорците отиват право при бившата, без Питон. Хванете страницата за освобождаване 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 под XAMP, WAMP, Laragon, Chocolatey, Scoop, Program Files.
  2. Чети версия: Бягай php -v Take Banner, with 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 е неизвестно, няма пропуск.Този дизайн е много добре признат - няма проблем с намирането на нищо. Две различни неща.

Между другото, има връзка. expose_php Всичките. Това няма нищо общо със самата вратичка, но е директно решение дали дистанционно сканиране може да прочете номера на версията ти.Изключи го. Отпечатъците на нападателя са наполовина слепи.Не знам. Разбира се, не се нарича ремонт, а намаляване на излагането на информация.

III. Параметри

преглед на аргумента php2shell-udit
ПараметриРоляПо подразбиране
--local / --remoteДвама или един, решаваме да проверим машината или целта.Изисква се
--file targets.txtПартида цел, един в един ред, # започнете с коментарНяма
--workers NБрой дългосрочни едновременни курсове10
--json report.jsonИзходът завършен JSON,- Удар до ударНяма
--timeout NЕдинична пауза за искане (сек)8
--insecureПроверка на TLS, само за пръстови отпечатъциЗатваряне

Изходен код: директно към точката на CI карта

Код за напусканеВ смисъл
0Не е намерена засегната версия
2Поне една засегната версия беше намерена.
1Грешка на самия инструмент (напр. JSON не може да пише)

Напусни номер две, това е целта.Означава, че можеш да го сложиш в потока, да го прекараш през строителната фаза, да го удариш и да не чакаш хората да го намерят.

IV. Метене отдалечено: повторете как

# 单个目标
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 Може да се копира директно.

Какво изпрати?

Всяка цел.Изпращане само на една заявка за главатаСамо веднъж сървърът ще отхвърли HAD. И го прочети. Server:Не знам.X-Powered-By: както и Set-CookieМахай се от там. PHP/x.y.zНе знам.

Няма много части, няма голямо тяло, няма ООМ, няма полза от това.Тя умря в бележката на източника като ограничение на дизайна.Не е случайно.

Цената трябва да е ясна:Дистанционният режим не доказва използваемостМоже само да докладва информация, която сървърът доброволно изплюва. Скриване на целта на номера на версията, и резултатът винаги ще бъде UNKNOWN.

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
  • [VULNERBLE] Версията беше прочетена и по-ниска от реставрираната версия.
  • [PASS] Версията е прочетена и е по-голяма или равна на реставрираната версия.
  • [Warning] Временните инструкции за смекчаване на последиците не бяха определени, както беше предложено.
  • [UNKNOWN] Недостатъчно доказателство.Не е безопасно, не е известно.

Това разграничение е мястото, където целият инструмент е най-ценен. Повечето скенери ти дават само червено, жълто и зелено, и после си мислиш, че е по целия екран.Непознатите трябва да се считат за направениИли изключи скритата версия, тичай в контейнера, или влез в машината.

Шест, четири ями, едното повече от другото.

Четири ноти с php2shell-udit

Тръба 1: Непозната

Домакинът, който е скрил номера на версията, винаги ще докладва за неизвестността. Просто се увери, че е само на сървъра. --localНе знам.

Джоб 2: Освобождаването е невярно.

Дебиан / Убунту / РЕЛ / Алпийски редовно се обажда в безопасни лепенки, ноНе прескачайте номера на версиятаНе знам. Резултатът е завършената машина, както изглежда.

Така че не се паникьосвай докато не видиш червеното.

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

Тази стъпка или неуспех би била нищо друго освен ескалация; тя също би била погрешно изчисление, което е реалната нужда от подобрение.

Яма 3: Иска се и глава

Ще бъде в дневника на другия и ще бъде записан от WAF. Претърсването без писмено разрешение по природа е неоторизирано откриване - закон като CFAA, UK CMA 1990.

Трябва ми разрешение да изчистя активите на компанията си.По-специално, междусекторни, междуфирмени, облачни сметки. Не си мисли, "Просто гледам отговорната глава" не се брои.

Джоб 4: местен само проверете машината.

PHP работи в контейнера, работи в контейнера, или го използва върху приемника. --remote Пристанището, което беше картографирано. Домакинът бяга. --local Ако не можете да намерите PHP в контейнера, ще получите UNKNOWN -- UNKNOWN наистина не знае, не контейнера е в безопасност.

Седем, разбери, че има проблем и после какво?

Свързването е единственият пълен ремонт.Останалото кърви.

# 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.368.4. 8.4.278.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 ДАННИ- Тези двамата ще накарат Картата да се провали и просто ще влязат отново в опасната пътека.
  • Промяната трябва да рестартира всеки работник:systemctl restart php*-fpm apache2 nginxНе знам.Няма рестартиране, няма промяна.

Никой от тези четиримата не може да ви направи в безопасност и самите власти са съвсем ясни. Те имат само една стойност:Преди да го закърпиш, покрий вратата.

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

  1. Първо провери себе си.:--localТри или пет секунди, вижте версията и конфигурацията.
  2. Дистанционно почистване на партидитеГоляма работа е.--remote --file И бягай от Джейсън.
  3. Обработка на класификация:VULNERABLE ъпгрейд, попълване на предупрежденията, UNKNOWN идентификация --Не е затворено, трябва да се направи.
  4. Upgrade + Restart Worker: Patches, и след това рестартирайте всички FPM/ Apache/nginx.
  5. Преглед на автентичносттаБягай отново, потвърди зеленото. Гледайте грешката в задния порт и гледайте changelog, ако е необходимо.
  6. Влизай във водолинията.: Изход Код 2 Директен провал на строителството, и следващия път никой няма да си спомня.

Целият процес е 10 минути, а реалното време е третата стъпка.Проверете линиите на UNKNOWN.Не знам. Но това няма да го спаси, защото ако го пропуснеш, получаваш хубав, фалшив, зелен доклад.

Стойността на скенера не ти дава зелена светлина, а те принуждава да признаеш къде всъщност не знаеш.

Повторете адреса на проекта:Gythub.com/viviopenclaw-code/php2shell-uditНе знам. Прочетете DISSLAIMER.md преди да е написано на китайски.

Последното изречение ми напомня, че този инструмент е 1.1.0 днес, първата публична версия, единична вилица нула, малък брой кодове, можете да ги прочетете всички. php2shell_audit.pyНе знам.Виж изходния код., особено ако искате да прочетете php.ini и списъка с процеси с разрешение на администратора.