CVE-2019-25704
Executive Summary
CVE-2019-25704 is an unpatched SQL injection vulnerability in Kados R10 GreenBee, a product by Kados. The flaw exists in the filter_user_mail parameter, allowing unauthenticated attackers to inject arbitrary SQL commands. This can lead to full database compromise, including extraction of sensitive data and potential data manipulation. The vulnerability has a CVSS score of 0.0 (likely unassigned or placeholder), but based on the impact, it is critical. No public exploit code or patch is available, making this a high-risk zero-day for affected systems.
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 NPM, PyPI, Go, or Ruby packages. It affects a proprietary enterprise application (Kados R10 GreenBee). No supply chain component is involved.
CVSS Breakdown & Threat Level
- 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) – Vulnerability does not affect other components.
- Confidentiality (C): High (H) – Full database read access.
- Integrity (I): High (H) – Data can be modified or deleted.
- Availability (A): High (H) – Potential for denial of service via SQL manipulation.
Threat Level: Critical. Unauthenticated remote SQL injection with no patch available.
Deep Dive & Mechanics
The vulnerability is a classic SQL injection in the filter_user_mail parameter of Kados R10 GreenBee. The application likely constructs SQL queries by directly concatenating user input without proper sanitization or parameterized queries. An attacker can inject SQL statements by sending a crafted HTTP request to the vulnerable endpoint.
Example vulnerable request:
GET /some_endpoint?filter_user_mail=' OR '1'='1' --
This would modify the SQL query to return all records, bypassing authentication or filtering logic. More advanced payloads can extract data using UNION-based or blind SQL injection techniques.
The lack of a patch or vendor response indicates the product may be end-of-life or the vendor is unresponsive.
Vulnerable vs. Patched Code
Since no patch exists, there is no patched code to compare. The vulnerable code likely resembles:
Vulnerable (pseudocode):
$email = $_GET['filter_user_mail'];
$query = "SELECT * FROM users WHERE email = '$email'";
$result = mysqli_query($conn, $query);
Patched (hypothetical):
$email = mysqli_real_escape_string($conn, $_GET['filter_user_mail']);
$query = "SELECT * FROM users WHERE email = '$email'";
// Or use prepared statements:
$stmt = $conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
Exploitation & Lab Setup
Red Team
Lab Setup:
- Deploy a vulnerable instance of Kados R10 GreenBee (if available) or simulate the endpoint.
- Use a tool like Burp Suite or sqlmap to test injection.
Exploitation Steps:
- Identify the vulnerable parameter:
filter_user_mail. - Send a test payload to confirm injection:
GET /search?filter_user_mail=test' OR '1'='1 - Use UNION-based injection to extract data:
GET /search?filter_user_mail=' UNION SELECT 1,2,3,4,5 -- - For blind injection, use boolean-based or time-based techniques.
Example sqlmap command:
sqlmap -u "http://target/search?filter_user_mail=test" --batch --dbs
Blue Team
Detection:
- Monitor for SQL injection patterns in HTTP requests, especially the
filter_user_mailparameter. - Look for unusual characters like single quotes (
'), double dashes (--), or SQL keywords (UNION, SELECT, OR).
Hunting:
- Search logs for requests containing
filter_user_mailwith SQL syntax. - Correlate with database error messages or unusual query times.
Indicators of Compromise (IOCs)
- Network: HTTP requests to
/searchor similar endpoints withfilter_user_mailparameter containing SQL keywords. - Logs: Database error logs showing syntax errors or unexpected query results.
- File: No specific file IOCs; this is a network-based attack.
Example IOC (Suricata rule):
alert http any any -> any any (msg:"SQL Injection - filter_user_mail"; flow:to_server; content:"filter_user_mail"; nocase; pcre:"/filter_user_mail=.*['\"]/Ui"; sid:1000001; rev:1;)
Detection Engineering
YARA Rule
rule sql_injection_filter_user_mail {
meta:
description = "Detects SQL injection attempts targeting filter_user_mail parameter"
author = "Valters IT"
date = "2025-04-10"
strings:
$param = "filter_user_mail" nocase
$sqli1 = /filter_user_mail=.*['\"]/i
$sqli2 = /filter_user_mail=.*(UNION|SELECT|OR|AND)/i
condition:
$param and ($sqli1 or $sqli2)
}
Sigma Rule
title: SQL Injection via filter_user_mail Parameter
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects SQL injection attempts against Kados R10 GreenBee
logsource:
category: webserver
product: apache
detection:
selection:
c-uri|contains: "filter_user_mail"
c-uri|contains|all:
- "'"
- "OR"
- "UNION"
condition: selection
falsepositives:
- Legitimate use of single quotes in email addresses (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"SQL Injection - filter_user_mail parameter"; flow:to_server; content:"filter_user_mail"; nocase; pcre:"/filter_user_mail=.*['\"]/Ui"; classtype:web-application-attack; sid:1000002; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Isolate the affected system if possible.
- Implement a WAF rule to block requests containing SQL injection patterns in the
filter_user_mailparameter. - Disable the vulnerable endpoint if not critical.
Long-term:
- Upgrade to a patched version if the vendor releases one.
- Migrate to a different product if no patch is available.
- Code review all input handling; use parameterized queries.
Workaround:
- Add input validation to only allow alphanumeric characters and
@for email fields.
Valters IT
{/* [Security Hash: 107EA8843BBCEBA3644E340A] */}