OpenEMR 项目中的路径遍历和拒绝服务(DoS)漏洞
文件中的易受影响函数: /openemr/custom/ajax_download.php
条件:
受影响版本: <5.0.2,已在 5.0.2 版本中修复。
此函数中的易受影响变量:fileName,攻击者可以控制该变量,且没有任何过滤和验证。
攻击者可以从服务器存储中下载任何(www-data 用户可读取的)文件。
如果所请求的文件对 www-data 用户可写,且目录 /var/www/openemr/sites/default/documents/cqm_qrda/ 存在,则该文件将被从服务器上删除。
目录不存在并不是大问题,因为攻击者可以创建它。上传函数 /openemr/controller.php?document&upload 中的变量 "higher_level_path" 允许我们提供存储文件的目录名称,如果该目录不存在(且 "patient_id" 变量为数字且大于 0),它将以 "700" 权限创建,并由 "www-data" 用户拥有。
这可能导致 DoS,因为攻击者可以删除服务器上的一些配置/php 脚本。
信息泄露。
拒绝服务。
P.S. 特别感谢 OpenEMR 团队的 Brady G. Miller 提供的快速响应和补丁