代码审计:bluecms 资料修改xss漏洞复现

代码审计:bluecms 资料修改xss漏洞复现

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

bluecms

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

代码审计

这次不用Seay挖xss漏洞,我们通过关键功能测试来审计xss漏洞。
在后台->会员管理->会员列表处,管理员是可以查看会员信息的,要是此处信息能从前台插入xss代码,就能盗取管理员cookie。
在这里插入图片描述
来到会员资料修改处,尝试进行资料的修改,
可以看到可控的有邮箱,msn,qq,电话,地址。
代码审计:bluecms 资料修改xss漏洞复现_第1张图片
抓包分析得知,该功能在user.php的edit_user_info方法中实现。

//编辑个人资料
 elseif($act == 'edit_user_info'){
	 $user_id = intval($_SESSION['user_id']);
	 if(empty($user_id)){
		 return false;
	 }
	$birthday = trim($_POST['birthday']);
	$sex = intval($_POST['sex']);
    $email = !empty($_POST['email']) ? trim($_POST['email']) : '';
    $msn = !empty($_POST['msn']) ? trim($_POST['msn']) : '';
    $qq = !empty($_POST['qq']) ? trim($_POST['qq']) : '';
    $mobile_phone = !empty($_POST['mobile_phone']) ? trim($_POST['mobile_phone']) : '';
    $office_phone = !empty($_POST['office_phone']) ? trim($_POST['office_phone']) : '';
    $home_phone   = !empty($_POST['home_phone']) ? trim($_POST['home_phone']) : '';
	$address = !empty($_POST['address']) ? htmlspecialchars($_POST['address']) : '';

	if (!empty($_POST['face_pic1'])){
        if (strpos($_POST['face_pic1'], 'http://') != false && strpos($_POST['face_pic1'], 'https://') != false){
           showmsg('只支持本站相对路径地址');
         }
        else{
           $face_pic = trim($_POST['face_pic1']);
        }
    }else{
		if(file_exists(BLUE_ROOT.$_POST['face_pic3'])){
			@unlink(BLUE_ROOT.$_POST['face_pic3']);
		}
	}

	if(isset($_FILES['face_pic2']['error']) && $_FILES['face_pic2']['error'] == 0){
		$face_pic = $image->img_upload($_FILES['face_pic2'],'face_pic');
	}
    $face_pic = empty($face_pic) ? '' : $face_pic;

	$sql = "UPDATE ".table('user')." SET birthday = '$birthday', sex = '$sex', face_pic = '$face_pic', email = '$email', msn = '$msn', qq = '$qq'," .
			" mobile_phone = '$mobile_phone', office_phone = '$office_phone', home_phone = '$home_phone', address='$address' WHERE user_id = ".intval($_SESSION['user_id']);
	$db->query($sql);
	showmsg('更新个人资料成功', 'user.php');
 }

地址处有过滤,不考虑;
邮箱,msn,qq,电话没有过滤,但是在数据库中,qq和电话有长度限制,排除;
最后剩下邮箱和msn似乎存在xss漏洞。
代码审计:bluecms 资料修改xss漏洞复现_第2张图片

漏洞复现

回到会员资料修改处,邮箱和msn都插入xss代码,点击确认修改。
代码审计:bluecms 资料修改xss漏洞复现_第3张图片
可以看到弹窗了。
代码审计:bluecms 资料修改xss漏洞复现_第4张图片
后台查看会员列表,也顺利弹窗了。
代码审计:bluecms 资料修改xss漏洞复现_第5张图片
可以看出,邮箱的xss插入成功,而msn的没有,所以是邮箱处存在xss漏洞。
代码审计:bluecms 资料修改xss漏洞复现_第6张图片
代码审计:bluecms 资料修改xss漏洞复现_第7张图片

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