← Tilbake til listen

php2shell-audit felt: Windows bruker exe, Linux, py, 10 minutter til å finne ut PHP.

itadol5j

Det handler ikke om bøyer. Det handler om knocks:Lasteverktøy, kjøremaskiner, rengjøringsmål, lesekonklusjoner, avgjøre om man skal lappe eller ikke.En drage. 10 minutter til slutt.

Først CVE-2026-109618 og CVE-2026-109619 er uautorisert RCE for selve PHP-motoren, den offisielle restaurerte versjonen er 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12. To sett kaliber...PHP offisielt CVSS 4.0 slå 9.2, NVD CVSS 3.1 slå 9,89,8 i tittelen er det sistnevnte, og begge refererer til det samme to til ett loophull, for ikke å tro det er annerledes.

Her er verktøyene:Vivipenclaw-kode/php2shell-uditApache-2.0, akkurat i dag. Det gjør to ting: sjekk hva PHPs er installert på denne maskinen, feie den uoppdagede versjonen av fjernstormen.Det angriper ikke trafikk, skriver ikke plater, endrer ikke noen konfigurasjon.Og det er det jeg har sjekket i kildekoden, og fjernmodusen sender virkelig bare én HEAD-forespørsel om et responshode.

php2shell-udit-terminalens driftseffekter

2 måter å se hvilket system du er i.

Linux / MacOS go Python, null avhengighet, standard bibliotek er nok, ingen pip å laste noe:

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

Windows går rett til exe, uten Python. Grap på utgivelsessiden php2shell-audit.exe:)

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

Exe er et enkelt filkonsollprogram som Win10/11 x64 er tilgjengelig,Ingen kodesignatur.Så den første kjøringen til SmartScreen vil stoppe. La oss løpe først. SHA256SUMS.txt Igjen - dette trinnet er en der ingen berører den \"grønne\" versjonen som sirkuleres på nettet.

To versjoner av de samme parametrene. Bare én satt på baksiden av opplæringen, Windows. python3 php2shell_audit.py Bytt ut php2shell-audit.exe Bare gjør det.

Linux og Windows installasjonsmetoder

Hva skjer?

python3 php2shell_audit.py --local

Det vil gjøre fire ting, en ting:

  1. Finn PHP.:)/usr/bin/php*Jeg vet ikke./usr/sbin/php-fpm*Jeg vet ikke./opt/*Jeg vet ikke./usr/lib/php/*/sapi/*Homebrew teller også. Windows, sjekk det ut. C:\phpPHP under XAMPP, WAMP, Laragon, Sjokolade, Scoop, Programfiler.
  2. Les versjon: Kjør php -v Tage Banner, med 8,2.35 / 8.3.36 / 8.4.27 / 8.5.12.
  3. Sjekk oppsettFortolkning av interim reduksjon instruksjoner i php.ini.
  4. Kolonneprosess: liste alle verkene som må omstartes etter lappen.

Jeg kjørte over en maskin uten PHP. Her er utgangen:

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.

Se den siste linjen:Ingen PHP det er UNKNOWN, ingen pass.Dette designet er veldig godt anerkjent - det er ikke noe problem med å finne noe. Det er to forskjellige ting.

Forresten, den er koblet til. expose_php Alle sammen. Denne har ingenting å gjøre med selve sløyfehullet, men det er en direkte avgjørelse om om en fjernskanning kan lese versjonsnummeret ditt.Slå den av. Assailantens fingeravtrykk er halvblinde.Jeg vet ikke. Selvfølgelig kalles det ikke reparasjon, det kalles å redusere informasjonseksponering.

III. Parametre

php2shell-udit argumentoversikt
ParametreRolleStandard
--local / --remoteTo eller én, bestemmer vi oss for å sjekke maskinen eller målet.Nødvendig
--file targets.txtBatch mål, en på én rad, # start med kommentarIngen
--workers NAntall langsiktige samtidige kurs10
--json report.jsonUtgang komplett JSON,- Slå til STYRKIngen
--timeout NEngangsfrist (sek)8
--insecureHopp over TLS- verifisering, bare for fingeravtrykkLukk

Avslutt kode: direkte til CI-kortpunkt

Avslutt kodeBetydning
0Ingen påvirket versjon funnet
2Det ble funnet minst én berørt versjon.
1Feil på selve verktøyet (f.eks. JSON kan ikke skrive)

Avslutt nummer to, det er poenget.Det betyr at du kan sette det i strømningslinjen, feie det gjennom byggefasen, treffe det, og ikke vente på at mennesker skal finne det.

iv. Sweeping fjernkontrollen: – remote hvordan

# 单个目标
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

Hva? Skriv

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

# Start med en note, en linje, en i lageret targets.example.txt Den kan kopieres direkte.

Hva sendte den?

Alle mål.Send kun én HEAD-forespørselKun én gang vil serveren avvise HeAD. Les den. Server:Jeg vet ikke.X-Powered-By: og Set-CookieKom deg ut. PHP/x.y.zJeg vet ikke.

Ingen multipart, ingen stor kropp, ingen OOM, ingen bruk-etter-fri.Den døde i kildenotatet som designbegrensning.Det er ikke tilfeldig.

Prisen må være klar:Fjernmodus viser ikke brukbarhetDet kan bare rapportere informasjon om at serveren frivillig spytter ut. Skjul versjonsnummerets mål, og resultatet vil alltid være UNKNOWN.

Hvordan lese konklusjonene

Betydningen av de tre konklusjonene
[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
  • [Vulnerbar] Versjonen ble lest og lavere enn den restaurerte versjonen.
  • [PASS] Versjonen ble lest og er større enn eller lik den gjenopprettede versjonen.
  • [Varning] De midlertidige reduksjonsinstruksjonene ble ikke fastsatt som foreslått.
  • [UNKNOW] Utilstrekkelig bevis.Ikke trygt, ikke kjent.

Denne forskjellen er der hele verktøyet er mest verdifullt. De fleste skannere gir deg bare rød, gul og grønn, og så tror du det er på skjermen.UNKNOWN må vurderes å gjøreEnten slå av den skjulte versjonen, kjør i beholderen -- lokalt eller logg på maskinen.

Seks, fire groper, en til enn den andre.

Fire notater ved hjelp av php2shell-udit

Rør 1: UNKNOWN ≠ Klar

Verten som skjuler versjonsnummeret vil alltid rapportere UNKNOWN. Bare sørg for at det er på hovedrammen. --localJeg vet ikke.

Pocket 2: Utgivelsen er feilrapportert.

Debian / Ubuntu / RHEL / Alpine regelmessig samtaler i sikkerhetspatcher, menIkke hopp versjonsnummerJeg vet ikke. Resultatet er den ferdige maskinen, som det vises.

Ikke panikk før du ser det røde.

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

Dette trinnet, eller å ikke gjøre det, ville ikke være noe annet enn en eskalering; det ville også være en feilberegning, som er det virkelige behovet for en oppgradering.

Pit 3: En HEAD er også bedt om

Det vil være i hverandres logg, og det vil bli skrevet ned av WAF. Å sveve uten skriftlig autorisasjon er av natur en uautorisert deteksjon - en lov som CFAA, UK CMA 1990.

Jeg trenger autorisasjon til å rydde opp selskapets eiendeler.Spesielt tverrfaglige, tverrfaglige, skybaserte kontoer. Ikke tenk, - jeg ser bare på et responshode - teller ikke.

Pocket 4: lokal sjekk bare maskinen.

PHP kjører i beholderen, kjører i beholderen, eller bruker den på verten. --remote Porten som ble kartlagt. Verten kjører. --local Hvis du ikke finner PHP i beholderen, får du en UNKNOWN - UNKNOWN virkelig ikke vet, ikke beholderen er trygg.

Finn ut at det er et problem.

Patching er den eneste komplette reparasjonen.Resten av dem blør.

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

# RHEL / Fedora
sudo dnf upgrade 'php*'

# Alpine
sudo apk upgrade php83 php84

Oppgradering: 8.2 gren til 8.2.358.3 til 8.3.36Det er 8,4. 8.4.27Det er 8,5. 8.5.12Jeg vet ikke. 8.1 og videre, bare kildenivårapport.

Hvis du ikke kan få en patch, gjør disse først, så start på nytt.

; 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 For å bli skrevet i php.ini, FPM verktøy eller serverkonfigurasjon,Det må være effektivt før anmodningen.Jeg vet ikke. Det er for sent.
  • memory_limit=-1 Jeg trenger det. php_admin_value Nivåinnstillingen til slike programmer er uendret, samtidig som det ikke finnes noe basseng/katalog/program for å gjenopprette den begrensede verdien.
  • Bruk aldri RLIMIT AS eller RLIMIT DATA- De to vil gjøre Kart mislykkes og bare komme inn på den farlige longjmp-veien igjen.
  • Endringen må omstarte hver arbeidstaker:systemctl restart php*-fpm apache2 nginxJeg vet ikke.Ingen omstart er ingen endring.

Ingen av disse fire kan gjøre deg trygg, og myndighetene selv er helt klart. De har bare én verdi:Før du legger den, dekke døren.

VIII. En komplett sekvens

  1. Sjekk deg selv først.:)--localTre eller fem sekunder, se versjon og konfigurasjon.
  2. Fjernt batch feieDet er en stor sak.--remote --file Og løp ut av JSON.
  3. Klassifiseringsbehandling: VULNERbar oppgradering, varsling påfylling, UNKNOWN identifikasjon --Det er ikke lukket, det skal gjøres.
  4. Oppgrader + Start arbeideren på nytt: Patcher, og deretter starte alle FPM / Apache / nginx.
  5. Resweep-autentiseringKjør igjen, bekreft grønn. Se backport feil og se endringslogg om nødvendig.
  6. Sett deg i vannlinjen.Avslutt Code 2 Direkte feil konstruksjon, og neste gang ingen vil huske.

Hele prosessen er ti minutter, og sanntid er det tredje steget.Sjekk de usedvanlige linjene.Jeg vet ikke. Men det vil ikke spare det, fordi å hoppe over det, får du en pen, falsk, grønn rapport.

Værdien av skanneren gir deg ikke grønne lys, det tvinger deg til å innrømme hvor du egentlig ikke vet.

Last opp prosjektadressen på nytt:Gythub.com/viviopenclaw-kode/php2shell-uditJeg vet ikke. Les DISSLAIMER.md før det er skrevet på kinesisk.

Siste setning minner meg om at dette verktøyet er 1.1.0 i dag, den første offentlige versjonen, en enkelt null gaffel, et lite antall koder, kan du lese dem alle. php2shell_audit.pyJeg vet ikke.Se på kildekoden., spesielt hvis du vil lese php.ini og prosesslisten med administratortillatelse.