
Exploit DirtyPipe (CVE-2022-0847) scritto in Rust
DICHIARAZIONE DI ESCLUSIONE DI RESPONSABILITÀ
Questo codice è solo a scopo educativo e di ricerca.
Non utilizzarlo su sistemi che non possiedi o per cui non hai il permesso di testarli.
L'autore non è responsabile per qualsiasi uso improprio, danno o conseguenza legale derivante dall'uso di questo codice.
Consulta il writeup di questo exploit sul mio blog. Questa è un'implementazione dell'exploit DirtyPipe (CVE-2022-0847) che ho scritto in Rust basandomi sul writeup di Max Kellermann. Il programma consente di sovrascrivere file specifici o di sovrascrivere un binario SUID per escalation dei privilegi.
passwd) per ottenere root/tmp prima dello sfruttamentoPrima crea un file di input. I dati contenuti in questo file verranno utilizzati per sovrascrivere il target. Quindi esegui semplicemente il seguente comando:
./dirtypipe_exploit -m overwrite -i input.txt -o target_file -b offset
Dove offset è l'offset in byte da cui iniziare la scrittura nel file. L'offset non deve trovarsi su un limite di pagina e la scrittura non può attraversare un limite di pagina, a causa della natura della vulnerabilità.
La modalità SUID sostituisce un binario SUID specificato con un payload ELF fornito. L'ELF suid è fornito nella release di questo repository e verrà utilizzato dall'exploit a meno che non sia specificato diversamente nelle opzioni.
Inoltre, puoi generarlo da solo o modificare il payload usando lo script gen_suid.py di pwntools e il file loader.asm. Questa opzione verrà discussa di seguito.
L'exploit imposta il target su /usr/bin/passwd di default.
Esegui il seguente comando per sostituire /usr/bin/passwd con il payload fornito (avvia una shell come root):
./dirtypipe_exploit -m suid
Poi esegui /usr/bin/passwd per ottenere una shell root.
Per generare il tuo payload, segui questi passaggi:
gen_suid.py, che usa pwntools per generare un payload (shellcode.bin) che avvia una shell root. Modificalo come preferisci.nasm -f bin -o [PAYLOAD_NAME] loader.asm. Questo convertirà il file shellcode.bin in un eseguibile../dirtypipe_exploit -m suid -i [PAYLOAD_NAME] -o [TARGET_FILE].Un ringraziamento all'autore del BLOG di STALKR per l'header ELF Tiny a 64-bit (qui).