前言
由于笔者有个习惯,每天都会去网站上去逛逛。最近就看到了一个WordPress插件问题导致的SQL注入漏洞,抱着好奇的心,我就开始这个漏洞的复现与分析。
WP AutoSuggest简介
WP AutoSuggest 这款插件在访问者输入关键字时,插件会在提交搜索查询之前通过AJAX请求在网页中显示一些建议。访问者可以通过按Enter继续搜索,或者访问者可以使用键盘箭头直接访问建议的帖子。
漏洞复现
首先我们得进入exploit-db网站上下载这个存在漏洞的版本的插件源码和本地搭建WordPress网站(本地搭建WordPress这里就不说了)。下载源码,如下图所示:
下载完成之后,把wp-autosuggest目录直接拖到Wordpress目录的wp-contentplugins下。
接着,登录后台,启用这款插件,如下图所示:
启用后,退出后台,如下图所示:
然后根据exploit-db网站上给出的漏洞详情,我们访问下面的URL:
http://www.yourwebsite.com/wp-content/plugins/wp-autosuggest/autosuggest.php?wpas_action=query&wpas_keys=1
访问后,网页内容如下图所示:
根据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的环境,结果复现不了,头疼了半天,如下图:
后来笔者换了一个php-5.4.45+Apache的环境,就解决了。
通过SQLMAP,成功获取到服务器的一些信息,如下图所示:
下图也成功跑出了当前数据库的名称。
漏洞分析
分析WordPress插件的话还是挺容易的。文件和代码也不是很多,用Notepad++就够用啦。进入插件根目录下面就看到了autosuggest_functions.php、autosuggest.php这两个php文件。
下面是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注入就产生了。
修复建议
1、写过滤函数,如使用正则表达式过滤传入的参数。
2、对PHP进行安全配置。等等。
- 赞助本站
- 微信扫一扫
-
- 加入Q群
- QQ扫一扫
-
评论