会话固定攻击 - yxcms session固定漏洞
会话固定攻击
Session fixation attack(会话固定攻击)是利用服务器的session不变机制,借他人之手获得认证和授权,然后冒充他人。
session固定漏洞最为核心的其实应该是程序使用session作为认证方式,但又放开了session_id的设置,并且设置session_id在session_starts()执行之后,session_id以key/value的形式指定了后端使用哪个session。
1.Attacker先打开一个网站http://www.baidu.com,然后服务器会回复他一个session id。比如SID=abcdefg。Attacker把这个id记下了。
2.Attacker给UserA发送一个电子邮件,他假装是什么推销什么,诱导UserA点击链接http://unsafe/?SID=abcdefg,SID后面是Attacker自己的session id。
3.UserA被吸引了,点击了http://unsafe/?SID=abcdefg,像往常一样,输入了自己的帐号和口令从而登录到银行网站。
4.因为服务器的session id不改变,现在Attacker点击http://unsafe/?SID=abcdefg后,他就拥有了Alice的身份。可以为所欲为了。
e.g.
yxcms session固定攻击
用chrome新注册用户作为攻击用户,取得 PHPSESSID = qhi5f1rj7tu07dfkq53ngfqim2
模拟受害者使用firefox登陆管理后台,此时正常管理员 PHPSESSID= ib9pf18oh90ngm13q9m3utjp26, 后台地址为 http://192.168.27.136/yxcms/index.php?r=admin/index/index
攻击者诱使受害者访问恶意链接: http://192.168.27.136/yxcms/index.php?r=admin/index/index&sessionid=qhi5f1rj7tu07dfkq53ngfqim2
攻击者使用chrome访问后台链接:http://192.168.27.136/yxcms/index.php?r=admin/index/index , 账号变为管理员
分析
漏洞代码在:yxcms/protected/include/lib/common.function.php 中:
640 function session($name='',$value = '') {
641 if(empty($name)){
642 return $_SESSION;
643 }
644 $sessionId = request('request.sessionid');
645 if(!empty($sessionId)){
646 session_id($sessionId);
647 }
648 if(!isset($_SESSION)){
649 session_starts();
650 }
651 if($value === ''){
652 $session = $_SESSION[$name];
653 }else if($value==null){
654 unset($_SESSION[$name]);
655 }else{
656 $session = $_SESSION[$name] = $value;
657 }
658 return $session;
659 }
644行可以看到,如果session_id存在,则使用session_id方法将其设置为当前会话的id。 并且session_id可以通过requests方法得到。这就有问题了。
跟进request方法:
660 function request($str, $default = null, $function = null) {
661 $str = trim($str);
662 list($method,$name) = explode('.',$str,2);
663 $method = strtoupper($method);
664 switch ($method) {
665 case 'POST':
666 $type = $_POST;
667 break;
668 case 'SESSION':
669 $type = $_SESSION;
670 break;
671 case 'REQUEST':
672 $type = $_REQUEST;
673 break;
674 case 'COOKIE':
675 $type = $_COOKIE;
676 break;
677 case 'GET':
678 default:
679 $type = $_GET;
680 break;
681 }
682 if(empty($name)){
683 $request = filter_string($type);
684 }else{
685 if($method == 'GET'){
686 $request = urldecode($type[$name]);
687 }else{
688 $request = $type[$name];
689 }
690 $request = filter_string($request);
691 //设置默认值
692 if($default){
693 if(empty($request)){
694 $request = $default;
695 }
696 }
697 //设置处理函数
698 if($function){
699 $request = call_user_func($function,$request);
700 }
701 }
702 return $request;
703 }
了解更多
https://xz.aliyun.com/t/2025
http://www.freebuf.com/column/162886.html
会话固定攻击 - yxcms session固定漏洞的更多相关文章
- 漏洞:会话固定攻击(session fixation attack)
什么是会话固定攻击? 会话固定攻击(session fixation attack)是利用应用系统在服务器的会话ID固定不变机制,借助他人用相同的会话ID获取认证和授权,然后利用该会话ID劫持他人的会 ...
- 预防 Session 劫持与 Session 固定攻击
一.预防 Session 劫持 要求: ① 只允许通过 Cookie 来传递 SessionID ② 生成一个由 URL 传递的唯一标识作为 Session 的标记(token) 当请求同时包含有效的 ...
- php防止会话固定攻击
问题:希望确保应用不会受到会话固定攻击,即攻击者强制用户使用一个预定义的会话id. 解决方案:要求使用会话cookie但会话标识符不追加到URL,另外要频繁地生成新会话ID: <?php ini ...
- Spring cloud微服务安全实战-3-12session固定攻击防护
getSession这个方法里面的逻辑,会根据传过来的cookie里面带的JSessionID在你的服务器上去找一个session,如果能找到,就用这个已经存在的session,这个getSessio ...
- 会话技术: Cookie 和 Session
会话技术 会话技术:从浏览器开始访问服务器,到关闭浏览器,这期间发生了许多次请求和响应,这个过程就叫做一次会话. Cookie 和 Session 都是处理会话技术的两种具体实现,Cookie将数据保 ...
- Java Web使用过滤器防止Xss攻击,解决Xss漏洞
转: Java Web使用过滤器防止Xss攻击,解决Xss漏洞 2018年11月11日 10:41:27 我欲乘风,直上九天 阅读数:2687 版权声明:本文为博主原创文章,转载请注明出处!有时候 ...
- Java EE会话技术Cookie和Session
会话技术 一.定义 会话技术是帮助服务器记住客户端状态的(区分客户端的).将客户访问的信息存在本地的叫Cookie技术,存在服务器上的叫Session技术. 注意: 一次会话何时开始?从打开一个浏览器 ...
- Apache Tomcat examples directory vulnerabilities(Apache Tomcat样例目录session操纵漏洞)复现
目录 Session操控漏洞 示例: Session操控漏洞 在Apache tomcat中,有一个默认的example示例目录,该example目录中存着众多的样例,其中/examples/serv ...
- 当ligerui的grid出现固定列与非固定列不在同一水平线上时,改怎么处理
当ligerui的grid出现固定列与非固定列不在同一水平线上时,如下图所示: 此时可以增加fixedCellHeight:false属性进行解决.这个属性在IE上不起作用,那么该怎么处理,可以这样处 ...
随机推荐
- Redis 设计与实现 (三)--持久化
RDB 持久化 一.生成RDB cmd:SAVE --阻塞进程,执行完,才能有效接收客户端命令. cmd: BGSAVE --非阻塞,开启子进程保存. 客户端如果发送SAVE和BGSAVE命令直 ...
- 推荐一款接口 API 设计神器!
今天栈长给大家推荐一款接口 API 设计神器,传说中的,牛逼哄洪的 Swagger,它到底是什么?今天为大家揭开谜底! Swagger是什么? 官网:https://swagger.io/ Swagg ...
- vue组件的基本使用,以及组件之间的基本传值方式
组件(页面上的每一个部分都是组件) 1.三部分:结构(template),样式(style),逻辑(script) 2.组件的作用:复用 3.模块包含组件 4.组件创建: 1.全局组件:Vue ...
- hadoop退出安全模式Name node is in safe mode
在使用 hdfs 的时候出现如下错误: 18/01/12 09:04:34 INFO fs.TrashPolicyDefault: Namenode trash configuration: Dele ...
- 【Spark篇】---SparkSQL初始和创建DataFrame的几种方式
一.前述 1.SparkSQL介绍 Hive是Shark的前身,Shark是SparkSQL的前身,SparkSQL产生的根本原因是其完全脱离了Hive的限制. SparkSQL支持查询原 ...
- Hbase篇--HBase中一对多和多对多的表设计
一.前述 今天分享一篇关于HBase的一对多和多对多的案例的分析. 二.具体案例 案例一.多对多 人员-角色 人员有多个角色 角色优先级 角色有多个人员 人员 删除添加角色 角 ...
- Pycharm使用教程(三)(非常详细,非常实用)
1. 汉化:把resources_zh.jar拷贝到PyCharm的安装目录下的lib目录,重启Pycharm即可. (resources_zh.jar汉化包关注本账号获取:链接: https://p ...
- WebSocket(2)---实现游戏公告功能
实现游戏公告功能 实现功能:游戏管理里发布游戏公告,其它游戏玩家页面能够马上接受到游戏公告信息. 下面直接上代码案例,这里主要展示关键代码,底部有源码. 一.案例 1.pom.xml文件 主要是添加s ...
- IdentityServer4实战 - API与IdentityServer的交互过程解析
开局一张图,内容全靠看.如有不明白的地方可在评论里说出,后面我再加上.
- 基于winserver部署Apollo初次体验(附.net客户端demo)
前言 配置中心伴随着这几年分布式系统演变和微服务架构的兴起,已经成为必不可少的需求之一.试下一下如果哪天公司的所有应用服务,从公司服务器迁移到云服务,成千上万的配置,修改起来是多么耗时费劲的事(我们公 ...