
Laboratorio basato su Docker per riprodurre la CVE-2021-41773 (Apache HTTP Server 2.4.49) tramite path traversal controllato e divulgazione di file utilizzando un PoC Python personalizzato.
Riproduzione di CVE-2021-41773, una vulnerabilità di path traversal in Apache HTTP Server 2.4.49.
Questo progetto utilizza Docker per creare un ambiente vulnerabile isolato e un PoC Python per dimostrare la divulgazione controllata di file.
Sicurezza: il PoC accetta solo target
localhost,127.0.0.1o::1. I test devono rimanere all'interno del laboratorio isolato.
Questo progetto dimostra:
La dimostrazione si concentra sulla divulgazione di file piuttosto che sull'esecuzione remota di codice.
CVE-2021-41773-Apache-Lab/
│
├── docker/
│ ├── Dockerfile
│ ├── httpd-vulnerable.conf
│ └── secret.txt
│
├── exploit/
│ └── exploit.py
│
├── screenshots/
│ ├── 01-docker-container.png
│ ├── 02-apache-version.png
│ └── 03-successful-exploit.png
│
├── report/
│ └── CVE-2021-41773-Exploit-Report.pdf
│
├── requirements.txt
├── .gitignore
└── README.md
Il PoC utilizza esclusivamente la libreria standard di Python e non richiede pacchetti Python di terze parti.
Dalla radice del repository:
docker build -t cve-2021-41773-lab ./docker
docker run --rm --name cve-2021-41773-lab \
-p 127.0.0.1:8080:80 \
cve-2021-41773-lab
Mantieni questo terminale aperto.
Il servizio Apache è esposto solo tramite:
127.0.0.1:8080
In un altro terminale:
docker ps
Il container dovrebbe mostrare:
127.0.0.1:8080->80/tcp
docker exec cve-2021-41773-lab httpd -v
Previsto:
Server version: Apache/2.4.49 (Unix)
curl http://127.0.0.1:8080/
Dovrebbe essere restituita la pagina di test di Apache.
Il PoC si trova in:
exploit/exploit.py
Esegui:
python3 exploit/exploit.py
Il target predefinito è:
http://127.0.0.1:8080
Il file di prova predefinito è:
/lab/secret.txt
Un'esecuzione riuscita produce:
[+] Vulnerability reproduced.
[+] Controlled file disclosure confirmed.
Il PoC mostra quindi il contenuto del file di laboratorio controllato.
Il PoC verifica innanzitutto che il target sia un indirizzo locale:
localhost
127.0.0.1
::1
Costruisce quindi un percorso contenente componenti di traversal codificate:
/cgi-bin/.%2e/.%2e/.%2e/.%2e/lab/secret.txt
La richiesta viene inviata tramite il modulo socket standard di Python. Questo offre al PoC un controllo diretto sul percorso della richiesta HTTP.
Il server Apache 2.4.49 vulnerabile elabora il percorso appositamente modificato e restituisce il contenuto di:
/lab/secret.txt
Il recupero di questo file conferma la path traversal e la divulgazione controllata di file.
CVE: CVE-2021-41773
Prodotto: Apache HTTP Server
Versione interessata dimostrata: 2.4.49
Tipo di vulnerabilità: Path Traversal / Divulgazione di file
CVE-2021-41773 è una vulnerabilità di path traversal in Apache HTTP Server 2.4.49. Un URL appositamente costruito può aggirare le restrizioni di percorso previste e consentire l'accesso a file al di fuori della directory attesa.
In determinate configurazioni, la vulnerabilità può avere conseguenze più gravi. Questo progetto dimostra deliberatamente la divulgazione controllata di file in un ambiente Docker isolato.
Gli screenshot raccolti durante i test sono salvati in:
evidence/
Le prove includono:
La mitigazione principale consiste nell'aggiornare Apache HTTP Server a una versione corretta.
Ulteriori misure difensive includono:
Security Advisory di Apache HTTP Server: https://httpd.apache.org/security/vulnerabilities_24.html
National Vulnerability Database NIST: https://nvd.nist.gov/vuln/detail/CVE-2021-41773
Security Advisory CERT-EU: https://cert.europa.eu/publications/security-advisories/2021-054/
Questo progetto è destinato esclusivamente a formazione sulla sicurezza autorizzata e test di laboratorio controllati.
L'ambiente Docker e il PoC sono progettati per test locali. Non utilizzare il PoC contro sistemi che non possiedi o per i quali non hai esplicita autorizzazione a valutare.