
PoC von CVE-2023-35086, nur DoS
- Juli 2023, Altin (tin-z), github.com/tin-z
Die Router-Firmware der ASUS RT-AX56U V2 und RT-AC86U mit Versionen kleiner oder gleich 3.0.0.4.386_50460 bzw. 3.0.0.4_386_51529 weist eine Format-String-Schwachstelle in der detwan.cgi-Funktion des httpd-Dienstes auf, die zu Codeausführung führen kann, wenn ein Angreifer bösartige Daten konstruiert. Die Schwachstelle betrifft auch andere ASUS-Geräte, die den httpd-Dienst verwenden. Lesen Sie hier für weitere Details.
Referenzen:
Die Schwachstelle ermöglicht die Erreichung von RCE, während der PoC nur DoS erreicht, hauptsächlich weil die Firmware mit QEMU emuliert wurde und daher der Stack sich vom realen Gerät unterscheidet. Voraussetzungen:
virtualenv --python=python3 .venv
source .venv/bin/activate
pip install hexdump
python poc_crash.py --HOST 127.0.0.1 --PORT 12234 --test
# output expected: [+] Target supports detwan.cgi
python poc_crash.py --HOST 127.0.0.1 --PORT 12234 --dos

Die Schwachstelle wird durch einen GET- oder POST-Request an die URI /detwan.cgi ausgelöst, wobei eine spezielle Format-Zeichenkette als Argument für den HTTP-Parameter action_mode übergeben wird.
Durch Öffnen des httpd-Binärs in Ghidra können wir die Zeichenkette "do_detwan_cgi" sehen, die von der Adresse 0x492c4 referenziert wird.

Der Decompiler zerlegt die Funktion, ohne alles anzuzeigen, aber die interessanten Punkte sind bereits vorhanden:
FUN_0001b70c extrahiert den Parameter action_modelogmessage_normal ist eine externe Funktion, die von libshared bereitgestellt wird
Der Quellcode von logmessage_normal befindet sich in der asuswrt-merlin-Firmware, genauer gesagt in der Datei asuswrt-merlin/release/src/router/shared/misc.c, und wie zu sehen ist, speichert er den Inhalt von action_mode in der lokalen Variable buf, die wiederum im Aufruf von syslog verwendet wird.

Die libc-Funktion syslog unterstützt Format-Zeichenketten, daher liegt hier die Wurzel der Schwachstelle.
