freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

WordPress Daily Prayer Time plugin SQL注入漏洞(CVE-2022-0785 )
2022-07-07 16:35:29
所属地 海外

1.项目介绍

WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。

WordPress最近爆出的漏洞都是大多数都是由于WordPress Plugin中应用插件出现的问题,在Daily Prayer Time< 2022.03.01版本中存在未授权SQL注入漏洞,在2022.03.01版本中开发者将该漏洞修复。

2.代码对比

通过代码对比工具发现在新版本中调用了Wordpress中的sanitize_text_field()过滤函数对传入的内容进行过滤

3.代码分析

首先我们将存在漏洞的插件进行安装

安装成功后该插件会在下方显示

我们随便抓一个安装插件包就可以发现,通过WordPress安装插件功能发现在安装插件时会注册以插件名为后缀的ajax请求接口,以便后续插件功能的调用。

这里在数组中定义了很多请求参数, 上述的 install-plugin就在其中。

如果传入的action值在数组中,就对下面的Ajax请求接口进行注册。

如上通过代码对比我们发现get_monthly_timetable()函数存在可控参数monthdisplay,我们全局搜索get_monthly_timetable函数,发现该函数被成功注册为ajax请求,也就意味着我们可以直接通过action调用该函数,而且在未授权的还是在未授权的状态下。

dpt.js中也可以明显看到请求的具体参数

继续分析其调用链,在get_monthly_timetable()函数中将参数month传入实例化对象NEW MonthlyTimeTable()中并触发构造方法从而进行内存空间分配,跟进MonthlyTimeTable

month传入getMonthlyCalendar()`函数中,继续跟进。

getMonthlyCalendar()函数最上面将DatabaseConnection类实例化,调用类中的getPrayerTimeForMonth()函数,其实到这步已经要将传入的SQL语句去执行了。继续跟进

getPrayerTimeForMonth()中将传入的$monthNumber也就是month拼接到SQL语句中,最后传入get_results()函数中进行简单SQL语句检测,但并不影响后续的执行。继续跟进

get_results()函数中调用check_safe_collation()函数进行SQL语句检测,但只是针对功能性以及编码进行检测,并不影响传入SQL语句的执行。

完整的调用链如下:

4.复现

拼接的参数直接带到数据库中执行

5.总结

本次针对代码层面对漏洞进行分析,在WordPress中很多组件其实都存在类似的问题,发现问题的方法也是相同的,在文章中就不过多赘述,本文章环境以及组件有需要可添加文后gzh。如果有对代码审计感兴趣的小伙伴也可以关注作者公众号(不懂代码的匹夫),该gzh只发布PHP、Java代码审计的相关内容,期待志同道合的小伙伴一起学习进步!
# WordPress漏洞 # 代码审计
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录