
POC da CVE-2023-35086 apenas DoS
25 de julho de 2023, Altin (tin-z), github.com/tin-z
Os firmwares dos roteadores ASUS RT-AX56U V2 e RT-AC86U, em versões iguais ou inferiores a 3.0.0.4.386_50460 e 3.0.0.4_386_51529, respectivamente, possuem uma vulnerabilidade de format string na função detwan.cgi do serviço httpd que pode causar execução de código quando um atacante constrói dados maliciosos. A vulnerabilidade afeta também outros dispositivos ASUS que utilizam o serviço httpd. Leia aqui para mais detalhes.
referências:
A vulnerabilidade permite alcançar RCE; no entanto, o PoC apenas alcança DoS, principalmente porque o firmware foi emulado com QEMU e, portanto, a stack é diferente do dispositivo real. Pré-requisitos:
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

A vulnerabilidade é acionada ao fazer GET ou POST para a URI /detwan.cgi e fornecer uma format string especial como argumento ao parâmetro HTTP action_mode.
Ao abrir o binário httpd no Ghidra, podemos ver a string "do_detwan_cgi" referenciada pelo endereço 0x492c4

O decompilador decompõe a função sem mostrar tudo, mas os pontos interessantes já estão lá:
FUN_0001b70c extrai o parâmetro action_modelogmessage_normal é uma função externa exposta pela libshared
O código-fonte de logmessage_normal pode ser encontrado no firmware asuswrt-merlin, especificamente no arquivo asuswrt-merlin/release/src/router/shared/misc.c, e, como pode ser observado, ele salva o conteúdo de action_mode dentro da variável local buf, que por sua vez é usada na chamada syslog

A syslog da libc suporta format strings, então aqui está a raiz da vulnerabilidade
