
POC de CVE-2023-35086 solo DoS
July 25 2023, Altin (tin-z), github.com/tin-z
Los firmwares de los routers ASUS RT-AX56U V2 y RT-AC86U, con versiones iguales o inferiores a 3.0.0.4.386_50460 y 3.0.0.4_386_51529 respectivamente, tienen una vulnerabilidad de formato de cadena en la función detwan.cgi del servicio httpd que puede causar ejecución de código cuando un atacante construye datos maliciosos. La vulnerabilidad afecta también a otros dispositivos ASUS que utilizan el servicio httpd. Lea aquí para más detalles.
referencias:
La vulnerabilidad permite lograr RCE, mientras tanto el PoC solo logra DoS, principalmente porque el firmware fue emulado con QEMU y por lo tanto la pila es diferente a la del dispositivo real. Requisitos previos:
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

La vulnerabilidad se activa al hacer GET o POST a la uri /detwan.cgi y pasar una cadena de formato especial como argumento al parámetro HTTP action_mode.
Al abrir el binario de httpd en Ghidra podemos ver la cadena "do_detwan_cgi" referenciada por la dirección 0x492c4

El descompilador descompone la función sin mostrarlo todo, pero los puntos interesantes ya están ahí:
FUN_0001b70c extrae el parámetro action_modelogmessage_normal es una función externa expuesta por libshared
El código fuente de logmessage_normal se puede encontrar en el firmware asuswrt-merlin, específicamente en el archivo asuswrt-merlin/release/src/router/shared/misc.c, y como se puede notar, guarda el contenido de action_mode en la variable local buf, que a su vez se usa en la llamada a syslog

La syslog de libc admite cadenas de formato, así que aquí está la raíz de la vulnerabilidad
