Continuando un poco más con el tema de LFI que introdujimos ayer, vamos a ver ahora como es posible aprovechar esta vulnerabilidad para ejecutar código en el servidor donde se aloja la página vulnerable.
Para hacer esto vamos a insertar código en una imagen que subiremos al servidor mediante los mecanismos legítimos que nos ofrece la página web y después procederemos a ejecutarlo aprovechando la vulnerabilidad LFI comentada ayer.
Pero vamos a entrar en materia.
Lo primero será hacernos una imagen con el código que queremos ejecutar. Para este caso, la imagen será cualquiera que os guste y tenga formato de avatar (algo en .jpeg de pequeño tamaño) y el código de prueba será el siguiente:
<?php
phpinfo();
?>
El segundo paso será incrustarlo en una imagen. Existe varios programas que hacen esto, tanto para Windows como para Linux, pero para el caso yo voy a utilizar una herramienta básica que viene en la consola de Linux, “cat”. Utilizaremos el comando como se especifica a continuación:
cat codigoPhp.txt >> imagen.jpg
Para comprobar que todo ha ido bien, podéis hacer un cat de la imagen y veréis el código incrustado al final de esta.
Ahora procederemos a subir la imagen a la página afectada, por ejemplo, en el caso de un foro la subiremos como avatar, en el caso de otro tipo de páginas pues como parte de un mensaje o como se permita. Hoy en día muchas páginas permiten la subida de imágenes.
Finalmente el último paso es utilizar la vulnerabilidad para invocar este fichero, generalmente situado en “img/” o “images/” o similares y ver que pasa. Si tenemos éxito podremos observar la información sobre PHP de dicho servidor.
Una posible solución a esto es la siguiente (Sacada del manual de php.net):
$path = basename($page, 'php') . '.php';
if(file_exists($path))
include $path;
Nos vemos.