98.网络安全渗透测试—[常规漏洞挖掘与利用篇14]—[SESSION身份验证绕过漏洞与测试]
我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!
文章目录
- 一、session身份验证绕过漏洞与测试
- 1、session机制
- 2、session的生命周期
- 3、出现漏洞的情景
- 4、session身份验证绕过示例:
- (1)源码:`session.php`
- (2)绕过:`抓包改包`
- (3)总结:
一、session身份验证绕过漏洞与测试
1、session机制
session机制
是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。 注意:session是存在于服务器里,而cookie是存在客户端。
当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为session id
,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个)(其实就是在检索一个session文件,里面存储在内容)(这个session文件的命名格式为sess_sessionid号
),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。
保存
这个session id
的方式
可以采用cookie
,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。
session一般用于登录验证
。session的机制,是会在浏览器生成一个cookie session_id,也会在服务器里生产一个session id对应的session文件。比如,在做身份证认证的时候就会在这个服务器里的session id对应的文件写入要验证的内容。
在php里 session的存放位置是 在php.ini里设置的,也可以通过函数设置在其他位置
2、session的生命周期
默认关闭浏览器,session就会消失,当然了也可以在程序中设置session的过期时间
3、出现漏洞的情景
如果服务器的session-id对应的文件存在网站的其他目录(比如/var/www/html/tmp目录下)(有时会存储在网站根目录下的某目录下),通过扫描目录即可获取 session 文件所在目录,我们即可获取到seesion_id,即可绕过身份验证。
如果存放在数据库,可以通注入漏洞获取seesion信息,获取到session_id 就可以修改cookie 进行提交,验证就可以通过。
4、session身份验证绕过示例:
(1)源码:session.php
【默认帐号和密码:qwsn/123456】
<?php$path_parts = pathinfo(__FILE__);$save_seesion=$path_parts['dirname'].'\tmp';session_save_path($save_seesion);session_start();//当用户访问当前的页面的时候就会在tmp目录下生成session_id文件登录后的用户session_id文件内就会存储用户名。$username='qwsn';$password='123456';if($_GET['c']=='login'){if($_SESSION['username']==$username){//检索所有当前的session_id文件内容进行验证,如果文件内存在用户即可登录!!!echo "欢迎回来!{$_SESSION['username']}";}else{if($_POST['username']==$username && $_POST['password']==$password){$_SESSION['username']=$username;isset($PHPSESSID)?session_id($PHPSESSID):$PHPSESSID = session_id();//session_id() 可以用来获取/设置 当前会话 IDsetcookie('PHPSESSID', $PHPSESSID, time()+24 * 3600);//设置当前的SESSION的过期时间为24hecho "登录成功 {$_SESSION['username']}";}else{echo "帐号或者密码出错<a href='session.php'>返回</a>";}}}else{echo '<meta charset="UTF-8">';echo"<form method='post' action='?c=login'>";echo"<label>帐号:</label><input type='text' name='username'><br>";echo"<label>密码:</label><input type='password' name='password'><br>";echo"<input type='submit' value='登录' name='submit'>";echo "</form>";}?>
(2)绕过:抓包改包
第一步: 使用qwsn/123456登录后,服务器的/var/www/html/tmp下会存储session id对于的session_id文件,该文件存储着用户名!!!
如下图所示,http://www.webtester.com/session.php是用户登录页面:
如下图所示,我们使用qwsn/123456用户登录成功:
如下图所示,我们登录成功后,可以通过开发者工具的网络模块发现cookie值:PHPSESSID=ij11lj0rsir754g01l7um1nuk3
如下图所示,我们在靶机上也发现生成了session_id对应的sess_sessionid文件:sess_ij11lj0rsir754g01l7um1nuk3
,其内容是保存的用户名qwsn,只要我们在使用其他用户登录的时候,使用了该sess_sessionid文件的话,那么就可以绕过验证直接登录。这里我们可以使用cookie传值的时候传该文件对应的sessionid即可调用该文件!!!
第二步: 换一个浏览器
,然后随便使用不存在的一个用户名和密码,点击登录,抓包,修改包中的cookie数组变量的PHPSESSID的键值为qwsn登录的时候的phpsessid即可绕过登录!!!
如下图所示,我们使用账户qwsn2/asdfghjkl登录,抓包修改cookie的phpsessid键值为qwsn的sessionid【ij11lj0rsir754g01l7um1nuk3】即可绕过登录验证:
(3)总结:
抓包,修改cookie的phpsessid的值为登录成功的用户的sessionid,这个sessionid我们可以通过目录扫描或者SQL注入得到,因为sesion文件一般是以sess_sessionid号的形式命名的!!!
98.网络安全渗透测试—[常规漏洞挖掘与利用篇14]—[SESSION身份验证绕过漏洞与测试]相关推荐
- 【高危】Apache Linkis Gateway模块存在身份验证绕过漏洞(CVE-2023-27987)
漏洞描述 Apache Linkis 是一个用于将上层应用与底层数据引擎解耦,提供标准化接口的中间件.Gateway 是 Linkis 接受客户端和外部请求的主要入口点, 在 Apache Linki ...
- 身份验证绕过漏洞分析
0x01 前言 最近Tenable 披露了Arcadyna 网络设备身份验证绕过漏洞,并且很多的厂商都采用产生漏洞的组件,由于Arcadyan 设备固件厂商并没有开源出来,在官网支持里面下载的文件是w ...
- 黑客利用数百万路由器的新身份验证绕过漏洞
身份不明的黑客正在积极利用关键的身份验证绕过漏洞劫持家庭路由器,将它们纳入用于执行 DDoS 攻击的 Mirai 变体僵尸网络,仅在其公开披露两天后. 该漏洞被跟踪为CVE-2021-20090(CV ...
- struts2漏洞监测_Apache Shiro身份验证绕过漏洞风险提示
漏洞公告 2020年8月17日,安恒应急响应中心监测发现Apache Shiro官方更新发布了1.6.0之前版本存在身份验证绕过的漏洞公告,对应CVE编号:CVE-2020-13933,相关链接: h ...
- Zyxel-NBG2105(CVE-2021-3297)身份验证绕过漏洞复现
简介 Zyxel-NBG2105 存在身份验证绕过,可以通过更改 login参数可用实现以管理员身份进行后台登陆. zoomeye 漏洞验证 通过右键源代码查看一下源码,这里不知道为什么不能右键,就在 ...
- 89.网络安全渗透测试—[常规漏洞挖掘与利用篇5]—[文件包含漏洞详解实战示例]
我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.文件包含漏洞详解 1.文件包含漏洞相关概念 2.PHP文件包含漏洞相关概念 3.PHP文件包含漏洞利用:`构 ...
- 90.网络安全渗透测试—[常规漏洞挖掘与利用篇6]—[文件包含-PHP封装伪协议详解实战示例]
我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.文件包含-PHP封装伪协议简介 1.php内置封装协议 2.data://命令执行-伪协议 3.zip:// ...
- 100.网络安全渗透测试—[常规漏洞挖掘与利用篇16]—[密码找回漏洞与测试]
我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.密码找回漏洞与测试 1.密码找回漏洞简介 2.密码找回漏洞测试 (1)源码审计:forget.php (2) ...
- CVE-2022-40684 Fortinet(飞塔)身份验证绕过漏洞
GitHub地址: https://github.com/hughink/CVE-2022-40684 漏洞简介 Fortinet(飞塔)是一家全球知名的网络安全产品和安全解决方案提供商,其产品包括防 ...
最新文章
- centos中mysql重置密码
- 在树莓派上用python控制LED
- linux条件表达式例子,Linux的Iptables命令的基本知识(三)-常用匹配条件示例和执行动作...
- 145. Binary Tree Postorder Traversal 二叉树的后序遍历
- Windows 2003 系统管理 视频教程 http://www.91xueit.comm 下载
- [react] 说说你对Error Boundaries的理解
- 前端学习(1993)vue之电商管理系统电商系统之根据id删除数据
- oracle之单行函数之子查询课后练习2
- 通过apicloud实现的混合开发App的Demo
- 在线火星文转换器工具
- DevChartControl的颜色配置
- JAVA计算机毕业设计学生请假管理系统Mybatis+系统+数据库+调试部署
- 如何使用移动端后台管理数据
- 阿里云注册商标现身说法成功率打在公屏上
- [个人笔记] Zabbix配置钉钉群聊告警机制
- win10计算机日历不能用,手把手操作win10电脑日历打不开的详尽处理措施
- 虚幻引擎学习笔记——Month1 Week1
- java 高级面试题(借鉴)(上)
- XSS跨站脚本攻击(level1-10)
- android开发笔记之高德地图使用