Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Nota importante:

dl è una funzione PHP che può essere utilizzata per caricare estensioni PHP. Se la funzione non è disabilitata, potrebbe essere abusata per bypassare disable_functions ed eseguire comandi arbitrari.
Tuttavia, ha alcune limitazioni rigorose:
- La funzione
dldeve essere presente nellâambiente e non disabilitata - Lâestensione PHP deve essere compilata con la stessa versione principale (versione API PHP) che il server sta utilizzando (puoi vedere queste informazioni nellâoutput di phpinfo)
- Lâestensione PHP deve essere situata nella directory che è definita dalla direttiva
extension_dir(puoi vederla nellâoutput di phpinfo). Ă molto improbabile che un attaccante che cerca di abusare del server abbia accesso in scrittura su questa directory, quindi questo requisito probabilmente ti impedirĂ di abusare di questa tecnica).
Se soddisfi questi requisiti, continua a leggere il post https://antichat.com/threads/70763/ per imparare come bypassare disable_functions. Ecco un riepilogo:
La funzione dl viene utilizzata per caricare dinamicamente le estensioni PHP durante lâesecuzione dello script. Le estensioni PHP, tipicamente scritte in C/C++, migliorano la funzionalitĂ di PHP. Lâattaccante, notando che la funzione dl non è disabilitata, decide di creare unâestensione PHP personalizzata per eseguire comandi di sistema.
Passi seguiti dallâattaccante:
- Identificazione della versione PHP:
- Lâattaccante determina la versione PHP utilizzando uno script (
<?php echo 'PHP Version is '.PHP_VERSION; ?>).
- Acquisizione del sorgente PHP:
- Scarica il sorgente PHP dal sito ufficiale PHP o dallâarchivio se la versione è piĂš vecchia.
- Impostazione locale di PHP:
- Estrae e installa la specifica versione PHP sul proprio sistema.
- Creazione dellâestensione:
- Studia come creare estensioni PHP e ispeziona il codice sorgente PHP.
- Si concentra sulla duplicazione della funzionalitĂ della funzione exec situata in
ext/standard/exec.c.
Note per la compilazione dellâestensione personalizzata:
- ZEND_MODULE_API_NO:
- Il
ZEND_MODULE_API_NOinbypass.cdeve corrispondere allâattuale Build dellâestensione Zend, recuperabile con:
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
- Modifica di PHP_FUNCTION:
- Per le versioni PHP recenti (5, 7, 8),
PHP_FUNCTION(bypass_exec)potrebbe necessitare di aggiustamenti. Il frammento di codice fornito dettaglia questa modifica.
File dellâestensione personalizzata:
- bypass.c:
- Implementa la funzionalitĂ principale dellâestensione personalizzata.
- php_bypass.h:
- File di intestazione, definendo le proprietĂ dellâestensione.
- config.m4:
- Utilizzato da
phpizeper configurare lâambiente di build per lâestensione personalizzata.
Compilazione dellâestensione:
- Comandi di compilazione:
- Utilizza
phpize,./configureemakeper compilare lâestensione. - Il risultato
bypass.sosi trova quindi nella sottodirectory dei moduli.
- Pulizia:
- Esegue
make cleanephpize --cleandopo la compilazione.
Caricamento ed esecuzione sullâhost vittima:
- CompatibilitĂ della versione:
- Assicura che le versioni API PHP corrispondano tra i sistemi dellâattaccante e della vittima.
- Caricamento dellâestensione:
- Utilizza la funzione
dl, eludendo le restrizioni utilizzando percorsi relativi o uno script per automatizzare il processo.
- Esecuzione dello script:
- Lâattaccante carica
bypass.soe uno script PHP sul server della vittima. - Lo script utilizza la funzione
dl_localper caricare dinamicamentebypass.soe poi chiamabypass_execcon un comando passato tramite il parametro di querycmd.
Esecuzione del comando:
- Lâattaccante può ora eseguire comandi accedendo a:
http://www.example.com/script.php?cmd=<command>
Questo dettagliato walkthrough delinea il processo di creazione e distribuzione di unâestensione PHP per eseguire comandi di sistema, sfruttando la funzione dl, che dovrebbe idealmente essere disabilitata per prevenire tali violazioni della sicurezza.
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
HackTricks

