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
Dirty-Pipe-Exploits — Exploits de la vulnérabilité CVE-2022-0847 (Dirty Pipe). | Kitploit
Outils/GitHubGitHub/gustavo-nogueira/dirty-pipe-exploits
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationApprentissage et ÉducationExploitation de BinairesLabs et Pratique
GitHubgustavo-nogueira/dirty-pipe-exploits

Dirty-Pipe-Exploits

Exploits de la vulnérabilité CVE-2022-0847 (Dirty Pipe).

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
Voir le dépôt
212il y a 3 ansPas encore vérifié

CVE-2022-0847 Exploits

Dirty Pipe

Qu'est-ce que c'est ?

Divulguée le 7 mars 2022 par Max Kellerman[2], la CVE-2022-0847 est une vulnérabilité dans le noyau Linux (versions entre 5.8 et 5.16.11) qui permet aux attaquants de remplacer des fichiers en lecture seule ou immuables et d'augmenter leurs privilèges sur le système de la victime. La CVE-2022-0847 a été surnommée Dirty Pipe et possède un score CVSS de 7,8 (considéré comme élevé).

Comment fonctionne l'exploitation de la vulnérabilité ?

La vulnérabilité Dirty Pipe est décrite comme un défaut dans la manière dont l'attribut flags de la struct pipe_buffer[7] ne contenait pas d'initialisation adéquate dans les fonctions copy_page_to_iter_pipe et push_pipe du noyau Linux et pouvait donc contenir des valeurs obsolètes. L'un des drapeaux pouvant être configurés dans l'attribut flags de la struct pipe_buffer est le drapeau appelé PIPE_BUF_FLAG_CAN_MERGE. Il indique si la fusion de données supplémentaires dans le pipe_buffer est autorisée ou non. Ainsi, lorsque des données sont copiées dans un pipe_buffer, davantage de données peuvent être ajoutées au pipe_buffer si la page copiée a une taille inférieure à 4096 octets.

En injectant PIPE_BUF_FLAG_CAN_MERGE dans une référence de cache de page, il est devenu possible d'écraser des données dans le cache de page, simplement en écrivant de nouvelles données dans le pipe préparé de manière spéciale (ce processus sera décrit dans les paragraphes suivants). Ainsi, un utilisateur local sans privilèges peut utiliser ce défaut pour écraser/écrire dans des pages du cache de page soutenues par des fichiers en lecture seule et ainsi augmenter ses privilèges sur le système.

Cela dit, pour exploiter la vulnérabilité, les étapes suivantes doivent être respectées :

  1. Créer un pipe.
  2. Remplir le pipe avec des données arbitraires (pour définir le drapeau PIPE_BUF_FLAG_CAN_MERGE dans toutes les entrées du tableau circulaire).
  3. Vider le pipe (en laissant le drapeau PIPE_BUF_FLAG_CAN_MERGE défini dans toutes les instances de struct pipe_buffer du tableau circulaire). Normalement, le drapeau devrait être réinitialisé. Cependant, la vulnérabilité Dirty Pipe fait en sorte que le drapeau reste défini à 1.
  4. Transférer un fichier en lecture seule vers le pipe en utilisant l'appel système splice.
  5. Modifier le fichier en lecture seule. Comme l'appel système splice utilise la méthode de passage par référence (pass-by-reference), l'attaquant peut écraser le fichier en raison du drapeau PIPE_BUF_FLAG_CAN_MERGE.

Exploits

Compilez tout avec la commande suivante :

root@kitploit:~
make

Exploit 1 - Écrasement de Fichiers en Lecture Seule

Exécution

root@kitploit:~
./exploit-1

Description

L'exploit 1, présent dans le fichier exploit-1.c du dépôt, consiste à écraser le mot de passe de l'utilisateur root présent dans le fichier /etc/passwd (ce fichier contient des informations sur le compte utilisateur, comme le mot de passe crypté) et enfin, fournir un terminal avec accès root. Pour cela, il a été nécessaire :

  1. Effectuer une sauvegarde du fichier /etc/passwd.
  2. Préparer le pipe (comme présenté dans les étapes 1, 2 et 3 mentionnées ci-dessus) avec le drapeau PIPE_BUF_FLAG_CAN_MERGE.
  3. Transférer le fichier /etc/passwd vers le pipe et écraser le contenu de ce fichier avec un nouveau mot de passe root connu (comme présenté dans les étapes 4 et 5 mentionnées ci-dessus).
  4. Créer une session en tant que root à partir du nouveau mot de passe défini.
  5. Ensuite, le mot de passe est réinitialisé à sa valeur d'origine à partir de la sauvegarde, ne laissant ainsi aucune trace.
  6. Enfin, toujours avec la session root établie, un terminal shell avec accès root est libéré.

Exploit 2 - Détournement (Hijacking) de Binaires SUID

Trouver des binaires SUID

root@kitploit:~
find / -perm -4000 2>/dev/null

Exécution

root@kitploit:~
./exploit-2 <chemin-du-binaire-suid>

Description

L'exploit 2, présent dans le fichier exploit-2.c du dépôt, consiste à écraser et détourner un binaire SUID (ce type d'attaque a été rapporté dans la section 3.5.2) et enfin, fournir un terminal avec accès root. Pour cela, il a été nécessaire :

  1. Préparer un code exécutable ELF (Executable and Linking Format) qui sera utilisé pour écraser le binaire SUID reçu en paramètre. Dans l'exploit, l'exécutable ELF utilisé crée un nouveau fichier exécutable (/tmp/sh), qui à son tour, crée un terminal shell avec accès root.
  2. Recevoir le chemin d'un binaire SUID en paramètre.
  3. Effectuer une sauvegarde du binaire reçu.
  4. Préparer le pipe (comme présenté dans les étapes 1, 2 et 3 mentionnées ci-dessus) avec le drapeau PIPE_BUF_FLAG_CAN_MERGE.
  5. Transférer le fichier binaire reçu vers le pipe et écraser le contenu de ce fichier avec l'exécutable ELF commenté à l'étape 1 (comme présenté dans les étapes 4 et 5 mentionnées ci-dessus).
  6. Ensuite, le binaire reçu est restauré à son contenu original à partir de la sauvegarde, ne laissant ainsi aucune trace.
  7. Enfin, le fichier exécutable /tmp/sh cité à l'étape 1 est exécuté, ouvrant ainsi un nouveau shell avec accès root.

Exploit 3 - Ajout d'une Clé pour Accès à Distance

Exécution

root@kitploit:~
./exploit-3

Description

L'exploit 3, présent dans le fichier exploit-3.c du dépôt, utilise les mêmes étapes que l'exploit 1 pour obtenir un accès shell root. La différence est que l'exploit 3, après avoir obtenu l'accès au shell root, charge une clé publique SSH (Secure Shell) de l'attaquant dans le fichier /root/.ssh/authorized_keys et crée un tunnel TCP (Transmission Control Protocol) pour un accès à distance au SSH en utilisant la plateforme Ngrok.

Références

[1] AHMED, Alexis. Privilege Escalation Techniques: Learn the art of exploiting Windows and Linux systems. Birmingham: Packt Publishing, octobre 2021.

[2] KELLERMANN, Max. The Dirty Pipe Vulnerability. Disponible sur : https://dirtypipe.cm4all.com/. Consulté le : 23 juillet 2022.

[3] Exploit Database. Disponible sur : https://www.exploit-db.com/. Consulté le : 3 août 2022.

[4] Traitor: Automatically exploit low-hanging fruit to pop a root shell. Disponible sur : https://github.com/liamg/traitor. Consulté le : 3 août 2022.

[5] PayloadsAllTheThings. Linux - Privilege Escalation. Disponible sur : https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Linux%20-%20Privilege%20Escalation.md#cve-2022-0847-dirtypipe. Consulté le : 3 août 2022.

[6] Dépôt du noyau Linux - Struct pipe_inode_info. Disponible sur : https://github.com/torvalds/linux/blob/v5.8/include/linux/pipe_fs_i.h#L76. Consulté le : 3 août 2022.

[7] Dépôt du noyau Linux - Struct pipe_buffer. Disponible sur : https://github.com/torvalds/linux/blob/v5.8/include/linux/pipe_fs_i.h#L26-L32. Consulté le : 3 août 2022.

[8] ARNTZ, Pieter. Linux "Dirty Pipe" vulnerability gives unprivileged users root access. Malwarebytes Lab. Disponible sur : https://www.malwarebytes.com/blog/news/2022/03/linux-dirty-pipe-vulnerability-gives-unprivileged-users-root-access. Consulté le : 3 août 2022.

[9] Picus Security. Linux “Dirty Pipe” CVE-2022-0847 Vulnerability Exploitation Explained. Disponible sur : https://www.picussecurity.com/resource/linux-dirty-pipe-cve-2022-0847-vulnerability-exploitation-explained. Consulté le : 3 août 2022.

[10] Exploit Database - Local Privilege Escalation (Dirty Pipe). Disponible sur : https://www.exploit-db.com/exploits/50808. Consulté le : 3 août 2022.

Télécharger l’outil