WordPress Plugin AutoSuggest插件SQL注入复现与分析

二叶草 2020年1月12日21:13:11安全防范评论阅读模式

前言

由于笔者有个习惯,每天都会去网站上去逛逛。最近就看到了一个WordPress插件问题导致的SQL注入漏洞,抱着好奇的心,我就开始这个漏洞的复现与分析。

WP AutoSuggest简介

WP AutoSuggest 这款插件在访问者输入关键字时,插件会在提交搜索查询之前通过AJAX请求在网页中显示一些建议。访问者可以通过按Enter继续搜索,或者访问者可以使用键盘箭头直接访问建议的帖子。

漏洞复现

首先我们得进入exploit-db网站上下载这个存在漏洞的版本的插件源码和本地搭建WordPress网站(本地搭建WordPress这里就不说了)。下载源码,如下图所示:

WordPress Plugin AutoSuggest插件SQL注入复现与分析

下载完成之后,把wp-autosuggest目录直接拖到Wordpress目录的wp-contentplugins下。

WordPress Plugin AutoSuggest插件SQL注入复现与分析

接着,登录后台,启用这款插件,如下图所示:

WordPress Plugin AutoSuggest插件SQL注入复现与分析

启用后,退出后台,如下图所示:

WordPress Plugin AutoSuggest插件SQL注入复现与分析

然后根据exploit-db网站上给出的漏洞详情,我们访问下面的URL:

http://www.yourwebsite.com/wp-content/plugins/wp-autosuggest/autosuggest.php?wpas_action=query&wpas_keys=1

访问后,网页内容如下图所示:

WordPress Plugin AutoSuggest插件SQL注入复现与分析

根据exploit-db网站上给出的漏洞详情,我们也知道了wpas_keys参数存在注入,于是我们可以使用SQLMAP注入神器,对网站进行注入。SQLMAP命令如下:

sqlmap.py -u "http://www.yourwebsite.com/wp-content/plugins/wp-autosuggest/autosuggest.php?wpas_action=query&wpas_keys=1*" --technique BT --dbms MYSQL --risk 3 --level 5 --tamper space2comment

一开始,笔者使用的时php5.2.17+Apache的环境,结果复现不了,头疼了半天,如下图:

WordPress Plugin AutoSuggest插件SQL注入复现与分析

后来笔者换了一个php-5.4.45+Apache的环境,就解决了。

WordPress Plugin AutoSuggest插件SQL注入复现与分析

通过SQLMAP,成功获取到服务器的一些信息,如下图所示:

WordPress Plugin AutoSuggest插件SQL注入复现与分析

下图也成功跑出了当前数据库的名称。

WordPress Plugin AutoSuggest插件SQL注入复现与分析

漏洞分析

分析WordPress插件的话还是挺容易的。文件和代码也不是很多,用Notepad++就够用啦。进入插件根目录下面就看到了autosuggest_functions.php、autosuggest.php这两个php文件。

WordPress Plugin AutoSuggest插件SQL注入复现与分析

下面是autosuggest.php文件的部分代码:

<?php
include 'autosuggest_functions.php';

$wpas_action = '';
$wpas_keys = '';
if(isset($_GET['wpas_action'])) {
    $wpas_action = $_GET['wpas_action'];
}
if (isset($_GET['wpas_keys'])) {
    $wpas_keys = $_GET['wpas_keys'];
}

相信大家没看几行就看出了问题的所在,变量wpas_keys是直接获取GET中的wpas_keys。一点都没过滤,并且在之后的代码中(由于篇幅所限,后面的代码未全部贴出),变量wpas_keys也带入数据库中查询了(wpdb是wordpress操作数据库方法),于是SQL注入就产生了。

WordPress Plugin AutoSuggest插件SQL注入复现与分析

修复建议

1、写过滤函数,如使用正则表达式过滤传入的参数。

2、对PHP进行安全配置。等等。

  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 加入Q群
  • QQ扫一扫
  • weinxin
二叶草

发表评论