警惕!OpenSTAManager API中“display”参数存在认证后SQL注入漏洞

本文详细分析了OpenSTAManager软件中的一个高危SQL注入漏洞(CVE-2025-65103)。该漏洞位于API的Manager.php文件中,攻击者通过操纵“display”参数,可在无需高权限的情况下执行任意SQL命令,导致数据泄露或系统被完全控制。

CVE-2025-65103:OpenSTAManager API中的认证后SQL注入漏洞

漏洞详情

概述

OpenSTAManager 中存在一个经身份验证的SQL注入漏洞。该漏洞允许任何用户(无论其权限级别如何)执行任意SQL查询。攻击者通过操纵API请求中的 display 参数,可以窃取、修改或删除数据库中的任何数据,从而导致系统被完全破坏。

详细信息

该漏洞位于 src/API/Manager.php 文件内的 retrieve() 方法中。来自 display GET 参数的用户输入未经适当的验证就被处理。代码会剥离输入字符串两端的方括号 [],用逗号分割字符串,然后将生成的每个元素直接传递给查询构建器的 selectRaw() 函数。

1
2
3
4
5
6
7
8
9
// 来自‘display’的用户输入未经净化即被使用。
$select = !empty($request['display']) ? explode(',', substr((string) $request['display'], 1, -1)) : null;

// ...

// 未净化的输入被直接传递给 `selectRaw()`。
foreach ($select as $s) {
    $query->selectRaw($s);
}

由于 selectRaw() 被设计用于执行原始的SQL表达式,它会执行 display 参数中提供的任何恶意SQL代码。

概念验证

  1. 以任意用户身份登录到 OpenSTAManager 实例。
  2. 导航至用户的个人资料页面以获取其个人 API 令牌。
  3. 使用此 API 令牌向 API 端点发送特制的 GET 请求。

基于时间的盲注测试:<your_host><your_token><resource_name> 替换为实际值。anagrafiche 是一个有效的资源名。

1
curl "http://<your_host>/openstamanager/api?token=<your_token>&resource=anagrafiche&display=[1,SLEEP(5)]"

服务器响应将延迟大约5秒,确认 SLEEP(5) 命令已被数据库执行。

影响

这是一个严重的SQL注入漏洞。任何经过身份验证的用户(即使权限最低)都可以利用此漏洞:

  • 从数据库窃取所有数据(例如,用户凭据、客户信息、发票、内部数据)。
  • 修改或删除数据,损害数据完整性。
  • 根据数据库用户的权限和系统配置,可能实现进一步的系统破坏。

参考信息

技术参数

软件包: devcode-it/openstamanager (Composer) 受影响版本: <= 2.9.4 已修复版本: 2.9.5

发布日期: 2025年11月19日 更新日期: 2025年11月19日 严重等级: 高危 CVSS 总体评分: 8.8 (高)

CVSS v3.1 基准指标:

  • 攻击向量:网络
  • 攻击复杂度:低
  • 所需权限:低
  • 用户交互:无
  • 范围:未改变
  • 机密性影响:高
  • 完整性影响:高
  • 可用性影响:高
  • 向量字符串: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

EPSS 评分: 0.034% (第9百分位数)

弱点(CWE): CWE-89 - SQL命令中使用的特殊元素未进行恰当中和(‘SQL注入’)

CVE ID: CVE-2025-65103 GHSA ID: GHSA-2jm2-2p35-rp3j 报告者: XY20130630

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计