
Zabbix SQL 인젝션(CVE-2024-42327)을 악용하여 관리자 세션을 추출하고 API를 통해 명령을 실행하여 리버스 셸을 획득합니다.
_______ ________ ___ ____ ___ __ __ __ __ ___ ________ _____
/ ____/ | / / ____/ |__ \ / __ \__ \/ // / / // /|__ \|__ /__ \/__ /
/ / | | / / __/________/ // / / /_/ / // /_______/ // /___/ / /_ <__/ / / /
/ /___ | |/ / /__/_____/ __// /_/ / __/__ __/_____/__ __/ __/___/ / __/ / /
\____/ |___/_____/ /____/\____/____/ /_/ /_/ /____/____/____/ /_/
NSFOCUS CERT는 Zabbix가 보안 공지를 발표하고 Zabbix 서버의 SQL 인젝션 취약점(CVE-2024-42327)을 수정했음을 감지했습니다. addRelatedObjects 함수의 CUser 클래스에 있는 SQLi 취약점으로 인해, 기본 사용자 권한 또는 API 접근 권한을 가진 공격자는 CUser.get 함수를 호출할 수 있습니다. 이로 인해 민감한 정보에 대한 무단 접근이나 임의 SQL 문 실행이 발생할 수 있습니다. CVSS 점수는 9.9입니다.
이 PoC는 이 SQL 인젝션 취약점을 악용합니다. 시간 기반 SQL 인젝션 방식의 경우, Admin 사용자가 로그인되어 있는지 확인하기 위해 데이터베이스에서 sessions 테이블을 추출해야 합니다. 이 스크립트는 추가 악용을 위해 admin 세션 추출을 가속화하는 멀티스레드 스크립트를 제공합니다. Admin 사용자의 API 토큰을 사용하여 item을 생성한 후 해당 item을 트리거할 수 있습니다. 그런 다음 페이로드를 전송하여 리버스 셸을 획득합니다.
요약하자면, 이 도구는 Zabbix API를 사용한 시간 기반 SQL 인젝션으로 admin 세션 ID(admin_session)를 추출한 다음, 이 ID를 사용하여 대상 시스템에 리버스 셸 명령을 전송합니다. 먼저, 스크립트는 사용자의 자격 증명을 받아 Zabbix API에 인증 요청을 보내고 auth_token을 수신합니다. 그런 다음 SQL 인젝션을 사용하여 admin_session ID를 추출합니다. 추출된 admin_session ID는 Zabbix API에 대한 host.get 요청으로 호스트 및 인터페이스 ID를 검색하는 데 사용됩니다. 마지막으로, 리버스 셸 명령이 포함된 item.create 요청이 획득한 호스트 및 인터페이스 ID와 함께 전송됩니다. 이렇게 하여 대상 서버에서 리버스 셸이 열리고 연결이 설정됩니다.
