★且听安全★-点关注,不迷路!
★漏洞空间站★-优质漏洞资源和小伙伴聚集地!
有小伙伴在漏洞空间站私信我求 CVE-2022-1281 漏洞分析,周末正好有时间就完整进行了研究,漏洞本身比较简单。如果大家长期跟着公众号中WordPress 系列漏洞文章进行研究的话,相信对其代码结构和调试技巧都会比较熟悉。另外如果大家对一些漏洞的话题感兴趣,也可以加入漏洞空间站进行交流。
Photo Gallery 是一个拥有 30 万以上安装量的主流 WordPress 插件:
WordPress Photo Gallery 插件 v1.6.3 以下版本存在匿名 SQL 注入漏洞 ,编号 CVE-2022-1281。
WordPress 安装过程可以参考之前公众号的文章。下载 Photo Gallery 插件 v1.6.2 版本并完成安装:
首先进行补丁对比,其中位于 `frontendmodelsBWGModelGalleryBox.php` 中类 `BWGModelGalleryBox` 的函数 `get_image_rows_data` 的修改值得关注:
主要是对参数 `$filter_tags` 的数据类型进行了限制:
`$filter_tags` 来自于 HTTP 请求的参数 `filter_tag` ,接着往下看:
没有进行任何过滤检查,直接将 `$filter_tags` 拼接进入了 SQL 语句中,从而导致出现了注入漏洞。
下面搜索下函数 `get_image_rows_data` 被调用的情况:
经过分析,位于 `BWGViewGalleryBox#display` 中的调用值得关注。接着直接搜索 `BWGViewGalleryBox#display` 调用关系不太理想,先回过头看一下 Photo Gallery 插件的启动过程。在 `photo-gallery.php` 文件中通过 `add_actions` 函数注册了很多 WordPress Ajax 请求接口:
其中的 `wp_ajax_GalleryBox` 和前面分析的 `BWGViewGalleryBox` 从命名上看可能存在某种联系,重点进行分析,定位其处理函数 `frontend_ajax` :
请求接口将提交的 `action` 参数进行了限定,并且根据取值的不同分别加载不同的控制器类,当 `action` 为 `GalleryBox` 时,将加载 `BWGControllerGalleryBox.php` 文件,并调用其中的 `BWGControllerGalleryBox#execute` 函数,跟进:
接着调用 `BWGViewGalleryBox#display` 函数,正好与前面分析的 SQL 注入触发点连接起来了,构造出完整漏洞触发链。
根据上面的分析过程,我们构造请求可以匿名直接进入 `BWGViewGalleryBox#display` 函数并触发断点:
继续往下走:
完整的 SQL 查询语句如下:
单引号拼接进入了 SQL 语句,从而导致注入漏洞。
有兴趣交流漏洞完整分析过程的小伙伴,请加入我们的漏洞空间站-致力于打造优质漏洞资源和小伙伴聚集地!
由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。
★且听安全★-点关注,不迷路!
★漏洞空间站★-优质漏洞资源和小伙伴聚集地!
原文始发于微信公众号(且听安全):CVE-2022-1281 WordPress Photo Gallery 主流插件匿名 SQL 注入漏洞分析与复现