Campcodes Online Recruitment System, SQL Injection, CVE-2025-5677 (Critical)

Listen to this Post

How CVE-2025-5677 Works

The vulnerability exists in Campcodes Online Recruitment Management System 1.0 within the `/admin/ajax.php?action=save_application` endpoint. The `position_id` parameter is improperly sanitized before being used in SQL queries, allowing attackers to inject malicious SQL code. When crafted payloads are sent via POST requests, the backend database executes unintended commands, potentially enabling data theft, authentication bypass, or system compromise. The flaw stems from missing input validation and insecure direct object reference. Remote exploitation is possible without authentication (PR:N in CVSS 4.0).

DailyCVE Form

Platform: Campcodes ORMS
Version: 1.0
Vulnerability: SQL Injection
Severity: Critical
Date: 06/10/2025

Prediction: Patch by 08/2025

What Undercode Say:

-- Exploit PoC (Sanitized)
POST /admin/ajax.php HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
action=save_application&position_id=1' AND (SELECT 1 FROM (SELECT(SLEEP(5)))a)--
Vulnerability Scanner Snippet
import requests
def check_sqli(url):
payload = {"action":"save_application","position_id":"1' AND 1=CONVERT(int,@@version)--"}
try:
r = requests.post(url, data=payload)
return "SQL" in r.text
except:
return False

Mitigation Commands:

WAF Rule for ModSecurity
SecRule ARGS:position_id "@detectSQLi" "id:1005677,deny,status:403"

Patch Analysis:

1. Use prepared statements:

$stmt = $conn->prepare("UPDATE applications SET position_id=? WHERE id=?");
$stmt->bind_param("ii", $_POST['position_id'], $app_id);

2. Input validation regex:

if (!preg_match('/^[0-9]+$/', $_POST['position_id'])) {
die("Invalid input");
}

Detection Analytics:

  • Monitor for abnormal POST request lengths (>500 chars) to `/admin/ajax.php`
    – Alert on sequential SQL error responses (500 status)
  • Baseline normal `position_id` values (typically 1-3 digits)

Post-Exploit Indicators:

1. Database log entries with concatenated queries

2. Unusual SELECT/UNION statements in HTTP logs

3. New admin users created via `xp_cmdshell`

Emergency Workaround:

location ~ /admin/ajax.php {
if ($args ~ "position_id=[^0-9]") { return 403; }
}

Sources:

Reported By: nvd.nist.gov
Extra Source Hub:
Undercode

Join Our Cyber World:

💬 Whatsapp | 💬 TelegramFeatured Image

Scroll to Top