Unrestricted File Upload
Definición
Unrestricted File Upload es una vulnerabilidad de seguridad que ocurre cuando una aplicación web permite a los usuarios cargar archivos sin restricciones adecuadas sobre el tipo de archivo, el tamaño o el contenido. Esto puede permitir a un atacante cargar archivos maliciosos, por ejemplo, archivos PHP, JavaScript, o ejecutables, que luego pueden ser ejecutados en el servidor, comprometiendo la seguridad del sistema.
Técnicas
Intentar cambiar extensiones
Doble extensión, como
Extensión con un delimitador, como
Extensión vacía:
Extensión con capitalización variada:
Cambiar MIME-type
Mime-Type permitido + extensión no permitida
Mime-Type no permitido + extensión permitida
Eliminar tipo de contenido
Enviar Content-Type dos veces dentro de la solicitud con tipos MIME permitidos y no permitidos
Bypass apache
Nos creamos un archivo .htaccess, donde le decimos que cualquier extensión .xxx me la interprete como php.
Esto lo podemos ver en la máquina Access de Proving Grounds
Magic numbers
Si una aplicación utiliza los bytes mágicos de un archivo para deducir el tipo de contenido, podemos intentar eludir las medidas de seguridad falsificando los bytes mágicos de un archivo permitido. Por ejemplo, si se permiten imágenes GIF, puede falsificar los bytes mágicos de una imagen GIF GIF89a
para que el servidor piense que le estamos enviando un GIF válido.
Reemplazo de archivos
Esto lo podemos ver en la máquina Boolean de Proving Grounds.
Ruta como nombre de archivo
Intente utilizar diferentes tipos de ruta como nombre de archivo [CUIDADO CON ESTO, PORQUE PUEDES REEMPLAZAR ARCHIVOS]
Ruta absoluta, por ejemplo:
Ruta relativa, por ejemplo:
Ruta UNC:
Unrestricted File Upload + XSS para descargar malware
En este ejemplo vemos un XSS donde previamente se podía subir malware a un Bucket S3 por lo que se concate el XSS con el Unrestricted File Upload:
Para ver más técnicas concatenadas con XSS recomiendo visitar la sección de Cross-Site Scripting
WebShells
ASP:
PHP:
Recursos
Última actualización