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.
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:
Burp Suite -> Intruder -> Payload options -> Extensions list
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