04f - Input non controllato
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.
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