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-2026-42536-PoC — Heap-basierte Pufferüberlauf-Schwachstelle in Apache HTTP Server mit mod_xml2enc, xml2StartParse und nicht vertrauenswürdigem Inhalt | Kitploit
Tools/GitHubGitHub/erberkan/cve-2026-42536-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPapers & Forschung
GitHuberberkan/cve-2026-42536-poc

CVE-2026-42536-PoC

Heap-basierte Pufferüberlauf-Schwachstelle in Apache HTTP Server mit mod_xml2enc, xml2StartParse und nicht vertrauenswürdigem Inhalt

Repository anzeigen
vor 5h 2mNoch nicht geprüft
Webseite

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-42536: Apache HTTP Server mod_xml2enc Heap Overflow PoC

Dieser PoC-Code ist Teil des Blogbeitrags unter https://erberkan.github.io/2026/Patch_Diffing_and_N-Day_Defense/ .

Dieses Repository enthält einen kontrollierten Proof of Concept für CVE-2026-42536, einen heap-basierten Out-of-Bounds-Write im Modul mod_xml2enc des Apache HTTP Server. Betroffen sind die Apache HTTP Server Versionen 2.4.0 bis 2.4.67; Version 2.4.68 enthält den Upstream-Fix.

Das demonstrierte Ergebnis ist eine Speicherbeschädigung, gefolgt von einem Absturz eines Apache-Workers. Wiederholte Auslösungen können zu einem Denial of Service führen. Dieser PoC demonstriert nicht Remote Code Execution, Privilegieneskalation oder eine Reverse Shell.

Sicherheitshinweis

Dieser PoC sendet absichtlich Inhalte, die einen Apache-Worker zum Absturz bringen können. Führen Sie ihn nur in einer wegwerfbaren, isolierten Umgebung aus, die Ihnen gehört oder die Sie ausdrücklich testen dürfen. Richten Sie ihn nicht auf Produktions- oder Drittsysteme.

Das Skript erlaubt standardmäßig nur den Loopback-Betrieb. Der Remote-Betrieb erfordert das explizite Flag --allow-remote, aber dieses Flag ist kein Ersatz für eine Autorisierung.

Ursache

xml2StartParse kann mod_xml2enc anweisen, Bytes vor dem konfigurierten Startelement zu überspringen. In Apache HTTP Server 2.4.67 verschiebt fix_skipto() den Zeiger des Ausgabepuffers und reduziert die Menge gültiger Daten, reduziert jedoch nicht die Ausgabekapazität um denselben Offset:

root@kitploit:~
ctx->bytes -= (p - ctx->buf);
ctx->buf = p;

Die spätere Zeichensatz-Konvertierung erhält daher eine Kapazität, die von der ursprünglichen Allokation aus gemessen wird, obwohl ctx->buf nun innerhalb dieser Allokation zeigt. Der PoC macht diese Diskrepanz beobachtbar, indem er Folgendes kombiniert:

  • Ein 2.048-Byte-Präfix, das durch xml2StartParse html übersprungen wird.
  • Einen Content-Type, der charset=windows-1252 deklariert.
  • Wiederholtes Byte 0x80, das von einem CP1252-Byte auf die dreistufige UTF-8-Kodierung des Euro-Zeichens expandiert.

Die expandierende Konvertierung verbraucht die veraltete Kapazität und kann über den tatsächlich verbleibenden Speicherplatz nach dem vorgerückten Zeiger hinaus schreiben.

Apache 2.4.68 behebt den Abrechnungsfehler, indem der übersprungene Offset von ctx->bblen subtrahiert wird:

root@kitploit:~
 ctx->bytes -= (p - ctx->buf);
+ctx->bblen -= (p - ctx->buf);
 ctx->buf = p;

Erforderliche Topologie

Der PoC verwendet zwei HTTP-Komponenten:

root@kitploit:~
poc.py client -> vulnerable Apache front end -> payload backend in poc.py

Apache muss die folgenden Module laden:

root@kitploit:~
filter
proxy
proxy_http
xml2enc

Verwenden Sie die folgende Konfiguration nur in einem isolierten Apache-2.4.67-oder-älter-Lab:

root@kitploit:~
Listen 127.0.0.1:18080

<VirtualHost 127.0.0.1:18080>
    ProxyRequests Off

    ProxyPass        /cve-2026-42536/ http://127.0.0.1:18081/
    ProxyPassReverse /cve-2026-42536/ http://127.0.0.1:18081/

    <Location /cve-2026-42536/>
        SetOutputFilter xml2enc
        xml2StartParse html
    </Location>
</VirtualHost>

Die Standardkonfiguration erwartet, dass poc.py im selben Host oder Container-Netzwerk-Namespace wie Apache läuft. Port 18081 ist das Payload-Backend; Anfragen müssen an die gefilterte Apache-Route auf Port 18080 gesendet werden.

Verwendung

Starten Sie die verwundbare Apache-Instanz und führen Sie dann den PoC vom selben wegwerfbaren Host oder Container aus:

root@kitploit:~
python3 poc.py

Die Standardwerte entsprechen:

root@kitploit:~
python3 poc.py \
  --host 127.0.0.1 \
  --port 18080 \
  --path /cve-2026-42536/ \
  --backend-bind 127.0.0.1 \
  --backend-port 18081 \
  --skip 2048 \
  --expand 12288 \
  --attempts 3

Für ein autorisiertes Zwei-Maschinen-Lab machen Sie das Payload-Backend von Apache aus erreichbar und aktualisieren Sie ProxyPass/ProxyPassReverse, um die Lab-IP des Angreifers zu verwenden. Binden Sie dann das Backend und richten Sie es explizit auf die Lab-Apache-Adresse:

root@kitploit:~
python3 poc.py \
  --host VICTIM_LAB_IP \
  --port 18080 \
  --backend-bind 0.0.0.0 \
  --backend-port 18081 \
  --allow-remote

Legen Sie den Backend-Port nicht über das isolierte Testnetz hinaus offen.

Verifikation

Überwachen Sie Apache während der Ausführung des PoC. Je nach Build und Prozessmanager kann eine Client-Anfrage fehlschlagen, zurückgesetzt werden oder Teildaten zurückgeben, während der übergeordnete Prozess den abgestürzten Worker ersetzt.

Typische Belege aus dem getesteten verwundbaren Build umfassten:

root@kitploit:~
AH01434  character-set conversion selected
AH01428  skipped to the first configured element
AH01441  conversion performed
AH00052  child process exited on signal 11 (SIGSEGV)

Bei einer systemd-verwalteten Installation:

root@kitploit:~
sudo journalctl -u apache2 -f

Für einen Docker-Container im Vordergrund:

root@kitploit:~
docker logs -f CONTAINER_NAME

Ein Wechsel der Worker-PID kann ein zusätzliches Signal liefern:

root@kitploit:~
watch -n 0.5 'pgrep -a httpd || pgrep -a apache2'

Ein Transportfehler allein ist kein Beweis für die Schwachstelle. Bestätigen Sie den Absturz im Apache-Fehlerprotokoll, im System-Journal, in der Sanitizer-Ausgabe oder in einem Core-Dump.

Negativkontrolle

Wiederholen Sie dieselbe Anfrage gegen Apache HTTP Server 2.4.68 mit denselben Modulen und derselben Virtual-Host-Konfiguration. Das Payload-Backend sollte die Anfrage weiterhin erhalten, aber der Apache-Worker sollte am Leben bleiben, weil die Ausgabekapazität zusammen mit dem vorgerückten Zeiger reduziert wird.

Wiederherstellung

Wenn der übergeordnete Prozess den Worker nicht automatisch ersetzt, starten Sie nur den wegwerfbaren Lab-Dienst neu:

root@kitploit:~
sudo systemctl restart apache2

oder starten Sie den wegwerfbaren Container neu:

root@kitploit:~
docker restart CONTAINER_NAME

Referenzen

  • Apache HTTP Server 2.4 vulnerabilities
  • NVD entry for CVE-2026-42536
  • GitHub Advisory Database entry
Tool herunterladen