Web shell upload via path traversal writeup

Descripción

This lab contains a vulnerable image upload function. The server is configured to prevent execution of user-supplied files, but this restriction can be bypassed by exploiting a secondary vulnerability.

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 path traversal 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'); ?>

Interceptamos la subida del archivo con el logger de Burp Suite:

Lo enviamos al «Repeater» con Ctrl + R o con Click derecho –> Send to repeater. Según el enunciado, la página web sube las imágenes a una carpeta donde no se puede ejecutar código php, por lo que tenemos que manipular la subida para guardar el archivo fuera de esta carpeta y poder ejecutar el comando.

Añadimos al nombre del archivo «../», de la siguiente manera:

Ahora, seleccionamos los caracteres añadidos y pulsamos click derecho –> Convert selection –> URL –> URL-encode all characters, obteniendo el siguiente resultado al enviar:

Ahora, el archivo se ha subido con el nombre «../basic_shell.php», y el servidor interpretará el ‘../’ como una subida de nivel de directorio, guardando el archivo fuera de la carpeta con medidas de seguridad. Volvemos al navegador e inspeccionamos la imagen de avatar:

Ahora podremos acceder al archivo en ‘https://0a1200ae0425ea9e8136b64300a00066.web-security-academy.net/files/basic_shell.php’:

Copiamos el código y lo llevamos al laboratorio, lo introducimos en ‘Submit solution’ y, al presionar ‘Aceptar’, habremos completado el laboratorio.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *