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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-73847-emlog-PoC — CVE-2026-73847 的 PoC - emlog AI 助手:从 CSRF 到 SQL 执行再到管理员接管(CVSS 6.8) | Kitploit
工具/GitHubGitHub/squeeze440/cve-2026-73847-emlog-poc
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试
GitHubsqueeze440/cve-2026-73847-emlog-poc

CVE-2026-73847-emlog-PoC

CVE-2026-73847 的 PoC - emlog AI 助手:从 CSRF 到 SQL 执行再到管理员接管(CVSS 6.8)

查看仓库

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
1023天前尚未审核
分享

CVE-2026-73847 — emlog AI 助手 CSRF → SQL 执行 → 管理员接管

关于 emlog pro 的 AI 助手 execute_tool 端点缺少 CSRF 保护的 PoC,它允许攻击者利用管理员已认证的会话,对站点数据库执行任意 SQL——包括完全接管管理员账户。

CVECVE-2026-73847
CNAGitHub
公告GHSA-v6wr-4x55-7qp5
CVSS 3.16.8 中危 — AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N
CWECWE-352 (CSRF)、CWE-1275 (SameSite 设置不当)、CWE-798 (硬编码写入确认字符串)
受影响版本emlog pro 2.6.23 及更早版本
致谢Dostxodjayev Abdullox (@squeeze440) — CVE 记录中的署名待更正,见下文

根本原因

emlog pro 的后台管理面板内置了一个 AI 助手,可通过 POST /admin/ai.php?action=execute_tool 代替管理员执行 SQL。多个问题叠加在这一端点上:

  1. 没有 CSRF 令牌。 admin/ 下所有其他破坏性操作文件都会先调用 LoginAuth::checkToken()(例如 admin/media.php:140),而 admin/ai.php 从未这样做。
  2. 认证仅依赖会话 Cookie(admin/ai.php:152、User::isAdmin())——没有 Origin/Referer 检查。
  3. 写入确认门槛是一个硬编码的公开字符串。 include/service/ai.php:594:if (trim($confirm_code) !== 'confirm')。任何伪造请求只需发送 confirm_code=confirm 即可。
  4. 只读 SQL 完全无需确认(include/service/ai.php:578,589)——仅凭一个已认证请求即可 SELECT 任意表。
  5. 只有 blog 表受写入保护(include/service/ai.php:591)—— 及其他所有表均可完全写入。

串联起来:来自管理员浏览器的一个伪造请求即可读取所有表(包括密码哈希),并写入除 blog 之外的所有表,包括直接覆盖 user.password。

PoC

第 1 部分 — 原始影响链(poc_raw_impact.sh)

将 SQL/认证绕过原语与 CSRF 投递问题分离开来。在你控制的本地实例上运行:

root@kitploit:~
./poc_raw_impact.sh http://TARGET admin '<adminpass>'

该脚本以 admin 身份登录,通过列别名绕过方式导出密码哈希,直接经由 user 表覆盖管理员密码,随后使用全新的 cookie jar 以攻击者选定的密码再次登录——证明只要有一个已认证请求到达该端点,即可实现完整账户接管。

攻击者使用被 SQL 覆盖的密码以 admin 身份登录,在全新、隔离的会话中进入已认证仪表盘

第 2 部分 — 真实跨站 CSRF 投递(poc_csrf.html)

用真实浏览器验证 SameSite 问题,而非凭空假设。从与目标不同的任意源托管 poc_csrf.html(不同的 IP 即可——Chrome 将不同的字面量 IP 视为不同站点),并让已登录的管理员在登录后约两分钟内打开它:

root@kitploit:~
python3 -m http.server 8888
# then point poc_csrf.html's form action at your target and get it opened

该表单在加载时自动提交,跨站 POST 一个伪造的 query_database 调用,并附带 confirm_code=confirm。

emlog 管理员登录页面 登录后的已认证管理员仪表盘 从独立源托管的攻击者页面源码 跨站 POST 命中原始 JSON 成功响应 注入的 CSRF 标记行在受害者自己的后台链接面板中可见

已实测验证:该伪造的跨站 POST 携带了管理员真实的认证 Cookie(sec-fetch-site: cross-site,Cookie 已附带),返回 200 {"code":0,"msg":"ok",...},且通过后续的一次已认证读取确认了注入行确实存在。约 48 分钟后,对同一个现已陈旧的 cookie jar 重复完全相同的请求则失败——未附带任何 Cookie,服务器返回了未认证重定向,从而证实约两分钟的 Lax+POST 窗口才是真正的限制条件(反映在 AC:H 中)。

影响

  • 完整数据库读取:所有表/列,包括密码哈希以及 emlog_options 中的任何机密(SMTP 凭据、API 密钥等)。
  • 完整数据库写入:除 blog 外的所有表,包括 user——可覆盖角色/密码/邮箱,已端到端演示为账户接管。
  • 仅影响 role=admin 的账户;writer/editor 会被 User::checkRolePermission() 阻止。这不是从低权限角色的提权——而是将管理员登录状态下的一次恶意链接点击,转化为对站点的完全、悄无声息的攻陷。

修复

在 execute_tool 中加入 LoginAuth::checkToken(),在认证 Cookie 上设置 SameSite=Strict,并将静态的 confirm_code 字符串替换为真正的每会话一次性令牌。完整的修复细节见安全公告。

披露时间线

  • 2026-07-31 — 根据 emlog 自带的 SECURITY.md,通过 GitHub Security Advisories 提交报告。
  • 2026-08-01 — 维护者发布安全公告并申请 CVE。
  • 2026-08-16 — GitHub(作为 CNA)分配了 CVE-2026-73847。

署名说明: 尽管 GHSA 本身已对报告者致谢并接受其提交,但作为 CNA 的 GitHub 在发布 CVE 记录时却没有附上 credits 条目。更正请求已于 2026-08-16 发送至 [email protected];若该记录得到更正,本 README 将随之更新。

免责声明

本内容在安全公告公开且 CVE 已分配之后发布,仅供防御/教育用途。请勿对你不拥有或未经明确授权测试的 emlog 实例运行本 PoC。

下载工具
user
  • 密码脱敏可通过列别名绕过。 脱敏逻辑仅匹配输出列名是否为字面量 password(include/service/ai.php:822-828)——SELECT password AS pwd_hash FROM user 会返回原始哈希。
  • 认证 Cookie 没有 SameSite 属性(include/lib/loginauth.php:99),Chrome 默认的“Lax+POST”宽限期(登录后大约前两分钟)成了该漏洞与可靠跨站投递之间的唯一屏障。