CVE-2019-25690
Executive Summary
CVE-2019-25690 is an unauthenticated SQL injection vulnerability in the Kados R10 GreenBee application. The flaw exists in the mng_profile_id parameter, allowing remote attackers to inject arbitrary SQL commands. Successful exploitation can lead to unauthorized access to sensitive database information, including user credentials and application data. No official patch has been released, and no public proof-of-concept (PoC) code is available at this time. The vulnerability is classified under CWE-89 (SQL Injection) and aligns with MITRE ATT&CK tactic T1190 (Exploit Public-Facing Application).
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
CVSS Breakdown & Threat Level
The CVSS score is listed as 0.0, which is likely a placeholder. Based on the nature of the vulnerability (unauthenticated SQL injection), a realistic CVSS v3.1 score would be 9.8 (Critical) with the following vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
- Attack Vector (AV): Network – The vulnerability is exploitable remotely.
- Attack Complexity (AC): Low – No special conditions are required.
- Privileges Required (PR): None – No authentication is needed.
- User Interaction (UI): None – No user action is required.
- Scope (S): Unchanged – The exploit does not affect other components.
- Confidentiality (C): High – Full database read access is possible.
- Integrity (I): High – Data can be modified or deleted.
- Availability (A): High – Database can be disrupted.
Deep Dive & Mechanics
The vulnerability resides in the mng_profile_id parameter, which is likely used to fetch or manage user profiles. The application fails to sanitize or parameterize user input before constructing SQL queries. An attacker can inject SQL commands by sending a crafted HTTP request to the vulnerable endpoint.
Example vulnerable request:
GET /profile?mng_profile_id=1' OR '1'='1 HTTP/1.1
Host: target.kados.local
The application might execute a query similar to:
SELECT * FROM profiles WHERE id = '1' OR '1'='1';
This would return all records from the profiles table, bypassing intended access controls. More advanced payloads can be used to enumerate database schema, extract credentials, or execute system commands (if the database supports it).
Vulnerable vs. Patched Code
Vulnerable Code (PHP example):
$id = $_GET['mng_profile_id'];
$query = "SELECT * FROM profiles WHERE id = '$id'";
$result = mysqli_query($conn, $query);
Patched Code (using prepared statements):
$id = $_GET['mng_profile_id'];
$stmt = $conn->prepare("SELECT * FROM profiles WHERE id = ?");
$stmt->bind_param("s", $id);
$stmt->execute();
$result = $stmt->get_result();
No official patch has been released by Kados. The above is a recommended fix.
Exploitation & Lab Setup
Red Team
Since no public exploit code is available, a manual SQL injection test can be performed. Use a tool like sqlmap to automate detection and exploitation.
Example sqlmap command:
sqlmap -u "http://target.kados.local/profile?mng_profile_id=1" --batch --dbs
Manual payload to test for vulnerability:
GET /profile?mng_profile_id=1' AND SLEEP(5)-- HTTP/1.1
Host: target.kados.local
If the response is delayed by 5 seconds, the parameter is vulnerable to time-based blind SQL injection.
Blue Team
To detect exploitation attempts, monitor for abnormal SQL keywords in HTTP parameters. The following Suricata rule can alert on common SQL injection patterns.
Suricata Rule:
alert http any any -> any any (msg:"CVE-2019-25690 - SQL Injection Attempt"; flow:to_server,established; content:"mng_profile_id"; http_uri; pcre:"/(\bUNION\b|\bSELECT\b|\bOR\b|\bAND\b|\bSLEEP\b|\bWAITFOR\b)/i"; sid:1000001; rev:1;)
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests containing
mng_profile_idwith SQL keywords (e.g.,UNION,SELECT,OR,AND,SLEEP). - Unusual response times (time-based injection).
- Database error messages in HTTP responses (e.g., "You have an error in your SQL syntax").
- HTTP requests containing
Host IOCs:
- Unexpected database queries in logs (e.g.,
SELECT * FROM information_schema.tables). - New or modified files in web directories (if file write is possible).
- Unauthorized database connections from the web server.
- Unexpected database queries in logs (e.g.,
Detection Engineering
YARA Rule
rule CVE_2019_25690_SQLi_Detection {
meta:
description = "Detects SQL injection attempts targeting CVE-2019-25690"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2019-25690"
strings:
$sqli1 = /mng_profile_id=.*(\bUNION\b|\bSELECT\b|\bOR\b|\bAND\b|\bSLEEP\b)/i
$sqli2 = /mng_profile_id=.*(\bWAITFOR\b|\bDELAY\b|\bBENCHMARK\b)/i
condition:
any of them
}
Sigma Rule
title: CVE-2019-25690 SQL Injection Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects SQL injection attempts against the mng_profile_id parameter in Kados R10 GreenBee.
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains: 'mng_profile_id'
cs-uri-query|re: '(\bUNION\b|\bSELECT\b|\bOR\b|\bAND\b|\bSLEEP\b|\bWAITFOR\b)'
condition: selection
falsepositives:
- Legitimate use of SQL keywords in parameter values (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2019-25690 - SQL Injection Attempt"; flow:to_server,established; content:"mng_profile_id"; http_uri; pcre:"/(\bUNION\b|\bSELECT\b|\bOR\b|\bAND\b|\bSLEEP\b|\bWAITFOR\b)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Since no official patch is available, the following mitigations are recommended:
- Input Validation: Implement strict input validation for the
mng_profile_idparameter. Accept only numeric values if the parameter is expected to be an integer. - Parameterized Queries: Rewrite all database queries using prepared statements or stored procedures to prevent SQL injection.
- Web Application Firewall (WAF): Deploy a WAF with rules to block SQL injection patterns.
- Least Privilege: Ensure the database user used by the application has minimal privileges (e.g., read-only access where possible).
- Monitor Logs: Enable detailed logging and monitor for suspicious SQL keywords in HTTP requests.
- Upgrade: Contact Kados for a patched version or consider migrating to an alternative solution.
Valters IT
{/* [Security Hash: B39BCF1226F161D93EF8F17F] */}