
CVE-2023-33381: OS command injection su MitraStar GPT-2741GNAC
Dopo aver effettuato l'accesso via SSH, ho subito notato il limitato insieme di comandi e opzioni disponibili. È diventato evidente che ero effettivamente confinato in un ambiente shell ristretto.

Dopo aver esplorato diverse vulnerabilità note, ho deciso di approfondire la ricerca di nuove. Per cominciare, ho effettuato l'accesso al portale amministrativo e ho iniziato a testare varie funzionalità che potrebbero potenzialmente portare a un'iniezione di comandi OS. Nel menu Diagnostic, mi sono imbattuto in una particolare funzionalità che mi permetteva di testare la connettività usando i comandi ping e traceroute.


Così, ho deciso di provare qualcosa di subdolo aggiungendo un carattere ';' al mio comando. Ho eseguito "cat /etc/passwd" e indovina un po'? Il comando è stato eseguito con successo.

Ho fatto un ulteriore passo avanti ed ho eseguito il comando "sed" per sostituire la voce della shell ristretta nel file "/etc/passwd" con una shell interattiva completa.

Come chiaramente illustrato nell'immagine qui sotto, le modifiche che ho apportato mi hanno permesso di accedere ed eseguire liberamente comandi come "uname" e "cat"

Dato che avevo privilegi di amministratore completi, non ho potuto resistere ad approfondire per scoprire il componente vulnerabile. Mentre ispezionavo le richieste del browser, ho notato qualcosa di interessante. C'erano due file CGI, "ping.cgi" e "DiagGeneral.cgi", che venivano presi di mira dalle richieste.

Dopo aver recuperato i file, mi sono divertito con il reverse engineering usando Ghidra. Ecco la parte interessante: nel file "ping.cgi", ho notato che il parametro PingIPAddr veniva preso direttamente dall'input dell'utente senza alcuna sanificazione adeguata. Il parametro PingIPAddr prelevato dall'input dell'utente veniva memorizzato per un uso futuro utilizzando la funzione tcapi_set.

Infine, nel file DiagGeneral.cgi, il parametro PingIPAddr veniva recuperato usando la funzione tcapi_get e poi utilizzato direttamente nella funzione system senza alcuna sanificazione. Questo difetto crea una vulnerabilità di iniezione di comandi, consentendo l'esecuzione non autorizzata di comandi arbitrari sul sistema.
