7-PHP代码审计——wordpress插件漏洞分析

   日期:2024-12-27    作者:b1254887 移动:http://mip.riyuangf.com/mobile/quote/64043.html

目录

7-PHP代码审计——wordpress插件漏洞分析

1. wordpress插件漏洞

3. Ultimate Produce Catalogue插件SQL注入漏洞

 3. Site Editor插件本地文件包含漏洞 


 

1. wordpress插件漏洞

wordpress本身的安全性是比较完善的,通常安全审计中大部分的漏洞都是来自wordpress安装的第三方插件,wordpress并不保证这些插件的安全性,因为第三方插件都是由其他的开发者编写的,插件的安全性取决于开发者的水平和安全意识,毕竟每个开发者的安全意识是不一样的。

因此在进行wordpress漏洞挖掘的时候,从插件入手分析是一个不错的选择。

 

在分析wordpress插件漏洞的环境以及用到的插件

Ultimate Produce Catalogue4.2.2插件的sql注入

site-editor1.1.1插件的本地文件包含

本次实验环境使用的是WordPress 4.9版本

 

Ultimate Produce Catalogue插件SQL注入漏洞实验环境的POC

/wp-admin/admin-ajax.php?action=get_upcp_subcategories

CatID=0 UNION SELECT 1,user()

CatID=0 UNION SELECT user_login,user_pass from wp_users where id=1

 

3. Ultimate Produce Catalogue插件SQL注入漏洞

 

搭建好漏洞环境后,登录wordpress后台后,在左侧点击插件---> 安装插件

 

 

安装插件的时候选择zip格式的文件,安装完成后启用插件

 

安装完插件后需要登录用户账号,然后访问http://www.test2.com/wp-admin/admin-ajax.php?action=get_upcp_subcategories,并提交数据

Post data中是一段sql注入代码,查询当前数据库的用户,点击Execute提交数据后,后台返回了数据库的用户名信息。

 

接着我们就可以构造sql注入语句爆出用户名和密码,但是密码是经过加密的

 

 

接下来我们分析插件产生漏洞的原因。

先找到wordpress的插件的目录,找到安装的插件ultimate-product-catalogue,再定位到get_upcp_subcategories函数(路径为plugins遖ate-product-catalogueFunctionsProcess_Ajax.php

 

get_upcp_subcategories函数具体实现

 

get_upcp_subcategories函数内部只接收了一个CatID数据,而CatID中的数据就是我们提交的sql注入语句,代码中没有对CatID中的内容进行任何安全过滤,直接将CatID拼接到sql语句中执行,将查询到的数据库用户名保存到$SubCategories变量中。

 

漏洞修复:对传入的数据进行预处理再拼接成sql语句

 

 

 3. Site Editor插件本地文件包含漏洞 

 

poc:

/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/https://blog.csdn.net/qq_35733751/test.txt

 

Site Editor插件的安装方式和前面的一样。如果提示文件过大,把Site Editor插件解压到wp-contentplugins目录下,然后在wordpress的后台的插件一栏中启用Site Editor。

 

利用site editor插件的本地文件包含漏洞通过https://blog.csdn.net/qq_35733751/article/来读取test.txt文本的内容,最终构造的url格式

把test.txt文件名进行替换就可以读取其它文件,例如读取wp-config.php

 

 

 

接下来我们分析Site Editor插件的本地文件包含漏洞产生的原因。找到pluginssite-editoreditorextensionspagebuilderincludesajax_shortcode_pattern.php文件

 

我们可以看到上面的代码只是对ajax_path参数中的内容进行了简单的判断,并没有做任何安全校验,这才导致了本地文件包含漏洞。

 

 


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号