Post

Laboratorio - LFI to RCE

Logramos un RCE (Remote Command Execution) al leer registros (logs) del servidor y modificando cabeceras en la petición (En estas podemos inyectar código)

Algunas rutas de archivos de logs son

  • Apache: /var/log/apache2/access.log
  • SSH: Debian y Ubuntu: /var/log/auth.log \ Red Hat y Centos /var/log/btmp
  • Otro archivos que contemplan User-Agent: /proc/self/environ \ /proc/self/fd/N

Explicación 🤯

Como de ante mano sabemos que podemos leer archivos del servidor (LFI), existen archivos de registros, en los cuales se almacenan las peticiones realizadas al servidor

Del anterior ejemplo de un archivo de registro la parte más importante es [User-Agent], ya que es la única que podemos modificar en una petición que enviemos al servidor.

¿Cómo podemos cambiar el valor de User-Agent?

Usaremos BurpSuite para cargar nuestro código PHP a ejecutar.

Y si ahora realizamos una petición con cURL veremos el output de nuestro comando ejecutado

Debemos tener mucho cuidado al momento de inyectar nuestro código PHP en la cabecera User-Agent, ya que, Si no escribimos la sintaxis correcta, el archivo access.log se corromperá y ya no será posible ejecutar comandos.

SSH: Session Poisoning 💉

Si la máquina que auditamos tiene el puerto 22 (SSH) abierto podemos tratar de ejecutar este ataque.

  • Las rutas de los registros de SSH son:
    • Debian y Ubuntu: /var/log/auth.log
    • Red Hat y Centos: /var/log/btmp

Archivo btmp

La inyección de código PHP la haremos en el nombre del usuario

1
ssh "<?php system('whoami'); ?>"@<Dirección IP>
This post is licensed under CC BY 4.0 by the author.