php2shell- audit pole: Windows používá exe, Linux, py, 10 minut pro zjištění PHP.
Není to o ohybech. Je to všechno o klepání:Nosné nástroje, běžecké stroje, čistící cíle, závěry čtení, rozhodování o tom, zda opravit či neDrak. Deset minut do konce.
Za prvé, CVE-2026-109618 a CVE-2026-109619 jsou nepovolené RCE pro samotný PHP motor, oficiální obnovená verze je 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12. Dvě sady kalibru...Oficiální PHP CVSS 4.0 beat 9.2, NVD CVSS 3.1 beat 9.89.8 v názvu je druhý, a oba odkazují na stejné dva-to-jedna mezera, ne myslet si, že je to jiné.
Zde jsou nástroje:Vivipenclaw- code / php2shell- uditApache - 2.0, právě dnes. To dělá dvě věci: zkontrolovat, jaké PHP jsou instalovány na tomto stroji, zamést neobjevenou verzi far- off bouře.Neútočí na provoz, nezapisuje disky, nemění žádnou konfiguraci.A to je to, co jsem ověřil ve zdrojovém kódu, a vzdálený režim ve skutečnosti posílá pouze jednu žádost HEAD o response head.
Dva způsoby, jak zjistit, v jakém jste systému.
Linux / Macos go Python, nulová závislost, standardní knihovna je dost, žádný pip načíst cokoliv:
git clone https://github.com/viviopenclaw-code/php2shell-audit.git
cd php2shell-audit
chmod +x php2shell_audit.py
python3 php2shell_audit.py --local
Okna jdou přímo na exe, bez Pythonu. Chytit na úvodní stránce php2shell-audit.exe:
certutil -hashfile php2shell-audit.exe SHA256
php2shell-audit.exe --local
Exe je jeden program konzole souborů, který je k dispozici Win10 / 11 x64,Žádný kód.Takže první běh pro SmartScreen by přestal. Pojďme první. SHA256SUMS.txt Ještě jednou - tento krok je ten, ve kterém se nikdo nedotkne "zelené" verze, která je distribuována online.
Dvě verze stejných parametrů. Pouze jedna sada v zadní části tutoriálu, Windows. python3 php2shell_audit.py Nahradit php2shell-audit.exe Prostě to udělej.
Co se děje?
python3 php2shell_audit.py --local
Udělá čtyři věci, jedna věc:
- Najít PHP.:
/usr/bin/php*Nevím./usr/sbin/php-fpm*Nevím./opt/*Nevím./usr/lib/php/*/sapi/*Počítá se i domácí pivo. Okna, podívejte se na to.C:\phpPHP pod XAMPP, WAMP, Laragon, Chocolatey, Scoop, Programové soubory. - Verze pro čteníSpustit
php -vVezměte Banner, s 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12. - Kontrola konfiguraceProzatímní pokyny ke zmírnění rizika v php.ini.
- Sloupcový proces: vyjmenujte všechny práce, které je třeba po náplast znovu spustit.
Přejel jsem stroj bez PHP. Tady je výstup:
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.
Sledujte poslední řádek:Žádný PHP, to je Neznámý, žádný PASS.Tento design je velmi dobře uznávaný -- není problém nic najít. Jsou to dvě různé věci.
Mimochodem, je to propojené. expose_php Všechny. Tohle nemá nic společného se skulinou, ale je to přímé rozhodnutí, zda dálkový sken dokáže přečíst číslo vaší verze.Vypni to. Otisky útočníka jsou napůl slepé.Nevím. Samozřejmě se tomu neříká oprava, ale snížení expozice informacím.
III. Parametry
| Parametry | Úloha | Výchozí |
|---|---|---|
--local / --remote | Dva nebo jeden, rozhodneme se zkontrolovat stroj nebo cíl. | Požadováno |
--file targets.txt | Šarže cíl, jeden v jedné řadě, # začít s komentářem | Žádné |
--workers N | Počet dlouhodobých souběžných kurzů | 10 |
--json report.json | Výstup kompletní JSON,- Hit to stdout | Žádné |
--timeout N | Jednolůžkový timeout (sec) | 8 |
--insecure | Přeskočit ověření TLS, pouze pro otisky prstů | Zavřít |
Výstupní kód: přímo na kartový bod CI
| Kód výstupu | Význam |
|---|---|
0 | Nebyla nalezena žádná postižená verze |
2 | Byla nalezena alespoň jedna postižená verze. |
1 | Chyba na samotném nástroji (např. JSON nemůže psát) |
Konec číslo dvě, o to jde.To znamená, že ho můžete dát do potrubí, pročesat ho stavební fází, zasáhnout ho a nečekejte, až ho lidé najdou.
iv. Zametací ovladač: -vzdálený jak
# 单个目标
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
Co? Zapsat
# production fleet
example.com
https://shop.example.net
10.0.0.5:8080
# Start with a note, one line, one in the store targets.example.txt Dá se kopírovat přímo.
Co to poslalo?
Každý gól.Odeslat pouze jednu žádost HEAD, pouze jednou server odmítne HeAD. A přečti si to. Server:Nevím.X-Powered-By: a Set-CookieVypadni odtamtud. PHP/x.y.zNevím.
Žádné mnohočlenné, žádné velké tělo, žádné OOM, žádné použití-po-zdarma.Zemřel ve zdrojové poznámce jako konstrukční omezení.Není to náhodné.
Cena musí být jasná:Vzdálený režim neprokazuje použitelnostMůže pouze hlásit informace, které server dobrovolně vyplivne. Skrýt cíl čísla verze a výsledek bude vždy neznámý.
V. Jak si přečíst závěry
[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
- [VULNERABIL] Verze byla přečtena a nižší než obnovená verze.
- [PASS] Verze byla přečtena a je větší nebo rovna obnovené verzi.
- [UPOZORNĚNÍ] Předběžné pokyny ke zmírnění rizika nebyly stanoveny, jak bylo navrženo.
- [Neznámý] Nedostatečné důkazy.Není to bezpečné, není to známo.
Toto rozlišení je místo, kde je celý nástroj nejcennější. Většina skenerů vám dá jen červenou, žlutou a zelenou a pak si myslíte, že je to všude na obrazovce.Neznámý musí být považován za-doBuď vypněte skrytou verzi, spusťte kontejner -- místní, nebo se přihlaste ke stroji.
Šest, čtyři jámy, jeden víc než druhý.
Trubka 1: NEZNÁMÉ Přepínám.
Hostitel, který ukryl číslo verze, bude vždy hlásit Neznámý. Jen se ujisti, že je to jen na hlavním počítači. --localNevím.
Kapsa 2: Uvolnění je špatně hlášeno.
Debian / Ubuntu / RHEL / Alpine pravidelně volá v bezpečnostních náplastech, aleNeskákejte číslo verzeNevím. Výsledkem je dokončený stroj, jak se zdá.
Takže nepanikařte, dokud neuvidíte červenou.
apt changelog php8.4
rpm -q --changelog php-8.4 | head -50
Tento krok nebo jeho neúspěch by nebyl ničím jiným než eskalací; byl by to také chybný výpočet, který je skutečnou potřebou modernizace.
Pit 3: Požaduje se také HEAD
Bude to v deníku toho druhého a bude to napsané WAF. Zametání bez písemného povolení je od přírody neoprávněnou detekcí - zákonem, jako je CFAA, UK CMA1990.
Budu potřebovat povolení k vyčištění majetku mé společnosti.Zejména meziodvětvové, mezipodnikové účty založené na mracích. Nemysli si, že "jen se dívám na reakční hlavu" se nepočítá.
Kapsa 4: -místní pouze zkontrolovat stroj.
PHP běží v kontejneru, běží v kontejneru, nebo jej používá na hostiteli. --remote Port, který byl zmapován. Hostitel běží. --local Pokud nemůžete najít PHP v kontejneru, dostanete Neznámý - Neznámý opravdu neví, není kontejner bezpečný.
Sedmá, zjisti, že je tu problém, a pak co?
Záplata je jediná kompletní oprava.Zbytek krvácí.
# Debian / Ubuntu
sudo apt update && sudo apt install --only-upgrade php
# RHEL / Fedora
sudo dnf upgrade 'php*'
# Alpine
sudo apk upgrade php83 php84
Upgrade: 8.2 větve na 8.2.358, 3 až 8.3.36Je 8.4. 8.4.27Je 8.5. 8.5.12Nevím. 8.1 a dále, pouze zpráva o zdrojové úrovni.
Když nemůžete dostat náplast, udělejte nejdřív tohle, pak začněte znovu.
; 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=0Zapsáno v konfiguraci php.ini, FPM nebo serveru,Musí to být účinné před žádostí.Nevím. Je příliš pozdě.memory_limit=-1Potřebuju to.php_admin_valueNastavení úrovně těchto aplikací se nemění a zároveň zajišťuje, že pro obnovení omezené hodnoty neexistuje žádný soubor / adresář / aplikace.- Nikdy nepoužívejte RLIMIT AS nebo RLIMIT ÚDAJE- Ti dva udělají Mapu neúspěšnou a prostě se vrátí do té nebezpečné dlouhé cesty.
- Změna musí restartovat každý pracovník:
systemctl restart php*-fpm apache2 nginxNevím.Žádný restart není změna.
Nikdo z těchto čtyř vás neučiní bezpečnými a samotní úřady jsou zcela jasné. Mají jen jednu hodnotu:Než to opravíš, zakryj dveře.
VIII. Kompletní posloupnost
- Nejdřív se podívej sám.:
--localTři nebo pět sekund, viz verze a konfigurace. - Vzdálený dávkový průzkumJe to velká věc.
--remote --fileA utíkej, pryč z JSON. - Zpracování klasifikace: VULNERABIL upgrade, POZOR doplnění, Neznámá identifikace --Není zavřeno, je třeba to udělat.
- Upgrade + Restart Worker: Záplaty, a pak restartovat všechny FPM / Apache / nginx.
- Opětovné ověřeníUteč znovu, potvrď zelenou. Sledujte chybu backportu a v případě potřeby sledujte měnič.
- Vlez do vody.: Ukončit kód 2 Přímé selhání konstrukce, a příště si nikdo nebude pamatovat.
Celý proces je deset minut a skutečný čas je třetí krok.Zkontroluj linky Neznámých.Nevím. Ale to to nezachrání, protože když to přeskočíš, dostaneš pěknou, falešnou, zelenou zprávu.
Hodnota skeneru ti nedává zelená světla, nutí tě to přiznat, kde ve skutečnosti nevíš.
Přehrát adresu projektu:Gythub.com / viviopenclaw- code / php2shell- uditNevím. Čtěte DISSLAIMER.MD předtím, než je napsán v čínštině.
Poslední věta mi připomíná, že tento nástroj je 1.1.0 dnes, první veřejná verze, jedna nula vidlička, malý počet kódů, můžete si je přečíst všechny. php2shell_audit.pyNevím.Podívej se na zdrojový kód., zvláště pokud si chcete přečíst php.ini a seznam procesů s povolením administrátora.