
Explota la inyección SQL de Zabbix (CVE-2024-42327) para extraer la sesión de administrador y ejecutar comandos a través de la API, logrando una shell inversa.
_______ ________ ___ ____ ___ __ __ __ __ ___ ________ _____
/ ____/ | / / ____/ |__ \ / __ \__ \/ // / / // /|__ \|__ /__ \/__ /
/ / | | / / __/________/ // / / /_/ / // /_______/ // /___/ / /_ <__/ / / /
/ /___ | |/ / /__/_____/ __// /_/ / __/__ __/_____/__ __/ __/___/ / __/ / /
\____/ |___/_____/ /____/\____/____/ /_/ /_/ /____/____/____/ /_/
NSFOCUS CERT detectó que Zabbix publicó un aviso de seguridad y corrigió la vulnerabilidad de inyección SQL (CVE-2024-42327) del servidor Zabbix. Debido a la vulnerabilidad de inyección SQL en la clase CUser dentro de la función addRelatedObjects, los atacantes con permisos de usuario predeterminados o acceso a la API pueden llamar a la función CUser.get. Esto podría provocar un acceso no autorizado a información sensible o la ejecución de sentencias SQL arbitrarias. La puntuación CVSS es 9.9.
Este PoC explota esta vulnerabilidad de inyección SQL. Para el enfoque de inyección SQL basado en tiempo, necesitamos extraer la tabla de sesiones de la base de datos para determinar si el usuario Admin ha iniciado sesión. Este script proporciona un script multiproceso para acelerar la extracción de la sesión de administrador para una explotación posterior. Con el token de API del usuario administrador, procedemos a crear un elemento y luego podemos activar ese elemento. A continuación, obtenemos una shell inversa enviando un payload.
En resumen, esta herramienta extrae el ID de sesión de administrador (admin_session) mediante inyección SQL basada en tiempo usando la API de Zabbix y luego envía un comando de shell inversa al sistema objetivo usando este ID. Primero, el script recibe las credenciales del usuario, envía una solicitud de autenticación a la API de Zabbix y recibe el auth_token. Luego, extrae el ID de admin_session mediante inyección SQL. El ID de admin_session extraído se utiliza para recuperar los IDs de host e interfaz con la solicitud host.get a la API de Zabbix. Finalmente, se envía una solicitud item.create que contiene el comando de shell inversa con los IDs de host e interfaz obtenidos. De esta manera, se abre una shell inversa en el servidor objetivo y se establece una conexión.
