disable_functions bypass - dl function

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Nota importante:

dl è una funzione di PHP che può essere utilizzata per caricare estensioni di PHP. Se la funzione non è disabilitata, potrebbe essere abusata per eludere disable_functions ed eseguire comandi arbitrari. Tuttavia, ha alcune limitazioni rigide:

  • La funzione dl deve essere presente nell'ambiente e non disabilitata

  • L'estensione di PHP deve essere compilata con la stessa versione principale (versione API di PHP) che il server sta utilizzando (puoi vedere queste informazioni nell'output di phpinfo)

  • L'estensione di PHP deve essere posizionata nella directory 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 eludere disable_functions. Ecco un riassunto:

La funzione dl viene utilizzata per caricare estensioni di PHP in modo dinamico durante l'esecuzione dello script. Le estensioni di 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 di PHP personalizzata per eseguire comandi di sistema.

Passaggi eseguiti dall'attaccante:

  1. Identificazione della versione di PHP:

  • L'attaccante determina la versione di PHP utilizzando uno script (<?php echo 'La versione di PHP è '.PHP_VERSION; ?>).

  1. Acquisizione del codice sorgente di PHP:

  • Scarica il codice sorgente di PHP dal sito ufficiale di PHP o dall'archivio se la versione è più vecchia.

  1. Configurazione di PHP locale:

  • Estrae e installa la versione specifica di PHP sul proprio sistema.

  1. Creazione dell'estensione:

Note per la compilazione dell'estensione personalizzata:

  1. ZEND_MODULE_API_NO:

  • Il ZEND_MODULE_API_NO in bypass.c deve corrispondere alla versione corrente di Zend Extension Build, recuperabile con:

php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
  1. Modifica di PHP_FUNCTION:

  • Per le versioni recenti di PHP (5, 7, 8), potrebbe essere necessaria un'aggiustamento di PHP_FUNCTION(bypass_exec). 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, definisce le proprietà dell'estensione.

  • config.m4:

  • Utilizzato da phpize per configurare l'ambiente di compilazione per l'estensione personalizzata.

Compilazione dell'estensione:

  1. Comandi di compilazione:

  • Utilizza phpize, ./configure e make per compilare l'estensione.

  • L'estensione risultante bypass.so si trova nella sottodirectory modules.

  1. Pulizia:

  • Esegue make clean e phpize --clean dopo la compilazione.

Caricamento ed esecuzione sull'host vittima:

  1. Compatibilità delle versioni:

  • Assicura che le versioni dell'API di PHP corrispondano tra il sistema dell'attaccante e quello della vittima.

  1. Caricamento dell'estensione:

  • Utilizza la funzione dl, eludendo le restrizioni utilizzando percorsi relativi o uno script per automatizzare il processo.

  1. Esecuzione dello script:

  • L'attaccante carica bypass.so e uno script PHP sul server della vittima.

  • Lo script utilizza la funzione dl_local per caricare dinamicamente bypass.so e quindi chiama bypass_exec con un comando passato tramite il parametro di query cmd.

Esecuzione di comandi:

  • L'attaccante può ora eseguire comandi accedendo a: http://www.example.com/script.php?cmd=<comando>

Questa guida dettagliata illustra il processo di creazione e distribuzione di un'estensione di PHP per eseguire comandi di sistema, sfruttando la funzione dl, che idealmente dovrebbe essere disabilitata per prevenire tali violazioni della sicurezza.

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated