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
pkwned — Preuve de concept pour CVE-2021-4034 (avec exploitation expérimentale sans traces) | Kitploit
Outils/GitHubGitHub/dosamp/pkwned
Escalade de PrivilègesFrameworks d'ExploitationExploitationDéveloppement de Charges UtilesExploitation de Binaires
GitHubdosamp/pkwned

pkwned

Preuve de concept pour CVE-2021-4034 (avec exploitation expérimentale sans traces)

Voir le dépôt
il y a 4 ansPas 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

pkwned : Preuve de concept pour CVE-2021-4034

Ce PoC exécutera PAYLOAD_PATH (tel que défini dans constants.h) avec les privilèges root à partir d'une version vulnérable de pkexec fonctionnant sur glibc. Le répertoire "GCONV_PATH=." doit contenir un fichier exécutable nommé d'après le répertoire contenant le module gconv.

Comme indiqué dans l'avis de Qualys [1], cela produira un message syslog. J'ai trouvé jusqu'à présent deux approches pour l'éviter :

  • En utilisant g_find_program_in_path, pkexec effectue une vérification access() avec g_file_test puis une autre vérification explicite ensuite, ce qui permet une condition de course (en supprimant "GCONV_PATH=./gconv" entre les deux) pour appeler g_printerr sans log_message :

641 if (access (path, F_OK) != 0) 642 { 643 g_printerr ("Error accessing %s: %s\n", path, g_strerror (errno)); 644 goto out; 645 }

Ce dépôt contient l'utilitaire gconv-fuse qui monte un système de fichiers FUSE sur "GCONV_PATH=.", qui apparaît vide après un appel de access("gconv", X_OK). Cela ne fonctionne que si l'option de configuration user_allow_other de FUSE est activée.

  • Si pkexec peut être empêché de lire /etc/shells, cela générera également une erreur sans journalisation :

356 if (!g_file_get_contents ("/etc/shells", 357 &contents, 358 NULL, /* gsize *length */ 359 &error)) 360 { 361 g_printerr ("Error getting contents of /etc/shells: %s\n", error->message); 362 g_error_free (error); 363 goto out; 364 }

Les espaces de noms de montage peuvent être utilisés pour monter un fichier illisible par-dessus, mais cela nécessite également un espace de noms utilisateur, mappant un utilisateur non privilégié à root et rendant le bit setuid de pkexec inefficace (par exemple "unshare -r -u -m").

Notez que GLib a fusionné un correctif pour g_find_program_in_path (probablement pour les prochaines versions stables après v2.70.3 et v2.71.0) qui rendra cet exploit irréalisable en renvoyant toujours des chemins complets réels. [2]

[1] https://www.qualys.com/2022/01/25/cve-2021-4034/pwnkit.txt [2] https://gitlab.gnome.org/GNOME/glib/-/commit/13ee46538f901a8eca8e7a4c167a8838ed0858d4

Télécharger l’outil