
PoC di CVE-2023-35086 solo DoS
25 luglio 2023, Altin (tin-z), github.com/tin-z
I firmware dei router ASUS RT-AX56U V2 e RT-AC86U di versione uguale o inferiore rispettivamente a 3.0.0.4.386_50460 e 3.0.0.4_386_51529 presentano una vulnerabilità di format string nella funzione detwan.cgi del servizio httpd che può causare esecuzione di codice quando un attaccante costruisce dati dannosi. La vulnerabilità colpisce anche altri dispositivi ASUS che utilizzano il servizio httpd. Leggi qui per maggiori dettagli.
riferimenti:
La vulnerabilità consente di ottenere RCE, mentre il PoC ottiene solo DoS, principalmente perché il firmware è stato emulato con QEMU e quindi lo stack è diverso dal dispositivo reale. Prerequisiti:
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 vulnerabilità viene attivata effettuando una GET o POST all'uri /detwan.cgi e fornendo una speciale format string come argomento al parametro HTTP action_mode.
Aprendo il binario httpd in Ghidra possiamo vedere la stringa "do_detwan_cgi" referenziata all'indirizzo 0x492c4

Il decompilatore scompone la funzione senza mostrare tutto, ma i punti interessanti sono già lì:
FUN_0001b70c estrae il parametro action_modelogmessage_normal è una funzione esterna esposta da libshared
Il codice sorgente di logmessage_normal si trova nel firmware asuswrt-merlin, specificamente nel file asuswrt-merlin/release/src/router/shared/misc.c, e come si può notare, salva il contenuto di action_mode nella variabile locale buf, che a sua volta viene usata nella chiamata a syslog

La libreria libc syslog supporta le format string, quindi qui c'è la radice della vulnerabilità
