目录
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参数中的内容进行了简单的判断,并没有做任何安全校验,这才导致了本地文件包含漏洞。