Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-Pending-Flask-Uploads-Path-Traversal-PoC — Demostración de CWE-22 Path Traversal en Flask-Uploads 0.2.1. Solo para fines educativos y de investigación en seguridad. Probado en Python 3.11. | Kitploit
Herramientas/GitHubGitHub/nicetop1027/cve-2026-pending-flask-uploads-path-traversal-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónAprendizaje y Educación
GitHubnicetop1027/cve-2026-pending-flask-uploads-path-traversal-poc

CVE-2026-Pending-Flask-Uploads-Path-Traversal-PoC

Demostración de CWE-22 Path Traversal en Flask-Uploads 0.2.1. Solo para fines educativos y de investigación en seguridad. Probado en Python 3.11.

Ver Repositorio
1hace 7 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-XXXXX (Pendiente): Path Traversal en Flask-Uploads

Información de la vulnerabilidad

  • Producto: Flask-Uploads
  • Versión: 0.2.1 (y potencialmente versiones anteriores)
  • Tipo de vulnerabilidad: Path Traversal (Directory Traversal)
  • CWE-ID: CWE-22
  • Severidad: ALTA (CVSS 7.5)
  • Impacto: Escritura arbitraria de archivos, Ejecución remota de código (RCE)

Descripción

Existe una vulnerabilidad crítica de path traversal en Flask-Uploads versión 0.2.1. La librería no sanea adecuadamente los nombres de archivo de los archivos subidos antes de guardarlos en el sistema de archivos.

Específicamente, el método save() en flask_uploads.py concatena directamente la ruta de destino de la subida con el nombre de archivo proporcionado por el usuario usando os.path.join(). Esto permite que un atacante incluya secuencias de traversal de directorios (p. ej., ) en el nombre de archivo, lo que le permite escribir archivos en ubicaciones arbitrarias del sistema de archivos del servidor.

../../

Análisis de la causa raíz

Archivo: flask_uploads.py (Línea 132 en v0.2.1)

root@kitploit:~
def save(self, storage, filename=None):
    if filename is None:
        filename = storage.filename
    # VULNERABLE CODE: No sanitization of 'filename'
    target = os.path.join(self.destination, filename)
    storage.save(target)
    return filename

La aplicación depende de que el desarrollador sanea el nombre de archivo, pero la documentación de la librería implica que maneja las subidas de archivos de forma segura. Por defecto, si un desarrollador pasa un nombre de archivo sin procesar desde una solicitud, se produce una vulnerabilidad.

Impacto

  1. Escritura arbitraria de archivos: Los atacantes pueden sobrescribir archivos críticos del sistema (p. ej., ssh_host_key, archivos de configuración).
  2. Ejecución remota de código (RCE): Al subir un script malicioso (p. ej., .php, .py) a un directorio que es ejecutado por el servidor web (como cgi-bin o una carpeta estática conocida), un atacante puede ejecutar comandos arbitrarios en el servidor.

Prueba de concepto (PoC)

Un atacante puede explotar esta vulnerabilidad enviando una solicitud POST con un nombre de archivo manipulado:

root@kitploit:~
POST /upload HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary

------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="../../../../../tmp/pwned.txt"
Content-Type: text/plain

HACKED
------WebKitFormBoundary--

Si el servidor usa Flask-Uploads para guardar este archivo, se escribirá en /tmp/pwned.txt en lugar del directorio de subida previsto.

Mitigación / Solución

La librería debería verificar que la ruta combinada esté dentro del directorio previsto usando os.path.abspath y startswith, o usar siempre una función de saneamiento como werkzeug.utils.secure_filename.

Solución recomendada:

root@kitploit:~
from werkzeug.utils import secure_filename

# ...
filename = secure_filename(filename) 
target = os.path.join(self.destination, filename)
Descargar herramienta