Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Dirty-Pipe-Exploits — CVE-2022-0847(Dirty Pipe) exploit della vulnerabilità. | Kitploit
Strumenti/GitHubGitHub/gustavo-nogueira/dirty-pipe-exploits
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitApprendimento e FormazioneBinary ExploitationLab e Pratica
GitHubgustavo-nogueira/dirty-pipe-exploits

Dirty-Pipe-Exploits

CVE-2022-0847(Dirty Pipe) exploit della vulnerabilità.

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
2123 anni faNon ancora revisionato

CVE-2022-0847 Exploits

Dirty Pipe

Che cos'è?

Divulgata il 7 marzo 2022 da Max Kellerman[2], la CVE-2022-0847 è una vulnerabilità nel kernel Linux (versioni tra la 5.8 e la 5.16.11) che consente agli attaccanti di sostituire file di sola lettura o immutabili e aumentare i propri privilegi sul sistema della vittima. La CVE-2022-0847 è stata soprannominata Dirty Pipe e ha un punteggio CVSS di 7,8 (considerato alto).

Come funziona lo sfruttamento della vulnerabilità?

La vulnerabilità Dirty Pipe è descritta come un difetto nel modo in cui l'attributo flags della struct pipe_buffer[7] non conteneva un'inizializzazione adeguata nelle funzioni copy_page_to_iter_pipe e push_pipe nel kernel Linux e, pertanto, poteva contenere valori obsoleti. Una delle flag che può essere impostata nell'attributo flags della struct pipe_buffer è la flag chiamata PIPE_BUF_FLAG_CAN_MERGE. Essa indica se l'unione di ulteriori dati nel pipe_buffer è consentita o meno. In questo modo, quando i dati vengono copiati in un pipe_buffer, è possibile aggiungere altri dati al pipe_buffer se la pagina copiata ha una dimensione inferiore a 4096 byte.

Iniettando PIPE_BUF_FLAG_CAN_MERGE in un riferimento alla cache di pagina, è diventato possibile sovrascrivere i dati nella cache di pagina, semplicemente scrivendo nuovi dati nella pipe preparata in modo speciale (questo processo verrà descritto nei paragrafi successivi). In questo modo, un utente locale senza privilegi può usare questo difetto per sovrascrivere/scrivere su pagine nella cache di pagina supportate da file di sola lettura e quindi aumentare i propri privilegi sul sistema.

Detto questo, per sfruttare la vulnerabilità, è necessario seguire i seguenti passaggi:

  1. Creare una pipe.
  2. Riempire la pipe con dati arbitrari (per impostare la flag PIPE_BUF_FLAG_CAN_MERGE in tutte le voci dell'array circolare).
  3. Svuotare la pipe (lasciando la flag PIPE_BUF_FLAG_CAN_MERGE impostata in tutte le istanze di struct pipe_buffer dell'array circolare). Normalmente, la flag dovrebbe essere reimpostata. Tuttavia, la vulnerabilità Dirty Pipe fa sì che la flag rimanga impostata a 1.
  4. Trasferire un file di sola lettura nella pipe usando la syscall splice.
  5. Modificare il file di sola lettura. Poiché la chiamata di sistema splice usa il metodo pass-by-reference (passaggio per riferimento), l'attaccante può sovrascrivere il file grazie alla flag PIPE_BUF_FLAG_CAN_MERGE.

Exploits

Compila tutto con il seguente comando:

root@kitploit:~
make

Exploit 1 - Sovrascrivere file di sola lettura

Esecuzione

root@kitploit:~
./exploit-1

Descrizione

L'exploit 1, presente nel file exploit-1.c del repository, consiste nel sovrascrivere la password dell'utente root presente nel file /etc/passwd (questo file contiene informazioni sull'account utente, come la password criptata) e infine fornire un terminale con accesso root. A tal fine, è stato necessario:

  1. Effettuare un backup del file /etc/passwd.
  2. Preparare la pipe (come mostrato nei passaggi 1, 2 e 3 sopra citati) con la flag PIPE_BUF_FLAG_CAN_MERGE.
  3. Trasferire il file /etc/passwd nella pipe e sovrascrivere il contenuto di questo file con una nuova password di root nota (come mostrato nei passaggi 4 e 5 sopra citati).
  4. Creare una sessione come root usando la nuova password impostata.
  5. Successivamente, la password viene reimpostata al valore originale a partire dal backup, così senza lasciare tracce.
  6. Infine, sempre con la sessione root stabilita, viene fornito un terminale shell con accesso root.

Exploit 2 - Sequestro (hijacking) di binari SUID

Trovare i binari SUID

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

Esecuzione

root@kitploit:~
./exploit-2 <path-of-suid-binary>

Descrizione

L'exploit 2, presente nel file exploit-2.c del repository, consiste nel sovrascrivere e sequestrare un binario SUID (questo tipo di attacco è stato descritto nella sezione 3.5.2) e infine fornire un terminale con accesso root. A tal fine, è stato necessario:

  1. Preparare un codice eseguibile ELF (Executable and Linking Format) che verrà utilizzato per sovrascrivere il binario SUID ricevuto come parametro. Nell'exploit, l'eseguibile ELF utilizzato crea un nuovo file eseguibile (/tmp/sh), che a sua volta crea una shell con accesso root.
  2. Ricevere il percorso di un binario SUID come parametro.
  3. Effettuare un backup del binario ricevuto.
  4. Preparare la pipe (come mostrato nei passaggi 1, 2 e 3 sopra citati) con la flag PIPE_BUF_FLAG_CAN_MERGE.
  5. Trasferire il binario ricevuto nella pipe e sovrascrivere il contenuto di questo file con l'eseguibile ELF descritto nel passaggio 1 (come mostrato nei passaggi 4 e 5 sopra citati).
  6. Successivamente, il binario ricevuto viene ripristinato al suo contenuto originale a partire dal backup, così senza lasciare tracce.
  7. Infine, il file eseguibile /tmp/sh menzionato nel passaggio 1 viene eseguito, aprendo così una nuova shell con accesso root.

Exploit 3 - Aggiunta di una chiave per l'accesso remoto

Esecuzione

root@kitploit:~
./exploit-3

Descrizione

L'exploit 3, presente nel file exploit-3.c del repository, utilizza gli stessi passaggi dell'exploit 1 per ottenere l'accesso a una shell root. La differenza è che l'exploit 3, dopo aver ottenuto l'accesso alla shell root, carica una chiave pubblica SSH (Secure Shell) dell'attaccante nel file /root/.ssh/authorized_keys e crea un tunnel TCP (Transmission Control Protocol) per l'accesso remoto via SSH utilizzando la piattaforma Ngrok.

Riferimenti

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

[2] KELLERMANN, Max. The Dirty Pipe Vulnerability. Disponibile su: https://dirtypipe.cm4all.com/. Accesso effettuato il: 23 luglio 2022.

[3] Exploit Database. Disponibile su: https://www.exploit-db.com/. Accesso effettuato il: 03 agosto 2022.

[4] Traitor: Automatically exploit low-hanging fruit to pop a root shell. Disponibile su: https://github.com/liamg/traitor. Accesso effettuato il: 03 agosto 2022.

[5] PayloadsAllTheThings. Linux - Privilege Escalation. Disponibile su: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Linux%20-%20Privilege%20Escalation.md#cve-2022-0847-dirtypipe. Accesso effettuato il: 03 agosto 2022.

[6] Repository del kernel Linux - Struct pipe_inode_info. Disponibile su: https://github.com/torvalds/linux/blob/v5.8/include/linux/pipe_fs_i.h#L76. Accesso effettuato il: 03 agosto 2022.

[7] Repository del kernel Linux - Struct pipe_buffer. Disponibile su: https://github.com/torvalds/linux/blob/v5.8/include/linux/pipe_fs_i.h#L26-L32. Accesso effettuato il: 03 agosto 2022.

[8] ARNTZ, Pieter. Linux "Dirty Pipe" vulnerability gives unprivileged users root access. Malwarebytes Lab. Disponibile su: https://www.malwarebytes.com/blog/news/2022/03/linux-dirty-pipe-vulnerability-gives-unprivileged-users-root-access. Accesso effettuato il: 03 agosto 2022.

[9] Picus Security. Linux “Dirty Pipe” CVE-2022-0847 Vulnerability Exploitation Explained. Disponibile su: https://www.picussecurity.com/resource/linux-dirty-pipe-cve-2022-0847-vulnerability-exploitation-explained. Accesso effettuato il: 03 agosto 2022.

[10] Exploit Database - Local Privilege Escalation (Dirty Pipe). Disponibile su: https://www.exploit-db.com/exploits/50808. Accesso effettuato il: 03 agosto 2022.

Scarica lo strumento