php2shell-одитно поле: Windows използва exe, Linux, py, 10 минути, за да разбере PHP.
Не става въпрос за завои. Всичко е въпрос на чукане:Зареждане на инструменти, работещи машини, цели почистване, четене заключения, вземане на решение дали да кръпка или неДракон. Десет минути до края.
Първо, 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 на тази машина, почиства неоткритата версия на далечната буря.Тя не атакува трафика, не пише дискове, не променя конфигурацията.И това е, което проверих в изходния код, и дистанционното режим наистина изпраща само едно искане на главата за отговор.
Два начина да видиш в коя система си.
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 Просто го направи.
Какво става?
python3 php2shell_audit.py --local
Ще направи четири неща, едно нещо:
- Намери PHP.:
/usr/bin/php*Не знам./usr/sbin/php-fpm*Не знам./opt/*Не знам./usr/lib/php/*/sapi/*Домашно-брю също се брои. Прозорци, вижте.C:\phpPHP под XAMP, WAMP, Laragon, Chocolatey, Scoop, Program Files. - Чети версия: Бягай
php -vTake Banner, with 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12. - Проверка на настройките: обработка на междинните инструкции за смекчаване на последиците в php.ini.
- Процес на колона: изброете всички произведения, които трябва да бъдат възобновени след пластира.
Прегазих машина без 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. Параметри
| Параметри | Роля | По подразбиране |
|---|---|---|
--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] Недостатъчно доказателство.Не е безопасно, не е известно.
Това разграничение е мястото, където целият инструмент е най-ценен. Повечето скенери ти дават само червено, жълто и зелено, и после си мислиш, че е по целия екран.Непознатите трябва да се считат за направениИли изключи скритата версия, тичай в контейнера, или влез в машината.
Шест, четири ями, едното повече от другото.
Тръба 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. Пълна последователност
- Първо провери себе си.:
--localТри или пет секунди, вижте версията и конфигурацията. - Дистанционно почистване на партидитеГоляма работа е.
--remote --fileИ бягай от Джейсън. - Обработка на класификация:VULNERABLE ъпгрейд, попълване на предупрежденията, UNKNOWN идентификация --Не е затворено, трябва да се направи.
- Upgrade + Restart Worker: Patches, и след това рестартирайте всички FPM/ Apache/nginx.
- Преглед на автентичносттаБягай отново, потвърди зеленото. Гледайте грешката в задния порт и гледайте changelog, ако е необходимо.
- Влизай във водолинията.: Изход Код 2 Директен провал на строителството, и следващия път никой няма да си спомня.
Целият процес е 10 минути, а реалното време е третата стъпка.Проверете линиите на UNKNOWN.Не знам. Но това няма да го спаси, защото ако го пропуснеш, получаваш хубав, фалшив, зелен доклад.
Стойността на скенера не ти дава зелена светлина, а те принуждава да признаеш къде всъщност не знаеш.
Повторете адреса на проекта:Gythub.com/viviopenclaw-code/php2shell-uditНе знам. Прочетете DISSLAIMER.md преди да е написано на китайски.
Последното изречение ми напомня, че този инструмент е 1.1.0 днес, първата публична версия, единична вилица нула, малък брой кодове, можете да ги прочетете всички. php2shell_audit.pyНе знам.Виж изходния код., особено ако искате да прочетете php.ini и списъка с процеси с разрешение на администратора.