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

CVE-2024-31366

CVE-2024-31366 Missing Authorization in Themify
📅 PUBLISHED: 2024-04-09 07:22 UTC 🔄 UPDATED: 2026-08-12 14:51 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.14%
👁️
0.14% probability
3.6× 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.
License: Commercial
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 7.1
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: L Confidentiality Low
I: L Integrity Low
A: L Availability Low
7.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-31366 is a Missing Authorization vulnerability in the Themify Post Type Builder (PTB) plugin for WordPress, affecting versions up to and including 2.0.8. This flaw allows unauthenticated attackers to bypass authorization checks and perform unauthorized actions, potentially leading to data exposure, modification, or privilege escalation within the WordPress ecosystem. The vulnerability is classified as a WordPress plugin security issue and does not involve the underlying web server (Apache/Nginx). With a CVSS score of 7.1 (High), it poses a significant risk to sites running the vulnerable plugin. No public exploit code or proof-of-concept is currently available, and the vendor has not released a patch.

⚡ 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 repository and third-party marketplaces. As a WordPress ecosystem component, it introduces supply chain risk through:

  • Unpatched dependency: Sites using PTB 2.0.8 or earlier are exposed until a fix is applied.
  • No official patch: The vendor has not addressed the issue, increasing reliance on manual mitigation or plugin removal.
  • Potential for exploitation: Although no public exploit exists, the missing authorization flaw could be chained with other vulnerabilities for broader impact.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
  • Base Score: 7.1 (High)
  • Attack Vector: Network (AV:N) – Exploitable remotely.
  • Attack Complexity: Low (AC:L) – No special conditions required.
  • Privileges Required: None (PR:N) – No authentication needed.
  • User Interaction: None (UI:N) – No victim action required.
  • Scope: Unchanged (S:U) – Impact confined to the vulnerable component.
  • Confidentiality Impact: Low (C:L) – Limited data exposure.
  • Integrity Impact: Low (I:L) – Limited data modification.
  • Availability Impact: Low (A:L) – Limited service disruption.

Threat Level: High. The low attack complexity and lack of authentication make this a prime target for automated scanning and exploitation once a proof-of-concept emerges.

Deep Dive & Mechanics

The vulnerability resides in the Post Type Builder (PTB) plugin, which allows users to create custom post types and taxonomies. The plugin fails to properly enforce authorization checks on certain AJAX actions or REST API endpoints, enabling unauthenticated attackers to:

  • Access or modify custom post type data.
  • Create, update, or delete posts of custom types.
  • Potentially escalate privileges if combined with other flaws.

The missing authorization (CWE-862) occurs because the plugin does not validate user capabilities before executing sensitive operations. This is a classic WordPress plugin vulnerability where current_user_can() checks are omitted or improperly implemented.

Attack Vector: An attacker sends crafted HTTP requests to vulnerable endpoints (e.g., /wp-admin/admin-ajax.php with specific actions) without authentication. The plugin processes these requests, assuming they are authorized.

Impact: Successful exploitation can lead to unauthorized data access, content manipulation, or further compromise of the WordPress site.

Vulnerable vs. Patched Code

Since no official patch exists, the vulnerable code remains in version 2.0.8 and earlier. The following is a hypothetical example of the missing authorization:

Vulnerable Code (hypothetical)

add_action('wp_ajax_nopriv_ptb_save_post', 'ptb_save_post_handler');
function ptb_save_post_handler() {
    // No capability check
    $post_data = $_POST['ptb_data'];
    // Process and save post
    wp_insert_post($post_data);
}

Patched Code (hypothetical)

add_action('wp_ajax_nopriv_ptb_save_post', 'ptb_save_post_handler');
function ptb_save_post_handler() {
    if (!current_user_can('edit_posts')) {
        wp_die('Unauthorized', 403);
    }
    $post_data = $_POST['ptb_data'];
    // Process and save post
    wp_insert_post($post_data);
}

The patched version adds a capability check using current_user_can('edit_posts') before processing the request.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A WordPress site with PTB plugin version 2.0.8 or earlier.
  • Network access to the target.

Exploitation Steps:

  1. Identify vulnerable endpoints by analyzing the plugin's AJAX actions (e.g., ptb_save_post, ptb_delete_post).
  2. Send a crafted POST request to /wp-admin/admin-ajax.php with the action parameter and required data.
  3. Example using curl:
    curl -X POST http://target.com/wp-admin/admin-ajax.php \
      -d "action=ptb_save_post&ptb_data[post_type]=custom&ptb_data[post_title]=Malicious"
    
  4. Verify unauthorized access by checking if the post was created without authentication.

Note: No public exploit code is available; this is a hypothetical demonstration.

Blue Team

Detection:

  • Monitor for unusual AJAX requests to /wp-admin/admin-ajax.php with PTB-specific actions from unauthenticated users.
  • Look for HTTP 200 responses to requests that should require authentication.
  • Analyze server logs for patterns like action=ptb_* without a valid session.

Hunting:

  • Search for unauthorized custom post type entries created by unknown users.
  • Review plugin file integrity for modifications.

Mitigation:

  • Disable or remove the PTB plugin until a patch is available.
  • Implement a Web Application Firewall (WAF) rule to block unauthenticated requests to PTB AJAX actions.
  • Use a WordPress security plugin to enforce capability checks.

Indicators of Compromise (IOCs)

  • Network:
    • HTTP POST requests to /wp-admin/admin-ajax.php with action=ptb_* parameters from unauthenticated sources.
    • Unusual ptb_data payloads in request bodies.
  • File:
    • Unexpected custom post type entries in the database.
    • Modified plugin files (e.g., wp-content/plugins/themify-ptb/*.php).
  • Log:
    • Repeated 200 responses to AJAX requests without prior authentication.
    • User agent strings associated with automated exploitation tools.

Detection Engineering

YARA Rule

rule CVE_2024_31366_PTB_Missing_Auth {
    meta:
        description = "Detects exploitation attempts for CVE-2024-31366 in Themify PTB plugin"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-31366"
    strings:
        $ajax_action = "action=ptb_" nocase
        $ptb_data = "ptb_data" nocase
        $admin_ajax = "/wp-admin/admin-ajax.php" nocase
    condition:
        all of them
}

Sigma Rule

title: CVE-2024-31366 - Themify PTB Missing Authorization Exploitation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthenticated AJAX requests targeting Themify PTB plugin
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: '/wp-admin/admin-ajax.php'
        cs-uri-query|contains: 'action=ptb_'
        sc-status: 200
    condition: selection
falsepositives:
    - Legitimate authenticated requests (rare)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2024-31366 - Themify PTB Missing Authorization Exploitation";
    flow:to_server,established;
    content:"POST"; http_method;
    content:"/wp-admin/admin-ajax.php"; http_uri;
    content:"action=ptb_"; http_client_body;
    classtype:attempted-admin;
    sid:1000001;
    rev:1;
    reference:cve,2024-31366;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin: Deactivate and delete the Themify Post Type Builder plugin until a patch is released.
  2. Implement WAF rules: Block unauthenticated requests to /wp-admin/admin-ajax.php containing action=ptb_*.
  3. Monitor logs: Review access logs for exploitation attempts.

Long-term Fix:

  • Contact the vendor for a patched version or consider alternative plugins.
  • Apply the principle of least privilege to all WordPress plugins.
  • Regularly update plugins and core.

Workaround:

  • Add a custom function to your theme's functions.php to enforce capability checks:
    add_action('init', function() {
        if (defined('DOING_AJAX') && DOING_AJAX) {
            if (isset($_POST['action']) && strpos($_POST['action'], 'ptb_') === 0) {
                if (!current_user_can('edit_posts')) {
                    wp_die('Unauthorized', 403);
                }
            }
        }
    });
    

Valters IT
Securing Digital Frontiers

👁️ 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:"Post Type Builder"
http.html:"wp-content/plugins/themify-ptb"

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