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

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

bluecms

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

代碼審計

先使用Seay工具審計一波,根據關鍵代碼回溯。
在這裏插入圖片描述
工具顯示comment.php獲取ip地址可僞造,我們打開代碼所在php文件進一步查看。
關鍵代碼:

$sql = "INSERT INTO ".table('comment')." (com_id, post_id, user_id, type, mood, content, pub_date, ip, is_check) 
 			VALUES ('', '$id', '$user_id', '$type', '$mood', '$content', '$timestamp', '".getip()."', '$is_check')";
 	$db->query($sql);

我們可以看到ip值通過getip()函數直接獲取,帶入sql語句執行。
去到getip()函數處,沒有過濾,可進行僞造。

function getip()
{
	if (getenv('HTTP_CLIENT_IP'))
	{
		$ip = getenv('HTTP_CLIENT_IP'); 
	}
	elseif (getenv('HTTP_X_FORWARDED_FOR')) 
	{ 
		$ip = getenv('HTTP_X_FORWARDED_FOR');
	}
	elseif (getenv('HTTP_X_FORWARDED')) 
	{ 
		$ip = getenv('HTTP_X_FORWARDED');
	}
	elseif (getenv('HTTP_FORWARDED_FOR'))
	{
		$ip = getenv('HTTP_FORWARDED_FOR'); 
	}
	elseif (getenv('HTTP_FORWARDED'))
	{
		$ip = getenv('HTTP_FORWARDED');
	}
	else
	{ 
		$ip = $_SERVER['REMOTE_ADDR'];
	}
	return $ip;
}

漏洞復現

漏洞出現在新聞的評論處,後臺發表一個新聞,註冊一個用戶去評論。
在這裏插入圖片描述
在這裏插入圖片描述
使用burp抓包,發送到repeater模塊。
修改一下源代碼,讓sql語句顯示出來,我們好分析。

$sql = "INSERT INTO ".table('comment')." (com_id, post_id, user_id, type, mood, content, pub_date, ip, is_check) 
 			VALUES ('', '$id', '$user_id', '$type', '$mood', '$content', '$timestamp', '".getip()."', '$is_check')";
$db->query($sql);
	
echo $sql;
exit();

正常go一下,查看返回的sql語句。
在這裏插入圖片描述
嘗試僞造一下ip,查看返回的sql語句。

CLIENT-IP: 8.8.8.8

在這裏插入圖片描述
不出所料的僞造成功了,放入sqlmap去跑就完事了。
在這裏插入圖片描述

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