
Un programma C di esempio che contiene codice vulnerabile per tipi comuni di vulnerabilità. Può essere utilizzato per mostrare i concetti di fuzzing.
Nota: il nome del file è stato cambiato da imgRead.c a dvcp.c; se stai guardando video, vedrai imgRead.c ma nel repository GitHub vedrai dvcp.c, usa il nome file corretto.
Il mio canale YouTube: https://www.youtube.com/user/MrHardik05/featured?view_as=subscriber
Cos'è?
Questo è un semplice programma in C che ho scritto per spiegare i tipi più comuni di vulnerabilità come:
Questo programma in C contiene codice vulnerabile per tutte le vulnerabilità sopra elencate e puoi sottoporlo a fuzzing con qualsiasi fuzzer come AFL, libafl, libfuzzer, hongfuzz, winafl, jackalope o qualsiasi altro fuzzer che preferisci.
Come compilarlo
Basta digitare "make" nel prompt dei comandi. Il Makefile è incluso.
Come generare input per AFL?
Crea semplicemente un file di input di esempio come segue e al resto penserà AFL:
echo "IMG" >input/1.txt
AFL genererà automaticamente nuovi casi di test e scoprirà la maggior parte delle vulnerabilità sopra menzionate. Questa è la bellezza di AFL :)
Come fare fuzzing con AFL?
1. Prima compila questo programma usando il seguente comando:
afl-gcc -g -fsanitize=address dvcp.c -o dvcp
2. esegui questo comando:
afl-fuzz -i input -o output -m none -- ./dvcp @@
Come fare fuzzing con honggfuzz
1. Prima compila questo programma usando il seguente comando:
hfuzz-gcc -g -fsanitize=address dvcp.c -o dvcp
2. esegui questo comando:
hongfuzz -i input -- ./dvcp ___FILE___
Come fare fuzzing con libfuzzer
Devi modificare il codice C; puoi ottenere il codice aggiornato da qui: https://github.com/hardik05/Damn_Vulnerable_C_Program/blob/master/dvcp_libfuzzer.c
1. Compila il programma usando il seguente comando:
clang -fsanitize=fuzzer,address,undefined -g dvcp_libfuzzer.c -o dvcp_libfuzzer
2. esegui questo comando per il fuzzing:
./dvcp_libfuzzer
Puoi vedere i video tutorial qui:
Playlist completa sul fuzzing:
https://www.youtube.com/watch?v=r7ucv2kN4j4&list=PLHGgqcJIME5kYhOSdJjvtVS4b4_OXDqM-
video singoli qui sotto:
Linux
LibAFL
[Fuzzing con libAFL] Come installare libAFL sul sistema e quali sono i diversi componenti? -> https://www.youtube.com/watch?v=ztGfxbvcrms
[Fuzzing con libAFL] Introduzione a libAFL ForkServer, esecuzione del fuzzer forkserver libAFL. -> https://www.youtube.com/watch?v=Ed1anYoGTyA
[Fuzzing con libAFL] Fuzzing del Damn Vulnerable C Program con il fuzzer forkserver libAFL -> https://www.youtube.com/watch?v=ad_4zroiS_g
[Fuzzing con libAFL] Uso della modalità shared memory con il fuzzer forkserver libAFL -> https://www.youtube.com/watch?v=GXD_qkISyfY
AFL++
[Fuzzing con AFLplusplus] Installazione di AFLplusplus e fuzzing di un semplice programma C -> https://www.youtube.com/watch?v=9wRVo0kYSlc
[Fuzzing con AFLplusplus] Come fare fuzzing di un binario senza codice sorgente su Linux in modalità persistent -> https://www.youtube.com/watch?v=LGPJdEO02p4
AFL
[Fuzzing con AFL] Come installare AFL su Ubuntu-> https://www.youtube.com/watch?v=r7ucv2kN4j4
[Fuzzing con AFL] Fuzzing di un semplice programma C con AFL -> https://www.youtube.com/watch?v=NiGC1jxFx78&t=66s
[Fuzzing con AFL] Trovare diversi tipi di vulnerabilità con AFL -> https://www.youtube.com/watch?v=m1RkShHzx_8&t=151s
[Fuzzing con AFL] Triaging dei crash con crashwalk e individuazione della causa principale con GDB -> https://www.youtube.com/watch?v=5R2gPkCXZkM
[Fuzzing con AFL] Fuzzing di un binario senza codice sorgente con AFL in modalità Qemu.-> https://www.youtube.com/watch?v=np3sLLFQs6I
Honggfuzz
[Fuzzing con honggfuzz] Fuzzing di un semplice programma C con HongFuzz -> https://www.youtube.com/watch?v=6OBXJtEe-d8
[Fuzzing con honggfuzz] Hongfuzz, checksec(pwntools), ASAN -> https://www.youtube.com/watch?v=Lr8pLQRTHac
Libfuzzer
[Fuzzing con libfuzzer] Come fare fuzzing di un semplice programma C usando LibFuzzer -> https://www.youtube.com/watch?v=hFva8kJQwnc&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp
[Fuzzing con libfuzzer, AFL] Come fare fuzzing del programma harness di libfuzzer usando AFL -> https://www.youtube.com/watch?v=HfEqm3TrfwM&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp&index=2
Come replicare le vulnerabilità di OpenSSL CVE-2022-3602 e CVE-2022-3786 e usare libfuzzer -> https://www.youtube.com/watch?v=vhTuXph1dtY
Radamsa
[Fuzzing con Radamsa] Fuzzing di un semplice programma C con Radamsa -> https://youtu.be/1FRsXVNpynQ
Windows
WinAFL
[Fuzzing con WinAFL] Fuzzing di un semplice programma C con WinAFL -> https://www.youtube.com/watch?v=Va_Wtxf3DMc
[Fuzzing con WinAFL] Cos'è una funzione di fuzzing e come assicurarsi che tutto funzioni correttamente? -> https://www.youtube.com/watch?v=HLORLsNnPzo
Mi servono altri harness per Windows per fare fuzzing con winafl
certo, guarda qui -> https://github.com/hardik05/winafl-harness
voglio provare qualcosa di diverso, magari alcuni mutatori diversi da quelli predefiniti di winafl...
sì, puoi provare questo -> https://github.com/hardik05/winafl-powermopt
ne caricherò altri man mano che li creo.
OSS-Fuzz di Google
Come funziona OSS-Fuzz: una guida al fuzz testing per progetti open source -> https://www.youtube.com/watch?v=OBxCDsJ-0aM
Perché l'hai creato?
Ci vuole molto tempo per i nuovi arrivati e anche per le persone esperte per capire i diversi tipi di vulnerabilità. Ho affrontato personalmente questo problema e ho deciso di condividere ciò che ho imparato.
Se impari qualcosa da questo, mandami un biglietto di ringraziamento. è tutto ciò che mi serve. Inoltre, se vuoi migliorare o correggere qualcosa, le pull request sono benvenute!
Autore?
Twitter: https://twitter.com/hardik05
Email: Scrivimi in DM su Twitter :)
Web: http://hardik05.wordpress.com
Feedback?
Suggerimenti e commenti sono sempre benvenuti. Se trovi un problema o hai una correzione o una nuova funzionalità, invia una pull request.