Labs de File Upload
Malicious File Upload
Deja de leer sobre bugs y empieza a cazarlos
Sin tarjeta · Academy gratis · cancela cuando quieras
¿Qué es File Upload?
Las vulnerabilidades de File Upload aparecen cuando una app permite subir ficheros sin validar tipo, contenido o destino. Según cómo se sirva el fichero, derivan en RCE (webshell), XSS almacenado (SVG/HTML), path traversal en el nombre o XXE/SSRF al procesar el contenido.
¿Por qué practicar File Upload?
Casi toda app tiene subida de avatar, documentos o adjuntos, y validar bien es sorprendentemente difícil. Una subida que acaba en webshell es RCE directa (P1, $5,000-$30,000); incluso sin RCE, un SVG con XSS almacenado o un path traversal en el filename ya son hallazgos sólidos.
¿Qué aprenderás con los labs de File Upload?
Aprenderás a mapear el flujo de subida y dónde se sirve el fichero, bypassear validaciones de extensión (doble extensión, mayúsculas, null byte), falsear Content-Type y magic bytes, subir webshells y polyglots, abusar de SVG para XSS y de nombres de fichero para traversal.
Tipos de File Upload que cubrimos
- Webshell / RCE
Subir un .php/.jsp ejecutable a un directorio servido por el motor. Acceder a la URL ejecuta tu código.
- Bypass de extensión
shell.php.jpg, shell.pHp, shell.php%00.jpg, .phtml/.php5 — saltarse blacklists o whitelists mal hechas.
- SVG / HTML XSS
SVG y HTML son ejecutables en el navegador. Un avatar SVG con <script> da XSS almacenado al verlo.
- Path traversal en filename
Nombre como ../../var/www/shell.php para escribir fuera del directorio de uploads.
¿Cómo encontrar y explotar File Upload?
Playbook práctico — del recon a la prueba de concepto.
- 1
Mapear el flujo y el destino
Sube un fichero válido y observa la respuesta: la URL donde queda, si renombran, qué directorio sirve y con qué Content-Type se devuelve.
POST /upload → https://target/uploads/2024/avatar_123.png - 2
Probar un ejecutable directo
Intenta subir una webshell con la extensión del motor. Si el directorio la ejecuta, tienes RCE.
shell.php → <?php system($_GET['c']); ?> → /uploads/shell.php?c=id - 3
Bypassear la validación de extensión
Si filtran .php, prueba dobles extensiones, variantes de mayúsculas, extensiones alternativas y null byte en motores legacy.
shell.php.jpg · shell.pHp · shell.phtml · shell.php%00.jpg - 4
Falsear tipo y magic bytes
Cambia el Content-Type a image/png y antepone una cabecera mágica de imagen para colar un polyglot ante validaciones por firma.
GIF89a;<?php system($_GET['c']); ?> con Content-Type: image/gif - 5
Si no hay RCE, ir a XSS/traversal
Sube un SVG con script para XSS almacenado, o manipula el filename para escribir fuera del directorio previsto.
<svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.domain)"/> · filename="../../app/public/x.html"
Aprende la teoría
Academy: File Upload Vulnerabilities
Cargando labs...
Ver en catálogo completo →Preguntas frecuentes
¿Qué es una vulnerabilidad de File Upload?
Es un fallo en el que la app acepta ficheros sin validar correctamente su tipo, contenido o destino. Según cómo se sirvan, permiten ejecutar código (webshell), XSS almacenado (SVG/HTML), path traversal en el nombre o XXE/SSRF al procesarlos.
¿Cómo se explota una subida de ficheros insegura?
Se sube un fichero ejecutable (p. ej. una webshell PHP) a un directorio servido por el motor y se accede a su URL para lograr RCE. Si hay validaciones, se bypassean con dobles extensiones, magic bytes falsos o polyglots; sin RCE, un SVG con script da XSS almacenado.
¿Cómo encontrar File Upload en bug bounty?
Localiza toda subida (avatar, documentos, import) y analiza dónde se guarda y cómo se sirve. Prueba extensiones ejecutables y sus bypasses, falsea Content-Type y firma, y experimenta con nombres de fichero maliciosos y SVG para XSS.
¿Cómo prevenir un File Upload malicioso?
Valida por allowlist de extensiones y de tipo real (magic bytes), renombra los ficheros con nombres aleatorios, sírvelos desde un dominio sandbox sin ejecución de código y con Content-Disposition: attachment, y guarda los uploads fuera del webroot.
¿Diferencia entre File Upload y Path Traversal?
El Path Traversal LEE ficheros existentes fuera del directorio; el File Upload ESCRIBE ficheros (que pueden ejecutarse). A veces se combinan: un nombre de fichero con ../ durante la subida escribe la webshell en una ruta servida, encadenando ambos.
Otras categorías relacionadas
hunters entrenando
labs de hackeos reales
completaciones
pagados por estos bugs
La checklist que repaso en cada objetivo nuevo
47 comprobaciones ordenadas por coste: primero lo que te puede meter en un lío, luego lo barato, y al final lo caro — que es donde están los bounties grandes. Te la mando al correo ahora mismo.
Te das de baja en un clic, desde cualquier correo.
Practica File Upload en labs reales
Cada lab de File Upload replica un reporte real de bug bounty que se pagó. Crea tu cuenta gratis, empieza por la Academy y pasa a los labs cuando quieras.
Sin tarjeta · Academy gratis · cancela cuando quieras
La comunidad
Esto no es una plataforma con usuarios.Es gente rompiendo lo mismo que tú.
Dentro se pregunta, se enseña lo que se ha encontrado y se resuelve en grupo lo que atascaría a cualquiera solo. Se entra gratis: sin cuenta, sin plan y sin dejar el correo.

Es gratis y abierto. No hace falta tener cuenta en BBLABS para entrar.