
Exploit DirtyPipe (CVE-2022-0847) écrit en Rust
AVERTISSEMENT
Ce code est à des fins éducatives et de recherche uniquement.
Ne l'utilisez pas sur des systèmes que vous ne possédez pas ou sur lesquels vous n'avez pas l'autorisation de tester.
L'auteur n'est pas responsable de tout usage abusif, dommage ou conséquence juridique résultant de l'utilisation de ce code.
Consultez l'article sur cet exploit sur mon blog. Il s'agit d'une implémentation de l'exploit DirtyPipe (CVE-2022-0847) que j'ai écrite en Rust, basée sur l'article de Max Kellermann. Le programme vous permet d'écraser des fichiers spécifiques ou d'écraser un binaire SUID afin d'élever les privilèges.
passwd par défaut) pour obtenir les droits root/tmp avant l'exploitationCréez d'abord un fichier d'entrée. Les données de ce fichier seront utilisées pour écraser la cible. Ensuite, exécutez simplement la commande suivante :
./dirtypipe_exploit -m overwrite -i input.txt -o target_file -b offset
Où offset est le décalage en octets à partir duquel commencer l'écriture dans le fichier. Le décalage ne doit pas se trouver sur une limite de page et l'écriture ne peut pas franchir une limite de page, en raison de la nature de la vulnérabilité.
Le mode SUID remplace un binaire SUID spécifié par une charge utile ELF donnée. L'ELF suid est fourni dans la release de ce dépôt et sera utilisé par l'exploit, sauf indication contraire dans les options.
De plus, vous pouvez le générer vous-même ou modifier la charge utile à l'aide du script pwntools gen_suid.py et du fichier loader.asm. Cette option sera abordée ci-dessous.
Par défaut, l'exploit définit la cible sur /usr/bin/passwd.
Exécutez la commande suivante pour remplacer /usr/bin/passwd par la charge utile fournie (lance un shell en tant que root) :
./dirtypipe_exploit -m suid
Exécutez ensuite /usr/bin/passwd pour obtenir un shell root.
Pour générer votre propre charge utile, suivez ces étapes :
gen_suid.py, qui utilise pwntools pour générer une charge utile (shellcode.bin) qui lance un shell root. Modifiez-la comme bon vous semble.nasm -f bin -o [PAYLOAD_NAME] loader.asm. Cela transformera le fichier shellcode.bin en un exécutable../dirtypipe_exploit -m suid -i [PAYLOAD_NAME] -o [TARGET_FILE].Merci à l'auteur du BLOG DE STALKR pour l'en-tête Tiny ELF 64 bits (ici).