php2shell- audit field: Windows wykorzystuje exe, Linux, py, 10 minut, aby dowiedzieć się PHP.
Tu nie chodzi o zakręty. Tu chodzi o pukanie:Ładowanie narzędzi, obsługa maszyn, czyszczenie celów, czytanie wniosków, decyzja, czy patch lub nieSmok. Dziesięć minut do końca.
Po pierwsze, CVE- 2026- 109618 i CVE- 2026- 109619 są nieautoryzowane RCE dla samego silnika PHP, oficjalna wersja przywrócona jest 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12. Dwa zestawy kalibru...PHP oficjalny CVSS 4.0 beat 9.2, NVD CVSS 3.1 beat 9.89.8 w tytule jest ten ostatni, i oba odnoszą się do tej samej luki dwa do jednego, nie myśleć, że jest inny.
Oto narzędzia:Vivipenclaw- code / php2shell- uditApache- 2.0, tylko dzisiaj. Robi dwie rzeczy: sprawdza co PHP są zainstalowane na tej maszynie, przeczesać nieodkrytą wersję odległej burzy.Nie atakuje ruchu, nie pisze dysków, nie zmienia konfiguracji.To właśnie sprawdzałem w kodzie źródłowym, a tryb zdalny wysyła tylko jedną prośbę o głowicę.
Dwa sposoby, by zobaczyć, w którym systemie jesteś.
Linux / MacOS go Python, zero zależności, standardowa biblioteka wystarczy, nie ma pip, aby załadować cokolwiek:
git clone https://github.com/viviopenclaw-code/php2shell-audit.git
cd php2shell-audit
chmod +x php2shell_audit.py
python3 php2shell_audit.py --local
Okna idą prosto do exe, bez Pythona. Grab na stronie wydania php2shell-audit.exe:
certutil -hashfile php2shell-audit.exe SHA256
php2shell-audit.exe --local
Exe jest pojedynczym programem konsoli plików, który jest dostępny w Win10 / 11 x64,Brak kodu.Więc pierwszy bieg do SmartScreen by się zatrzymał. Najpierw biegamy. SHA256SUMS.txt Po raz kolejny - jest to krok, w którym nikt nie dotyka "zielonej" wersji, która jest obiecana online.
Dwie wersje tych samych parametrów. Tylko jeden zestaw z tyłu tutorial, Windows. python3 php2shell_audit.py Zastąp php2shell-audit.exe Po prostu to zrób.
Co się dzieje?
python3 php2shell_audit.py --local
Zrobi cztery rzeczy, jedno:
- Znajdź PHP.:
/usr/bin/php*Nie wiem./usr/sbin/php-fpm*Nie wiem./opt/*Nie wiem./usr/lib/php/*/sapi/*Liczy się też Homebrew. Windows, sprawdź to.C:\phpPHP pod XAMPP, WAMP, Laragon, Chocolatey, Scoop, Pliki programu. - Przeczytaj wersję: Run
php -vWeź Banner, z 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12. - Zaznacz konfigurację: parsing the interim compatible instructions in php.ini.
- Proces kolumn: wykaz wszystkich prac, które muszą być wznowione po plastrze.
Przejechałem maszynę bez PHP. Oto wyjście:
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.
Obejrzyj ostatnią linijkę:Nie ma PHP, jest nieznany, nie ma PASS.Ten projekt jest bardzo dobrze rozpoznany - nie ma problemu ze znalezieniem czegokolwiek. To dwie różne rzeczy.
Przy okazji, to jest połączone. expose_php Wszystkie. Ta nie ma nic wspólnego z samą luką, ale to bezpośrednia decyzja, czy zdalny skan może odczytać numer wersji.Wyłącz to. Odciski palców napastnika są na wpół niewidome.Nie wiem. Oczywiście, to się nie nazywa naprawa, to się nazywa zmniejszanie ekspozycji na informacje.
III. Parametry
| Parametry | Rola | Domyślne |
|---|---|---|
--local / --remote | Dwa lub jeden, decydujemy się sprawdzić maszynę lub cel. | Wymagane |
--file targets.txt | Cel partii, jeden w rzędzie, # zacznij od komentarza | Brak |
--workers N | Liczba długoterminowych kursów równoległych | 10 |
--json report.json | JSON,- Hit to stdout | Brak |
--timeout N | Czas jednego żądania (sec) | 8 |
--insecure | Pomiń weryfikację TLS, tylko dla odcisków palców | Zamknij |
Kod wyjścia: bezpośrednio do punktu karty CI
| Kod wyjścia | Znaczenie |
|---|---|
0 | Nie znaleziono zmienionej wersji |
2 | Znaleziono przynajmniej jedną wersję. |
1 | Błąd samego narzędzia (np. JSON nie może pisać) |
Koniec numer dwa, o to chodzi.To znaczy, że można umieścić go w linii przepływu, przeczesać go przez fazę budowy, uderzyć go, i nie czekać, aż ludzie go znajdą.
iv. Zdalne zamiatanie: -zdalne 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? Napisz
# production fleet
example.com
https://shop.example.net
10.0.0.5:8080
# Start with a note, one line, one in the warehouse targets.example.txt Może być kopiowany bezpośrednio.
Co to wysłało?
Każdy cel.Wyślij tylko jeden wniosek GŁÓWNY, tylko raz serwer odrzuci HeAD. I przeczytaj. Server:Nie wiem.X-Powered-By: oraz Set-CookieWynoś się stamtąd. PHP/x.y.zNie wiem.
Nie ma wielu części, nie ma dużego ciała, nie ma OOM, nie ma użytku - po - wolne.Zmarł w notatce źródłowej jako ograniczenie projektu.To nie przypadek.
Cena musi być jasna:Tryb zdalny nie dowodzi użytecznościMoże jedynie zgłaszać informacje, które serwer dobrowolnie wypluwa. Ukryj cel numeru wersji, a wynik będzie zawsze nieznany.
V. Jak przeczytać wnioski
[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
- [VULNERABLE] Wersja została odczytana i niższa od wersji odrestaurowanej.
- [PASS] Wersja została przeczytana i jest większa lub równa wersji przywróconej.
- [OSTRZEŻENIE] Tymczasowe instrukcje dotyczące łagodzenia skutków nie zostały ustalone zgodnie z zaleceniami.
- [NIEZNANY] Niewystarczające dowody.Niebezpieczna, nieznana.
To rozróżnienie jest miejscem, gdzie całe narzędzie jest najcenniejsze. Większość skanerów daje tylko czerwony, żółty i zielony, a potem myślisz, że jest na ekranie.NIEZNANY należy rozważyćAlbo wyłączyć ukrytą wersję, uruchomić w kontenerze, albo zalogować się do maszyny.
Sześć, cztery doły, jeden więcej niż drugi.
Rura 1: NIEZNANY
Host, który ukrył numer wersji będzie zawsze raportować unknown. Upewnij się, że jest tylko na komputerze. --localNie wiem.
Kieszeń 2: Zwolnienie jest błędnie zgłoszone.
Debian / Ubuntu / RHEL / Alpine regularnie wydzwania do systemów bezpieczeństwa, aleNie skacz numer wersjiNie wiem. Rezultatem jest ukończona maszyna, jak się wydaje.
Więc nie panikuj, dopóki nie zobaczysz czerwonego.
apt changelog php8.4
rpm -q --changelog php-8.4 | head -50
Ten krok, lub jego brak, byłby niczym innym jak eskalacją; byłby to również błąd w obliczeniach, co jest rzeczywistą potrzebą modernizacji.
Pit 3: Prośba jest również HEAD
Będzie to w dzienniku i będzie zapisane przez WAF. Zamiatanie bez pisemnego upoważnienia jest z natury nieautoryzowanym wykryciem - takim prawem jak CFAA, UK CMA 1990.
Potrzebuję pozwolenia na sprzątanie majątku mojej firmy.W szczególności rachunki międzysektorowe, międzysektorowe, rachunki oparte na chmurach. Nie myśl, że "tylko patrzę na głowę na odpowiedź" się nie liczy.
Kieszeń 4: -lokalne tylko sprawdzić maszynę.
PHP działa w kontenerze, działa w kontenerze lub używa go na komputerze. --remote Port, który został odwzorowany. Gospodarz ucieka. --local Jeśli nie możesz znaleźć PHP w kontenerze, dostaniesz nieznany -- Nieznany naprawdę nie wie, nie kontener jest bezpieczny.
Siedem, dowiedz się, że jest problem, a potem co?
Łatanie jest jedyną kompletną naprawą.Reszta krwawi.
# Debian / Ubuntu
sudo apt update && sudo apt install --only-upgrade php
# RHEL / Fedora
sudo dnf upgrade 'php*'
# Alpine
sudo apk upgrade php83 php84
Aktualizacja: 8.2 oddział do 8.2.358,3 do 8.3.368.4. 8.4.278.5. 8.5.12Nie wiem. 8.1 I dalej, tylko raport o poziomie źródła.
Jeśli nie masz plastra, zrób to najpierw, a potem zacznij od nowa.
; 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=0Do zapisu w php.ini, narzędziu FPM lub konfiguracji serwera,Musi być skuteczne przed złożeniem wniosku.Nie wiem. Już za późno.memory_limit=-1Potrzebuję tego.php_admin_valueUstawienie poziomu takich aplikacji nie zmienia się, przy jednoczesnym zapewnieniu braku puli / katalogu / aplikacji do przywrócenia ograniczonej wartości.- Nigdy nie stosuj RLIMIT AS ani danych RLIMIT- Ta dwójka sprawi, że Mapa zawiedzie i po prostu wejdzie w tę niebezpieczną ścieżkę.
- Zmiana musi ponownie rozpocząć każdego pracownika:
systemctl restart php*-fpm apache2 nginxNie wiem.Nie ma ponownego startu.
Żadna z tych czterech nie sprawi, że będziesz bezpieczna, a władze same są jasne. Mają tylko jedną wartość:Zanim to naprawisz, zakryj drzwi.
VIII. Pełna sekwencja
- Najpierw sprawdź siebie.:
--localTrzy lub pięć sekund, zobacz wersję i konfigurację. - Zdalne przeszukiwanie partiiTo poważna sprawa.
--remote --fileI uciekaj z JSON. - Przetwarzanie klasyfikacji: VULNERAble upgrade, alergenishment, unknown identification --Nie jest zamknięta, do zrobienia.
- Upgrade + Restart Worker: Łaty, a następnie ponownie uruchomić wszystkie FPM / Apache / nginx.
- Resweep Authentication: Uruchom ponownie, potwierdzić zielony. Obejrzyj błąd backport i oglądaj changelog w razie potrzeby.
- Do wody.: Zakończ kod 2 Bezpośrednia awaria konstrukcji, a następnym razem nikt nie będzie pamiętał.
Cały proces trwa 10 minut, a czas rzeczywisty to trzeci krok.Sprawdź nieznaną linię.Nie wiem. Ale to go nie uratuje, bo pomijając to, dostajesz ładny, fałszywy, zielony raport.
Wartość skanera nie daje ci zielonego światła, zmusza cię do przyznania się tam, gdzie naprawdę nie wiesz.
Odtworzyć adres projektu:Gythub.com / viviopenclaw- code / php2shell- uditNie wiem. Przeczytaj DISSLAIMER.md przed napisem po chińsku.
Ostatnie zdanie przypomina mi, że to narzędzie to dziś 1.1.0, pierwsza publiczna wersja, pojedynczy zero widelec, mała liczba kodów, można przeczytać je wszystkie. php2shell_audit.pyNie wiem.Spójrz na kod źródłowy., zwłaszcza jeśli chcesz przeczytać php.ini i listę procesów za zgodą administratora.