代码审计:bluecms 前台ad_js.php注入复现

代码审计:bluecms 前台ad_js.php注入复现

  • bluecms
  • 代码审计
  • 漏洞复现

bluecms

BlueCMS是一款专注于地方门户网站建设解决方案,基于PHP+MySQL的技术开发,全部源码开放。
复现版本为bluecmsv1.6版本,各位可自行下载。

代码审计

先使用Seay工具审计一波,根据关键代码回溯。
代码审计:bluecms 前台ad_js.php注入复现_第1张图片
工具显示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

代码审计:bluecms 前台ad_js.php注入复现_第2张图片
分析一下代码逻辑,发现是缺少广告信息所导致的,因为我是本地搭建的新系统,后台是没有任何数据的。
那我们进入后台给它一个广告,看看会怎样。(PS:把php调小一点,不然会出不来后台,php5.2.17可以)
代码审计:bluecms 前台ad_js.php注入复现_第3张图片
再次访问漏洞链接,这下就有了内容。

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去跑就行了。
代码审计:bluecms 前台ad_js.php注入复现_第4张图片

你可能感兴趣的:(代码审计)