文章总结: 本文分析了WordPress插件SnowMonkeyForms存在的CVE-2026-1056未授权任意文件删除漏洞。该漏洞源于generate_user_dirpath函数对form_id参数校验不足,攻击者可通过构造特制HTTP头实现目录穿越删除服务器任意文件,严重时可导致RCE。文章详细剖析了漏洞原理及多种利用场景,建议尽快升级至12.0.4及以上版本进行修复。 综合评分: 88 文章分类: 漏洞分析,代码审计,WEB安全,漏洞POC,漏洞预警
【WordPress专题09】CVE-2026-1056 全网首发漏洞分析!未授权任意文件删除漏洞 POC及代码审计
原创
a1batr0ss a1batr0ss
天翁安全
2026年2月3日 17:03 江苏
免责声明:本公众号所发布的全部内容,包括但不限于技术文章、POC脚本、漏洞利用工具及相关测试环境,均仅限于合法的网络安全学习、研究和教学用途。所有人在使用上述内容时,应严格遵守中华人民共和国相关法律法规以及道德伦理要求。未经明确的官方书面授权,严禁将公众号内的任何内容用于未经授权的渗透测试、漏洞利用或攻击行为。 所有人仅可在自己合法拥有或管理的系统环境中进行本地漏洞复现与安全测试,或用于具有明确授权的合法渗透测试项目。所有人不得以任何形式利用公众号内提供的内容从事非法、侵权或其他不当活动。 如因违反上述规定或不当使用本公众号提供的任何内容,造成的一切法律责任、经济损失、纠纷及其他任何形式的不利后果,均由相关成员自行承担,与本公众号无任何关联。
不错过最新的漏洞POC
为保证您可以在第一时间接收到本公众号分享的漏洞复现及POC信息,建议您在公众号“天翁安全”主页界面将“天翁安全”设为星标。
专题介绍
本文为【WordPress专题】的第九篇文章,本专题详细介绍对WordPress框架中公开Or未公开漏洞的漏洞挖掘、代码审计分析及POC构造。
以小见大,通过个性的漏洞总结WordPress中漏洞的共性,实现对WordPress漏洞的全面掌握。
感兴趣的师傅们可以查看前八篇文章进行共同学习
- 【WordPress专题01】前台管理员账户创建漏洞(CVE-2025-4334)漏洞分析及POC
- 【WordPress专题02】CVE-2025-2563漏洞分析及POC
- 【WordPress专题03】遇到不按规范编写的插件如何进行代码审计?
- 【WordPress专题04】通过漏洞介绍构造CVE-2025-11457的POC
- 【WordPress专题05】CVE-2025-11499前台文件上传漏洞 全网首发POC及漏洞分析
- 【WordPress专题06】CVE-2025-13342 选项修改导致的管理员用户注册漏洞POC及漏洞分析
- 【WordPress专题07】一文搞懂 如何对WordPress进行漏洞探测
- 【WordPress专题08】全网首发POC及漏洞分析 CVE-2025-15403权限提升漏洞
漏洞介绍
本次选取了一个一周内,CVSS高达9.8的漏洞进行分析。
WordPress 的 Snow Monkey Forms 插件由于在
generate_user_dirpath函数中对文件路径验证不足,在所有版本直到并包括 12.0.3 都存在任意文件删除漏洞,这使得未经过身份验证的攻击者可以删除服务器上的任意文件,而当关键文件(例如 wp-config.php)被删除时,很容易导致远程代码执行。
还是先看看使用规模,Fofa上有17585条结果
注:本处所示内容仅用于证明插件使用数量之目的,不得用于任何违法或不当行为。若违反相关法律法规,由行为人自行承担全部法律责任。
漏洞分析
我们首先看到 wp-content/plugins/snow-monkey-forms/snow-monkey-forms.php中的注册的REST 路由,开始有一个 Csrf::validate_referer()的校验,但这个函数只是检查 HTTPREFERER 是否以 homeurl() 开头,伪造一下referer就行了。
permission_callback直接返回true,意味着无需登录即可访问
同时取了 $_SERVER['HTTP_X_SMF_FORMID']作为 $form_id,并传到View中
在View的构造函数中,通过一系列操作将使得后续可以利用 setting->get('form_id')引用 form_id
send()函数中首先获取一下 $method的值是input(当时创建View类时就指定了),接着执行 _send()函数
_send()函数中使用 Directory::generate_user_dirpath来创建路径
Directory::generate_user_dirpath中,首先获取到cookie中的 _snow-monkey-forms-token参数,接着和绝对路径(/var/www/html/wp-content/uploads/smf-uploads)组合;接着再和 form_id组合,形成最终的路径。
而这里并没有做校验,导致 form_id可以传入 ../来实现目录穿越。
路径组合完成后,使用两个函数将路径下文件删除。
漏洞复现
漏洞分析完成后,发现Github上已经有人上传了这个漏洞的POC,发现和我构造的POC不完全一样,但其实也能够“部分”成功利用。至于为什么是“部分”,我们稍后解释。
经过漏洞分析,我们从攻击者视角(无法查看WP后台)来讲解一下几种不同的利用方式
绝对路径已知,token未知
由于 path_join这个函数的特殊机制,如果第二个参数是绝对路径,那么直接使用这个绝对路径
所以如果我们 form_id使用绝对路径传入,也是可以成功构造删除路径的
而且由于直接使用了绝对路径,所以最后构造出的路径和token无关,所以我们也不需要知道token的值即可成功删除文件
POC详见文末 “CVE-2026-1056复现POC合集”
token已知,绝对路径未知
但其实很多情况下,绝对路径的值还是不太好猜测的,那么如果有token值也是可以的
Github现存的POC也是这样的,需要你知道token的值,但其实在攻击者的视角下,这个token的值甚至比绝对路径更难猜测。(该脚本默认已存在token值是poc12345)
token未知,绝对路径未知
如果token和绝对路径均未知,怎么办呢?这里给大家两个方法。
第一种也是最简单的方法,找一个有该插件的文件上传点的页面。
随意上传一个文件并抓包,这个token值便会创建
第二种方法,如果你不想慢慢去翻上传的界面,可以使用如下请求。修改 X-SMF-FORMID的值来查看返回字段,如果其中有file表单字段,记下其名称。
接着在本地随意创建一个poc.txt,再使用如下请求即可创建一个名为test02的token。创建完成后继续依照“token已知,绝对路径未知”部分继续利用即可。
POC详见文末 “CVE-2026-1056复现POC合集”
漏洞修复
修复核心在 Helper::sanitize_form_id这个函数
最终会到 _is_valid_form_id_format函数中,这个函数中限制了 form_id只能为数字
插件已经发布修复版本,升级到12.0.4及以上版本即可修复漏洞
知识星球
“CVE-2026-1056复现POC合集、CVE-2026-1056复现环境、CVE-2026-1056漏洞分析“现已全部发布至知识星球,大家可在知识星球内获取,自行搭建环境、学习复现、代码审计。
星球加入方式见文章底部二维码,欢迎加入交流和学习
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:天翁安全 a1batr0ss a1batr0ss《【WordPress专题09】CVE-2026-1056 全网首发漏洞分析!未授权任意文件删除漏洞 POC及代码审计》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论