
CVE-2023-33381: inyección de comandos del sistema operativo en MitraStar GPT-2741GNAC
Al iniciar sesión por SSH, noté inmediatamente el conjunto limitado de comandos y opciones disponibles. Resultó evidente que estaba confinado a un entorno de shell restringido.

Después de explorar varias vulnerabilidades conocidas, decidí profundizar en la búsqueda de nuevas. Para empezar, inicié sesión en el portal administrativo y comencé a probar diversas funcionalidades que podrían resultar en inyección de comandos del sistema operativo. Dentro del menú de Diagnóstico, me encontré con una característica particular que me permitía probar la conectividad mediante los comandos ping y traceroute.


Así que decidí probar algo astuto añadiendo un carácter ";" a mi comando. Ejecuté "cat /etc/passwd" y, ¿adivina qué? El comando se ejecutó correctamente.

Fui un paso más allá y ejecuté el comando "sed" para reemplazar la entrada de shell restringido en el archivo "/etc/passwd" por un shell interactivo completo.

Como se ilustra claramente en la imagen siguiente, las modificaciones que realicé me permitieron iniciar sesión y ejecutar libremente comandos como "uname" y "cat".

Como tenía privilegios de administrador completos, no pude resistirme a profundizar para descubrir el componente vulnerable. Al inspeccionar las peticiones del navegador, noté algo interesante. Había dos archivos CGI, "ping.cgi" y "DiagGeneral.cgi", que eran el objetivo de las peticiones.

Después de obtener los archivos, me divertí un poco con la ingeniería inversa usando Ghidra. Esta es la parte interesante: en el archivo "ping.cgi", noté que el parámetro PingIPAddr se tomaba directamente de la entrada del usuario sin una sanitización adecuada. El parámetro PingIPAddr obtenido de la entrada del usuario se almacenaba para su uso futuro mediante la función tcapi_set.

Por último, en el archivo DiagGeneral.cgi, el parámetro PingIPAddr se recuperaba mediante la función tcapi_get y luego se usaba directamente en la función system sin sanitización. Esta falla crea una vulnerabilidad de inyección de comandos, lo que permite la ejecución no autorizada de comandos arbitrarios en el sistema.
