
Descripción
This lab contains a vulnerable image upload function. It attempts to prevent users from uploading unexpected file types, but relies on checking user-controllable input to verify this.
To solve the lab, upload a basic PHP web shell and use it to exfiltrate the contents of the file /home/carlos/secret. Submit this secret using the button provided in the lab banner.
You can log in to your own account using the following credentials: wiener:peter
Web shell upload via Content-Type restriction bypass writeup
Después de ir a «My account», encontramos dónde subr la web shell:

Como se nos pide acceder a la misma ruta, usaremos este código simple empleado en el writeup del laboratorio anterior:
<?php echo file_get_contents('/home/carlos/secret'); ?>
Cuando intentemos subir el archivo .php nos dará el siguiente error:

Con cambiar la extensión no funcionará, por lo que activamos el logger de Burp Suite y analizamos los paquetes enviados. Una vez encontrado el paquete que se corresponde con el envío de información, lo enviamos al ‘Repeater’ con Ctrl + R o Click derecho + Send to Repeater.

Analizando la petición, vemos que utiliza ‘POST’ para enviar los datos, lo cual no está recomendado. Además, parece que está validando qué archivo aceptar en base al ‘Content-Type’ que posee. Lo cambiamos por uno aceptado, como ‘Content-Type: image/jpeg’ y vemos que hemos conseguido cargar el archivo:

Volvemos al apartado de ‘My account’, buscamos la ruta donde se ha subido el archivo y accedemos a ella:

En mi caso, la URL será: ‘https://0a2100e103a5839b8018ad7300f500c3.web-security-academy.net/files/avatars/basic_shell.php’:

Copiamos el código, volvemos a la página principal y lo introducimos en ‘Submit solution’, completando así el laboratorio:
