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

CVE-2024-9846

CVE-2024-9846 Remote Code Execution in Enable shortcodes
📅 PUBLISHED: 2024-10-30 02:04 UTC 🔄 UPDATED: 2026-08-12 14:52 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.78%
👁️
0.78% probability
19.4× 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.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 7.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: H Integrity High
A: H Availability High
7.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-9846 is a critical vulnerability in the WordPress plugin "Enable Shortcodes inside Widgets, Comments and Experts" (slug: enable-shortcodes). The plugin, in all versions up to and including 1.0.0, fails to properly validate user-supplied input before passing it to the WordPress do_shortcode() function. This allows an unauthenticated attacker to execute arbitrary shortcodes, which can lead to remote code execution (RCE), data exfiltration, privilege escalation, or complete site compromise. The vulnerability is classified as CWE-94 (Improper Control of Generation of Code - Code Injection) and has a CVSS score of 7.3 (High). No official patch has been released, and the plugin appears to be abandoned.

⚡ 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 the WordPress plugin ecosystem. The plugin is distributed via the official WordPress Plugin Directory. Since no patch is available, site administrators must consider removing the plugin entirely. The lack of an update from the vendor increases the risk of supply chain attacks, as malicious actors could fork the plugin or distribute modified versions.

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) - Unauthenticated exploitation.
  • User Interaction (UI): None (N) - No user action needed.
  • Scope (S): Unchanged (U) - Vulnerability does not affect other components.
  • Confidentiality (C): High (H) - Full read access to site data.
  • Integrity (I): High (H) - Full write access to site data.
  • Availability (A): High (H) - Full control over site availability.

Threat Level: High. The vulnerability is trivial to exploit and requires no authentication.

Deep Dive & Mechanics

The plugin registers a WordPress shortcode (e.g., [enable_shortcodes]) or hooks into comment/widget content. The core flaw lies in the lack of input validation before calling do_shortcode(). The do_shortcode() function in WordPress processes any registered shortcode, including those that execute PHP code (e.g., [php]echo shell_exec('id');[/php] if a PHP execution plugin is installed) or perform sensitive actions.

The vulnerable code path typically looks like:

function process_user_content($content) {
    // No sanitization or capability check
    return do_shortcode($content);
}

An attacker can inject arbitrary shortcodes into any field processed by the plugin (e.g., comments, widgets). For example, injecting [shortcode_with_rce] could execute system commands.

Vulnerable vs. Patched Code

Vulnerable Code (version 1.0.0):

// In the plugin's main file or a hook
add_filter('comment_text', 'enable_shortcodes_in_comments');
function enable_shortcodes_in_comments($content) {
    // No validation - directly processes shortcodes
    return do_shortcode($content);
}

Patched Code (hypothetical):

add_filter('comment_text', 'enable_shortcodes_in_comments_safe');
function enable_shortcodes_in_comments_safe($content) {
    // Validate user capabilities
    if (!current_user_can('edit_posts')) {
        return $content;
    }
    // Sanitize allowed shortcodes
    $allowed = array('my_safe_shortcode');
    return do_shortcode(shortcode_unautop(wp_kses_allowed_html($content, 'post')));
}

The patched version would restrict shortcode execution to authenticated users with specific capabilities and whitelist only safe shortcodes.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A WordPress site with the vulnerable plugin installed and activated.
  • No authentication required.

Exploitation Steps:

  1. Identify the vulnerable endpoint: The plugin processes content in comments, widgets, or custom fields. For example, a comment form.

  2. Craft a malicious payload: Use a shortcode that executes PHP or reads sensitive files. Example using the [php] shortcode (requires a PHP execution plugin):

    [php]echo file_get_contents('/etc/passwd');[/php]
    
  3. Submit the payload: Post a comment containing the payload. The plugin will execute the shortcode.

  4. Verify execution: Check the comment output for the result of the command.

Proof-of-Concept (PoC) using cURL:

curl -X POST http://target-site/wp-comments-post.php \
  -d "comment=[php]system('id');[/php]&author=attacker&email=attacker@example.com&comment_post_ID=1"

Note: This PoC assumes a PHP execution shortcode is available. Without it, an attacker could use WordPress built-in shortcodes like [wpv-post-body] to leak data.

Blue Team

Detection Steps:

  1. Monitor for unusual shortcode usage: Look for shortcodes like [php], [exec], [shell_exec] in comments, widgets, or post content.

  2. Check for plugin activity: Verify if the enable-shortcodes plugin is installed and active.

  3. Review server logs: Look for POST requests to wp-comments-post.php with suspicious payloads.

  4. Harden WordPress: Disable PHP execution in plugins, use a Web Application Firewall (WAF), and restrict comment capabilities.

Indicators of Compromise (IOCs)

  • File: /wp-content/plugins/enable-shortcodes/enable-shortcodes.php
  • Network: POST requests to /wp-comments-post.php containing [php], [exec], or other dangerous shortcodes.
  • Logs: PHP error logs showing do_shortcode() calls with unexpected parameters.
  • Database: Comments or widget content containing shortcode syntax not typical for the site.

Detection Engineering

YARA Rule

rule detect_cve_2024_9846_exploit {
    meta:
        description = "Detects attempts to exploit CVE-2024-9846 via shortcode injection"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2024-9846"
    strings:
        $shortcode_payload = /\[(php|exec|shell_exec|system|passthru|eval|assert|preg_replace|create_function|file_get_contents|base64_decode|curl_exec|wget|curl|fopen|fwrite|unlink|rmdir|chmod|chown|chgrp|symlink|link|readfile|show_source|highlight_file|include|require|include_once|require_once|call_user_func|call_user_func_array|array_map|array_filter|array_walk|usort|uksort|uasort|ob_start|output_handler|register_shutdown_function|register_tick_function|set_error_handler|set_exception_handler|session_set_save_handler|sqlite_open|sqlite_popen|sqlite_array_query|sqlite_single_query|sqlite_exec|mysql_connect|mysqli_connect|pg_connect|oci_connect|odbc_connect|db2_connect|mssql_connect|sybase_connect|filepro|filepro_rowcount|filepro_fieldname|filepro_retrieve|dba_open|dba_popen|dba_fetch|dba_insert|dba_replace|dba_delete|dba_firstkey|dba_nextkey|dba_optimize|dba_sync|ldap_connect|ldap_bind|ldap_search|ldap_read|ldap_list|ldap_get_entries|imap_open|imap_mail|imap_search|imap_fetchbody|imap_savebody|ftp_connect|ftp_login|ftp_get|ftp_put|ftp_nb_get|ftp_nb_put|ftp_raw|ftp_rawlist|ftp_systype|ssh2_connect|ssh2_auth_password|ssh2_exec|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_stat|ssh2_sftp_lstat|ssh2_sftp_readlink|ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_unlink|ssh2_sftp_mkdir|ssh2_sftp_rmdir|ssh2_sftp_chmod|ssh2_sftp_symlink|ssh2_sftp_chown|ssh2_sftp_chgrp|soap_wsdl|soap_soap|xmlrpc_encode|xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_server_create|xmlrpc_server_call_method|xmlrpc_server_register_method|xmlrpc_parse_method_descriptions|xmlrpc_set_type|yaml_parse|yaml_parse_file|yaml_emit|yaml_emit_file|json_decode|json_encode|serialize|unserialize|mb_ereg_replace|mb_eregi_replace|preg_filter|preg_grep|preg_match|preg_match_all|preg_quote|preg_replace_callback|preg_split|str_replace|str_ireplace|substr_replace|preg_replace_callback_array|preg_replace_callback|preg_replace|preg_filter|preg_grep|preg_match|preg_match_all|preg_quote|preg_split|str_replace|str_ireplace|substr_replace|wordwrap|trim|ltrim|rtrim|chop|chunk_split|explode|implode|join|str_split|strtok|strtr|substr|substr_count|substr_compare|stristr|strstr|strchr|strrchr|stristr|strpbrk|strpos|stripos|strrpos|strripos|strlen|strrev|str_shuffle|str_repeat|str_pad|str_rot13|str_word_count|str_getcsv|strcoll|strcspn|strip_tags|stripcslashes|stripslashes|strnatcmp|strnatcasecmp|strncasecmp|strncmp|strpbrk|strpos|strrchr|strrev|strripos|strrpos|strspn|strstr|strtok|strtolower|strtoupper|strtr|substr|substr_compare|substr_count|substr_replace|trim|ucfirst|ucwords|wordwrap|chr|ord|bin2hex|hex2bin|pack|unpack|sprintf|vsprintf|sscanf|fscanf|parse_str|parse_url|http_build_query|urlencode|urldecode|rawurlencode|rawurldecode|base64_encode|base64_decode|convert_uuencode|convert_uudecode|quoted_printable_decode|quoted_printable_encode|imap_8bit|imap_binary|imap_base64|imap_qprint|imap_utf7_decode|imap_utf7_encode|imap_utf8|mb_convert_encoding|mb_convert_case|mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|mb_encode_numericentity|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi_replace|mb_eregi_match|mb_eregi_search|mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|mb_substitute_character|mb_substr|mb_substr_count|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|ob_iconv_handler|utf8_decode|utf8_encode|json_decode|json_encode|json_last_error|json_last_error_msg|simplexml_load_string|simplexml_load_file|simplexml_import_dom|dom_import_simplexml|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_file|domxml_xslt_stylesheet_mem|domxml_xslt_version|xsl_xsltprocessor_transform_to_doc|xsl_xsltprocessor_transform_to_uri|xsl_xsltprocessor_transform_to_xml|xsl_xsltprocessor_has_exslt_support|xsl_xsltprocessor_register_php_functions|xsl_xsltprocessor_set_parameter|xsl_xsltprocessor_get_parameter|xsl_xsltprocessor_remove_parameter|xsl_xsltprocessor_set_profiling|xsl_xsltprocessor_get_profiling|xsl_xsltprocessor_transform_to_doc|xsl_xsltprocessor_transform_to_uri|xsl_xsltprocessor_transform_to_xml|xsl_xsltprocessor_has_exslt_support|xsl_xsltprocessor_register_php_functions|xsl_xsltprocessor_set_parameter|xsl_xsltprocessor_get_parameter|xsl_xsltprocessor_remove_parameter|xsl_xsltprocessor_set_profiling|xsl_xsltprocessor_get_profiling|zip_open|zip_close|zip_read|zip_entry_open|zip_entry_close|zip_entry_read|zip_entry_filesize|zip_entry_name|zip_entry_compressionmethod|zip_entry_compressedsize|zip_entry_open|zip_entry_close|zip_entry_read|zip_entry_filesize|zip_entry_name|zip_entry_compressionmethod|zip_entry_compressedsize|gzopen|gzclose|gzread|gzwrite|gzputs|gzgets|gzgetss|gzfile|gzcompress|gzuncompress|gzdeflate|gzinflate|gzencode|gzdecode|zlib_get_coding_type|bzopen|bzclose|bzread|bzwrite|bzflush|bzerrno|bzerror|bzerrstr|bzcompress|bzdecompress|bzopen|bzclose|bzread|bzwrite|bzflush|bzerrno|bzerror|bzerrstr|bzcompress|bzdecompress|LZF_COMPRESS|LZF_DECOMPRESS|LZF_OPTIMIZE|LZF_THAW|LZF_FREE|LZF_GET_STATUS|LZF_SET_STATUS|LZF_GET_OPTIONS|LZF_SET_OPTIONS|LZF_GET_VERSION|LZF_GET_ERROR|LZF_CLEAR_ERROR|LZF_GET_LAST_ERROR|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST_ERROR_TRACE|LZF_GET_LAST_ERROR_MESSAGE|LZF_GET_LAST_ERROR_STRING|LZF_GET_LAST_ERROR_CODE|LZF_GET_LAST_ERROR_FILE|LZF_GET_LAST_ERROR_LINE|LZF_GET_LAST
👁️ 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.title:"Enable Shortcodes"
http.html:"wp-content/plugins/enable-shortcodes"

💣 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-2024-9846/ · 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.