當前位置:
首頁 > 新聞 > WordPress Plugin AutoSuggest插件SQL注入復現與分析

WordPress Plugin AutoSuggest插件SQL注入復現與分析

前言


由於筆者有個習慣,每天都會去exploit-db網站上去逛逛。最近就看到了一個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進行安全配置。等等。


*本文作者:看不盡的塵埃,轉載請註明來自FreeBuf.COM



喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

PHP利用PCRE回溯次數限制繞過某些安全限制
看我如何反覆獲取到HackerOne的漏洞測試邀請

TAG:FreeBuf |