欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-30 11:32:58
...

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

bluecms

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

代码审计

这次不用Seay挖xss漏洞,我们通过关键功能测试来审计xss漏洞。
在后台->会员管理->会员列表处,管理员是可以查看会员信息的,要是此处信息能从前台插入xss代码,就能盗取管理员cookie。
代码审计:bluecms 资料修改xss漏洞复现
来到会员资料修改处,尝试进行资料的修改,
可以看到可控的有邮箱,msn,qq,电话,地址。
代码审计:bluecms 资料修改xss漏洞复现
抓包分析得知,该功能在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漏洞复现

漏洞复现

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

相关标签: 代码审计

上一篇: FPGA--1602

下一篇: 同步上升沿检测