# WordPress Plugin – AutoSuggest sql注入
======================================
一、漏洞简介
————
WP
AutoSuggest这款插件在访问者输入关键字时,插件会在提交搜索查询之前通过AJAX请求在网页中显示一些建议。访问者可以通过按Enter继续搜索,或者访问者可以使用键盘箭头直接访问建议的帖子。
二、漏洞影响
————
三、复现过程
————
首先我们得进入exploit-db网站上下载这个存在漏洞的版本的插件原始码和本地构建WordPress网站(本地构建WordPress这里就不说了)。下载源码,如下图所示
![](/static/qingy/WordPress_Plugin_-_AutoSuggest_sql注入/img/rId24.png)
下载完成之后,把wp-autosuggest目录直接拖到Wordpress目录的\\wp-content\\plugins\\下。
![](/static/qingy/WordPress_Plugin_-_AutoSuggest_sql注入/img/rId25.png)
接着,登录后台,启用这款插件,如下图所示:
![](/static/qingy/WordPress_Plugin_-_AutoSuggest_sql注入/img/rId26.png)
启用后,退出后台,如下图所示:
![](/static/qingy/WordPress_Plugin_-_AutoSuggest_sql注入/img/rId27.png)
然后根据exploit-db网站上给出的漏洞详情,我们访问下面的URL:
http://www.0-sec.org/wp-content/plugins/wp-autosuggest/autosuggest.php?wpas_action=query&wpas_keys=1
访问后,网页内容如下图所示:
![](/static/qingy/WordPress_Plugin_-_AutoSuggest_sql注入/img/rId28.png)
根据exploit-db网站上给出的漏洞详情,我们也知道了wpas\_keys参数存在注入,于是我们可以使用SQLMAP注入神器,对网站进行注入。SQLMAP命令如下:
sqlmap.py -u “http://www.0-sec.org/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的环境,结果复现不了,头疼了半天,如下图:
![](/static/qingy/WordPress_Plugin_-_AutoSuggest_sql注入/img/rId29.png)
后来笔者换了一个php-5.4.45+Apache的环境,就解决了。
![](/static/qingy/WordPress_Plugin_-_AutoSuggest_sql注入/img/rId30.png)
通过SQLMAP,成功获取到服务器的一些信息,如下图所示:
![](/static/qingy/WordPress_Plugin_-_AutoSuggest_sql注入/img/rId31.png)
下图也成功跑出了当前数据库的名称。
![](/static/qingy/WordPress_Plugin_-_AutoSuggest_sql注入/img/rId32.png)
### 漏洞分析
分析WordPress插件的话还是挺容易的。文件和代码也不是很多,用Notepad++就够用啦。进入插件根目录下面就看到了autosuggest\_functions.php、autosuggest.php这两个php文件。
![](/static/qingy/WordPress_Plugin_-_AutoSuggest_sql注入/img/rId34.png)
下面是autosuggest.php文件所有代码:
‘;
global $wpdb;
$wpas_keys = str_replace(‘ ‘,’%’,$wpas_keys);
$pageposts = $wpdb->get_results(“SELECT * FROM $wpdb->posts WHERE (post_title LIKE ‘%$wpas_keys%’) AND post_status = ‘publish’ ORDER BY post_date DESC”);
foreach ($pageposts as $post) {
setup_postdata($post);
echo “
the_title();
echo “
}
echo ‘‘;
die();
}
define(‘AUTOSUGGEST_DIR’, get_option(‘siteurl’) . ‘/’ . PLUGINDIR.’/’.dirname(plugin_basename(__FILE__)));
function add_autosuggest_css() {
wp_register_style(‘autosuggestCSS’, AUTOSUGGEST_DIR . ‘/css/wp_autosuggest.css’, null, ‘1’, ‘screen’);
wp_enqueue_style(‘autosuggestCSS’);
}
function add_autosuggest_js() {
wp_register_script(‘autosuggestJS’, AUTOSUGGEST_DIR . ‘/js/wp.autosuggest.js’, null, ‘1’);
wp_enqueue_script(‘autosuggestJS’);
}
function add_autosuggest_footer_code() {
?>
WP AutoSuggest settings updated.