Descripción

This lab contains a vulnerable image upload function. Certain file extensions are blacklisted, but this defense can be bypassed due to a fundamental flaw in the configuration of this blacklist.

To solve the lab, upload a basic PHP web shell, then use it to exfiltrate the contents of the file /home/carlos/secret. Submit this secret using the button provided in the lab banner.

You can log in to your own account using the following credentials: wiener:peter

Web shell upload via extension blacklist bypass writeup

Después de ir a «My account», encontramos dónde subr la web shell:

Web shell upload via extension blacklist bypass writeup

Como se nos pide acceder a la misma ruta, usaremos este código simple empleado en el writeup del primer laboratorio de File upload:

<?php echo file_get_contents('/home/carlos/secret'); ?>

Interceptamos la subida del archivo con el logger de Burp Suite:

Lo enviamos al repetidor con Ctrl + R o Click derecho -> Send to repeater. Allí le cambiamos la extensión y parece que con ‘.php5’ lo acepta:

Sin embargo, al entrar a la ruta del archivi, en mi caso ‘https://0ad4009804b4b6b78153076300d40067.web-security-academy.net/files/avatars/basic_shell.php5’ aparece lo siguiente:

Es probable que el servidor no esté configurado para ejecutar archivos .php5 como archivos .php. Para que nos muestre el contenido de la carpeta podemos añadir la configuración. Para ello necesitamos ver qué servidor web está corriendo en la máquina víctima. Esto lo podemos saber en la petición anterior. ‘Server: Apache/2.4.41 (Ubuntu)’. Con esto sabemos que es un servidor Apache, los cuales pueden tener un archivo ‘.htaccess’ en cada carpeta que sirve de configuración. Vamos a subir un archivo .htaccess para sobreescribir la configuración de la carpeta y ejecutar los archivos .php5 como php:

Para subir el archivo se han realizado los siguientes cambios en la petición:

  1. Cambiar el nombre del archivo a ‘.htaccess’
  2. Cambiar el tipo de contenido a ‘text/plain’
  3. Cambiar el contenido a ‘AddType application/x-httpd-php .php5’

Ahora, al volver a la ruta anterior se ejecutará el código del archivo .php:

Copiamos este código, volvemos a la página anterior y lo introducirmos en la entrada que aparece al pulsar ‘Submit solution’.

Nota: La URL del laboratorio ha cambiado debido a que pasaron más de 30 minutos en la resolución y caducó la sesión.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *