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

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

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

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;
}

漏洞复现

漏洞出现在新闻的评论处,后台发表一个新闻,注册一个用户去评论。
代码审计:bluecms 前台comment.php注入复现_第1张图片
代码审计:bluecms 前台comment.php注入复现_第2张图片
使用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语句。
代码审计:bluecms 前台comment.php注入复现_第3张图片
尝试伪造一下ip,查看返回的sql语句。

CLIENT-IP: 8.8.8.8

代码审计:bluecms 前台comment.php注入复现_第4张图片
不出所料的伪造成功了,放入sqlmap去跑就完事了。
代码审计:bluecms 前台comment.php注入复现_第5张图片

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