Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
php2shell-exposurehunt — Repository per la ricerca di esposizioni PHP2Shell e analisi correlate | Kitploit
Strumenti/GitHubGitHub/deathbydata/php2shell-exposurehunt
Strumenti DifensiviAnalisi delle VulnerabilitàAudit di ConfigurazioneRaccolta InformazioniThreat IntelligenceRisposta agli IncidentiAnalisi dei Log
GitHub

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
deathbydata/php2shell-exposurehunt

php2shell-exposurehunt

Repository per la ricerca di esposizioni PHP2Shell e analisi correlate

Vedi Repository
114h 40m faNon ancora revisionato
Condividi

php2shell-exposurehunt

Ricerca delle esposizioni in Defender XDR per PHP2Shell (CVE-2026-109618 / CVE-2026-109619).

v3.3 · 22 ott 2026

Scopo: individuare i dispositivi onboarded che eseguono attivamente PHP e che potrebbero essere esposti a PHP2Shell.

Ambito: Defender XDR Advanced Hunting · endpoint Windows e Linux onboarded · lookback di 30 giorni per impostazione predefinita · solo PHP attivo. Non coperti: installazioni dormienti e dispositivi non gestiti. Non eseguibile in Sentinel, perché la tabella del software installato (TVM) è interrogabile solo in Defender XDR.

Hunt (eseguire in ordine, per sistema operativo)

HuntWindowsLinuxDomanda
1windows/01-any-php.kqllinux/01-any-php.kqlPHP presente? Sì/no per dispositivo.
2windows/02-evidence-breakout.kqllinux/02-evidence-breakout.kqlEvidenze dettagliate con le versioni.
3windows/03-safety-net.kqllinux/03-safety-net.kqlRete di sicurezza: dispositivi in ascolto sulle porte web, processo in ascolto e stato di PHP.

Cosa viene cercato

Tutti i controlli sugli eventi usano un'unica finestra di lookback, let Lookback = 30d; all'inizio di ogni hunt. Gli indirizzi IP provengono dall'ultimo report per adattatore negli ultimi 7 giorni. Il software installato è lo snapshot TVM corrente. Vengono controllati solo gli endpoint onboarded (OnboardingStatus == "Onboarded", DeviceCategory == "Endpoint").

Blocco di rilevamento PHP (hunt 1, 2 e 3)

Un dispositivo è considerato PHP rilevato se corrisponde anche solo una di queste condizioni.

Come vengono confrontati i nomi:

  • I nomi dei file vengono confrontati tramite espressioni regolari, non elenchi fissi. Ogni regex è case-insensitive e ancorata (^…$), quindi deve corrispondere all'intero nome del file, mai a una sua parte.
  • Viene eseguito prima un filtro economico sul prefisso del nome: startswith "php", più frankenphp su entrambi i sistemi operativi e lsphp su Linux. La regex viene poi eseguita solo su ciò che resta.
  • I nomi nelle tabelle seguenti sono esempi di ciò che ogni pattern individua e di ciò che rifiuta. Altri numeri di versione (ad esempio un futuro php9.dll) corrispondono automaticamente.
  • patterns.test.js esegue ogni regex su questi esempi. Se modifichi una regex, aggiorna gli esempi al suo interno.

Windows

ControlloTabellaCorrispondenzePerché è importante
Esecutabili PHP avviatiDeviceProcessEventsRegex ^(php(-cgi|-win)?|frankenphp)\.exe$, che consente esattamente quattro nomi: php.exe (CLI), php-cgi.exe (worker FastCGI), php-win.exe (CLI, senza console), frankenphp.exe (PHP incorporato in un web server). phpstorm64.exe e altri strumenti php* non corrispondonoDimostra che PHP è stato eseguito. La hunt 2 mostra la versione dalle informazioni di versione del binario (ProcessVersionInfoProductVersion)
DLL del motore PHP caricateDeviceImageLoadEventsRegex ^php\d*(ts|isapi|apache[\w_]*)?\.dll$: php, un eventuale numero di versione, un suffisso opzionale ts / isapi / apache…, poi .dll. Gli esempi sono nella tabella delle DLL qui sotto. Le DLL delle estensioni (php_curl.dll e altre php_*.dll) non corrispondono, perché il carattere di sottolineatura non è consentito subito dopo phpL'unico modo per vedere PHP in esecuzione all'interno di un altro processo, come IIS o Apache, dove non viene avviato alcun php*.exe. La hunt 2 mostra la DLL e il processo che l'ha caricata
Software installatoDeviceTvmSoftwareInventoryNon è una regex: SoftwareName has "php" (php come parola intera nel nome) oppure SoftwareVendor =~ "php" (esatto, case-insensitive)Individua le installazioni registrate. Le installazioni da zip (il metodo abituale su Windows) normalmente non vengono registrate

Esempi di DLL del motore PHP che il pattern Windows individua

DLLCos'èProcesso host tipico (mostrato in hunt 2)
php8.dll, php7.dllEngine, build non thread-safephp-cgi.exe (FastCGI sotto IIS, nginx o Apache mod_fcgid), php.exe
php8ts.dll, php7ts.dll, php5ts.dllEngine, build thread-safehttpd.exe (modulo Apache), php.exe
php8apache2_4.dll, php7apache2_4.dll, php5apache2_2.dllLoader del modulo Apachehttpd.exe
php5isapi.dllModulo ISAPI IIS legacy (PHP 5.2 e precedenti, non supportato)w3wp.exe

La tabella elenca i nomi comuni, non un elenco di autorizzati: qualsiasi nome che corrisponda al pattern viene rilevato. Il nome della DLL indica solo la versione major. La versione esatta proviene da una riga di processo php-cgi.exe o php.exe, oppure dal software installato, sullo stesso dispositivo.

Linux

ControlloTabellaCorrispondenzePerché è importante
Binari PHP avviatiDeviceProcessEventsRegex ^(php[\d.]*|php-(fpm|cgi)[\d.]*|lsphp[\d.]*|frankenphp)$: php, php-fpm, php-cgi o lsphp (LiteSpeed), ciascuno con una versione opzionale composta da cifre e punti, più frankenphp. Esempi: php, php8.3, php83, php-fpm8.3, php-cgi8.2, lsphp83. Strumenti come phpunit, phpize e php-config non corrispondono, perché dopo il nome base possono seguire solo cifre e puntiDimostra che PHP è stato eseguito. Hunt 2 mostra un indizio major.minor, estratto dal nome, dal percorso o dalla riga di comando tramite una seconda regex, php-?(?:fpm|cgi)?/?(\d+\.\d+) (ad esempio php-fpm8.3 o /etc/php/8.3/ restituisce 8.3.x)
Pacchetti installatiDeviceTvmSoftwareInventoryNon è una regex: SoftwareName contains "php" (sottostringa, quindi nomi con versione come php8.3-fpm e libapache2-mod-php8.3 corrispondono) oppure SoftwareVendor =~ "php"L'unico controllo per Apache mod_php e per php-fpm in esecuzione da prima della finestra: su Linux qui non c'è alcun controllo sul caricamento delle librerie, e i worker php-fpm forkati non generano avvii di processo

Controlli di sicurezza di hunt 3

ControlloTabellaCorrispondenzePerché è importante
Servizio web attivoDeviceNetworkEventsInboundConnectionAccepted su un elenco fisso di porte: 80, 443, 8080, 8443. Il loopback è escluso (RemoteIPType != "Loopback"). Mostra sorgenti distinte e pubbliche, più il processo che accetta (via <process>)Dimostra che un dispositivo sta servendo, anche se il suo web server è stato avviato prima della finestra di lookback. ntoskrnl.exe = HTTP.sys (IIS, ADFS, RD Gateway, Windows Admin Center, SSTP)
Web server avviatoDeviceProcessEventsNon è una regex: un elenco fisso di nomi esatti, senza distinzione tra maiuscole e minuscole (in~). Windows: w3wp.exe, httpd.exe, nginx.exe, caddy.exe, lighttpd.exe, frankenphp.exe. Linux: httpd, apache2, nginx, lshttpd, litespeed, openlitespeed, caddy, lighttpd, frankenphpUn web server avviato nella finestra che non ha caricato PHP dà "Not seen" con alta confidenza. Windows mostra anche i nomi degli application pool IIS, estratti dalla riga di comando di w3wp.exe tramite la regex -ap\s+"?([^"\s]+)

Valori della colonna PHP in hunt 3

Scarica lo strumento