File upload

General

1) Realizar carga de archivo e identificar:

  • Lugar de almacenamiento o ubicación donde es utilizado el archivo.

    • Fuzzing de directorios.

    • Forzar mensajes de error.

      • Cargando un archivo con un nombre existente.

      • Enviar dos solicitudes idénticas simultáneamente.

      • Cargar un archivo con un nombre demasiado largo, por ejemplo de 5000 caracteres.

  • Nombre con el cual es guardado el archivo.

2) Identificar la tecnología utilizada.

3) Comprobar la ejecución de comandos.

# PHP
<?php echo "test"; ?>
<?php system("hostname"); ?>
<?php echo file_get_contents("/etc/passwd"); ?>

4) Subida de web shells y reverse shells.

Bypass de filtros

Validación del lado del cliente

Utilizar funcionalidad de "anulaciones locales" de las "herramientas para desarrolladores" del navegador.

Validación de extensiones con lista negra (blacklist) y blanca (whitelist)

Identificar extensiones permitidas realizando fuzzing.

Listas de extensiones web comunes:

Doble extensión

Si .jpg es una extensión permitida se agrega al final del nombre del archivo seguido por la extensión del archivo a ejecutar, por ejemplo: shell.jpg.php.

Doble extensión inversa

Si .jpg es una extensión permitida se mantiene al final del nombre del archivo y se antepone a esta la extensión del archivo a ejecutar, por ejemplo: shell.php.jpg.

Caracteres especiales

Validación de tipo de contenido (Content-Type)

Identificar los tipos de contenido (Content-Type) permitidos realizando fuzzing.

Listas de tipos de contenido (Content-Type) web:

Validación de MIME-Type

Identificar los MIME-Type permitidos realizando fuzzing.

Listas de MIME-Type de archivos:

Desde file upload a otras vulnerabilidades

SVG

Cross-site scripting (XSS)

XML external entity (XXE)

Lectura de archivo general.

Lectura de archivo PHP.

ZIP

Reverse shell

Creación de reverse shell.

Generación de archivo .zip con reverse shell.

Ejecución de Netcat en máquina atacante en modo escucha.

Subir el archivo reverseshell.zip al servidor web objetivo, revisar si el archivo es descomprimido y ejecutar la reverse shell.

Última actualización

¿Te fue útil?