代碼審計:bluecms 前臺ad_js.php注入復現

代碼審計:bluecms 前臺ad_js.php注入復現

bluecms

BlueCMS是一款專注於地方門戶網站建設解決方案,基於PHP+MySQL的技術開發,全部源碼開放。
復現版本爲bluecmsv1.6版本,各位可自行下載。

代碼審計

先使用Seay工具審計一波,根據關鍵代碼回溯。
在這裏插入圖片描述
工具顯示ad_js.php存在sql注入,我們打開代碼所在php文件進一步查看。
關鍵代碼:

$ad_id = !empty($_GET['ad_id']) ? trim($_GET['ad_id']) : '';
if(empty($ad_id))
{
	echo 'Error!';
	exit();
}

$ad = $db->getone("SELECT * FROM ".table('ad')." WHERE ad_id =".$ad_id);

可以看到ad_id參數通過get得到,判斷是否爲空,不爲空,則沒過濾地帶入getone函數進行查詢。
進到getone()函數中,看看有沒有過濾。

function getone($sql, $type=MYSQL_ASSOC){
    	$query = $this->query($sql,$this->linkid);
    	$row = mysql_fetch_array($query, $type);
    	return $row;
    }

可以看到沒有過濾,直接執行傳入的sql語句了。

漏洞復現

訪問漏洞所在鏈接,發現沒有任何回顯,查看源碼是空白頁面。

http://localhost/bluecms1.6/ad_js.php?ad_id=1

在這裏插入圖片描述
分析一下代碼邏輯,發現是缺少廣告信息所導致的,因爲我是本地搭建的新系統,後臺是沒有任何數據的。
那我們進入後臺給它一個廣告,看看會怎樣。(PS:把php調小一點,不然會出不來後臺,php5.2.17可以)
在這裏插入圖片描述
再次訪問漏洞鏈接,這下就有了內容。

http://localhost/bluecms1.6/ad_js.php?ad_id=1
http://localhost/bluecms1.6/ad_js.php?ad_id=2
http://localhost/bluecms1.6/ad_js.php?ad_id=1 and 1=1
http://localhost/bluecms1.6/ad_js.php?ad_id=1 and 1=2

在這裏插入圖片描述
在這裏插入圖片描述
通過返回內容的不同,可以判定具有sql漏洞。
放到sqlmap去跑就行了。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章