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

CVE-2024-43266

CVE-2024-43266 Authorization Bypass in Wpjobportal
📅 PUBLISHED: 2024-08-18 22:15 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.05%
👁️
0.05% probability
1.3× above the median CVE
Tier: LOW
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 5.4
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
5.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-43266 is an Authorization Bypass Through User-Controlled Key vulnerability (CWE-639) in the WordPress plugin WP Job Portal (wp-job-portal). This flaw allows an authenticated attacker with low privileges to manipulate a user-controlled key (likely a numeric ID or token) to access or modify resources belonging to other users, such as job applications, employer profiles, or candidate data. The vulnerability affects all versions up to and including 2.1.8. No official patch has been released, and no public exploit code or proof-of-concept is currently available. The CVSS score of 5.4 (Medium) reflects the need for authentication but the potential for unauthorized data access.

⚡ 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 resides in a WordPress plugin distributed via the official WordPress plugin repository. Users who installed the plugin via the WordPress admin dashboard or directly from the repository are affected. There is no known compromise of the plugin’s update channel or source code repository. The risk is limited to the plugin’s own insecure authorization logic.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – The vulnerability is exploitable remotely.
  • Attack Complexity (AC): Low (L) – No special conditions are required.
  • Privileges Required (PR): Low (L) – An attacker must have a valid user account (e.g., subscriber or candidate).
  • User Interaction (UI): None (N) – No victim interaction is needed.
  • Scope (S): Unchanged (U) – The vulnerable component and the impacted component are the same.
  • Confidentiality (C): Low (L) – Limited unauthorized data access.
  • Integrity (I): Low (L) – Limited unauthorized modification possible.
  • Availability (A): None (N) – No impact on availability.

Threat Level: Medium. The requirement for authentication reduces the attack surface, but the potential for data leakage or manipulation across user accounts is significant for a multi-tenant job portal.

Deep Dive & Mechanics

The vulnerability lies in the plugin’s failure to verify that a user-controlled parameter (e.g., application_id, employer_id, or candidate_id) belongs to the currently authenticated user. When processing requests to view or modify job applications, employer profiles, or candidate details, the plugin uses the provided ID directly in database queries without checking ownership.

Example vulnerable endpoint (hypothetical):

POST /wp-admin/admin-ajax.php?action=wpjobportal_ajax
&wpjobportal_task=get_application
&application_id=123

If the plugin does not validate that application_id belongs to the logged-in user, an attacker can enumerate IDs to access other users’ applications.

Root Cause: The plugin likely uses a function like get_application_by_id($application_id) without a subsequent WHERE user_id = current_user_id clause. This is a classic Insecure Direct Object Reference (IDOR) pattern.

Vulnerable vs. Patched Code

Since no patch is available, the following is a hypothetical comparison based on the vulnerability type.

Vulnerable Code (wp-job-portal/modules/job/views/job.php):

$application_id = sanitize_text_field($_POST['application_id']);
$application = $wpdb->get_row(
    $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wpjobportal_applications WHERE id = %d", $application_id)
);
// No ownership check

Patched Code (hypothetical):

$application_id = sanitize_text_field($_POST['application_id']);
$user_id = get_current_user_id();
$application = $wpdb->get_row(
    $wpdb->prepare(
        "SELECT * FROM {$wpdb->prefix}wpjobportal_applications WHERE id = %d AND user_id = %d",
        $application_id,
        $user_id
    )
);
// Ownership enforced

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A WordPress site with WP Job Portal <= 2.1.8 installed.
  • A valid low-privilege user account (e.g., subscriber or candidate).

Steps:

  1. Log in as the low-privilege user.
  2. Intercept a legitimate request to view a job application (e.g., using Burp Suite).
  3. Modify the application_id parameter to a different numeric value.
  4. Observe the response – if it returns another user’s application data, the vulnerability is confirmed.

Example cURL command:

curl -X POST 'https://target.com/wp-admin/admin-ajax.php' \
  -H 'Cookie: wordpress_logged_in_xxx=...' \
  -d 'action=wpjobportal_ajax&wpjobportal_task=get_application&application_id=456'

Blue Team (Detection & Hardening)

Detection:

  • Monitor for repeated requests to admin-ajax.php with varying application_id values from the same user.
  • Look for HTTP 200 responses returning data that does not match the user’s own profile.

Hardening (until patch is available):

  • Implement a Web Application Firewall (WAF) rule to block requests with suspicious ID patterns.
  • Use a WordPress security plugin to add extra authorization checks.
  • Restrict access to the plugin’s AJAX endpoints via .htaccess or server-level rules.

Indicators of Compromise (IOCs)

  • Network:
    • Repeated GET/POST requests to /wp-admin/admin-ajax.php with parameters like action=wpjobportal_ajax and wpjobportal_task=get_application or wpjobportal_task=get_employer.
    • Sequential or brute-forced numeric IDs in the application_id, employer_id, or candidate_id parameters.
  • Logs:
    • WordPress debug log entries showing database queries without user ID constraints.
    • Web server access logs with multiple admin-ajax.php requests from the same IP within a short time frame.
  • File:
    • Unauthorized access to plugin files (e.g., wp-content/plugins/wp-job-portal/) may indicate attempted code analysis.

Detection Engineering

YARA Rule

rule CVE_2024_43266_WP_Job_Portal_IDOR {
    meta:
        description = "Detects potential IDOR exploitation attempts against WP Job Portal"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2024-43266"
    strings:
        $ajax_action = "wpjobportal_ajax"
        $task_get = "wpjobportal_task=get_application" nocase
        $task_get2 = "wpjobportal_task=get_employer" nocase
        $task_get3 = "wpjobportal_task=get_candidate" nocase
        $id_param = /(application_id|employer_id|candidate_id)=\d+/
    condition:
        all of ($ajax_action, $task_get or $task_get2 or $task_get3, $id_param)
}

Sigma Rule

title: CVE-2024-43266 WP Job Portal IDOR Exploitation
id: 8a3f7c2e-5d1b-4a9f-8c6e-2b7d3f1a0e4c
status: experimental
description: Detects attempts to exploit Insecure Direct Object Reference in WP Job Portal
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access_combined
detection:
    selection:
        cs-uri-query|contains:
            - "wpjobportal_ajax"
            - "wpjobportal_task=get_application"
            - "wpjobportal_task=get_employer"
            - "wpjobportal_task=get_candidate"
    condition: selection
falsepositives:
    - Legitimate use of the plugin by administrators
level: medium

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2024-43266 WP Job Portal IDOR Attempt";
    flow:to_server,established;
    content:"wpjobportal_ajax"; http_uri;
    content:"wpjobportal_task=get_application"; http_uri;
    pcre:"/(application_id|employer_id|candidate_id)=\d+/";
    classtype:attempted-recon;
    sid:10000001;
    rev:1;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin if it is not critical to operations.
  2. Apply a virtual patch using a WAF to block requests with manipulated IDs.
  3. Monitor logs for signs of exploitation.

Long-Term Fix:

  • The vendor must release a patched version that implements proper authorization checks (e.g., verifying that the resource ID belongs to the current user).
  • Until then, consider replacing the plugin with an alternative that is actively maintained.

Workaround:

  • Add a custom filter in functions.php to intercept and validate AJAX requests:
add_action('wp_ajax_wpjobportal_ajax', function() {
    $user_id = get_current_user_id();
    $app_id = intval($_POST['application_id']);
    global $wpdb;
    $owner = $wpdb->get_var($wpdb->prepare(
        "SELECT user_id FROM {$wpdb->prefix}wpjobportal_applications WHERE id = %d",
        $app_id
    ));
    if ($owner != $user_id) {
        wp_die('Unauthorized', 403);
    }
}, 1);

Valters IT

👁️ 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:"WP Job Portal"
http.html:"wp-job-portal"

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