XSS利用之延长Session生命周期

1.0 话题准备

—— session 和 cookie 的原理 ——

▌1.1 session介绍


简单介绍:PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。

▌1.2 几个常用的session配置


php.ini

session.use_cookies=1 #1代表使用cookie记录客户端的sessionid(php.ini默认就是1)

session.save_path=”xx” #session文件的保存路径

session.gc_maxlifetime=1440 #服务器端session的储存的时间,如果超过1440秒没操作,那么Session数据就自动删除。

session.cookie_lifetime=0 #这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废(下面会深入了解)

session.name=PHPSESSID #cookie的名称 利用他来识别session文件(下面会深入了解)

▌1.3 深入了解


php代码:

session_start(); #开启session机构

当我们把PHPSESSID 的值改成 freebuf 之后再发送一次请求

可以看到就生成了一个新的session

解释:

这就是session.cookie_lifetime=0 的作用 通过cookie来识别session文件,那么如果不用cookie来识别seesion文件的话 还有什么办法可以让服务器识别哪个是你的session文件。答:可以通过input的值来识别 或者通过url 等方法。

执行机制流程图:

2.0 xss 利用

—— session 延长生命周期 ——

▌2.1 利用cookie实现控制对方生命周期


相信读者们都会对xss有多多少少的了解。

但是不知道有没有老司机们碰到过这种情况:xss上线但因长时间未登录(未操作)而导致失效。

如下代码:

解释:

当登录之后如果超过10秒钟不操作 那么session就失效。换句话说如果管理员登录后台 触发到了xss 然后又关闭了浏览器(没操作)超过10秒的话 session就会作废。

碰到这种情况我们可以利用客户端来实现session更新。前提是要获取到session的名称。

phpsession=freebuf;

py 死循环代码:

解释:

当获取到cookie之后每隔一秒操作一次

这样就实现了及时在关闭浏览器或者登录了又长时间没操作 的情况下 还可以利用旧cookie来登录。

我们从1.2说过 :session.cookie_lifetime=0 #这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废 但是为什么浏览器关闭了 还可以用旧的cookie来进行登录?我之前利用php5~php7做了一次实验。实验过程中。浏览器关闭了session没删,但是cookie的PHPSESSID的值却发生了改变从而服务器又新生成了一个session,至于旧的session文件什么时候删除 问题是出在:session.gc_maxlifetime=1440 #当用户1440秒内如果没操作的话 那么他就会被删除。

总结

此方法在实战过程中得到较好的辅助。但也不是百分百成功,我目前没有碰到失败案例。我所说的失败案例 如果对方做了令牌(token) 这样服务端就可以识别你是否非法请求并且session 不更新。才导致此方法失败。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-04-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ASP.NETCore

.NET Core扩展IServiceCollection自动注册服务

在ASP.NET Core中使用依赖注入中使用很简单,只需在Startup类的ConfigureServices()方法中,通过IServiceCollecti...

22620
来自专栏黑白安全

emlog敏感信息泄漏漏洞

漏洞复现:登录状态后访问http://xxx.xxx/admin/index.php?action=phpinfo

9220
来自专栏用户画像

7.4.1 程序查询方式

信息交换的控制完全由主机执行程序实现,程序查询方式接口中设置一个数据缓冲寄存器(数据端口)和一个设备状态寄存器(状态端口)。当主机进行I/O操作时,首先发出询问...

9710
来自专栏中国白客联盟

在Windows上隐藏自己的渗透测试工具

对于渗透测试人员来说,上传使用自己的工具是大多数都会进行的一步,那如何隐藏自己的工具不被管理员发现,甚至能够持续使用也是一个大问题。下面来介绍两种隐藏自己渗透测...

17940
来自专栏13blog.site

如何查看IntelliJ IDEA的版本信息

额,说实在的,这篇文章十三一开始也不是很想整理的,因为这并不是个很大的问题,不仅仅不是个大的问题,而且看起来似乎并不是一个问题,但是让人哭笑不得的是,在前一篇文...

22830
来自专栏安恒网络空间安全讲武堂

翻译 | Linux利用动态链接共享对象库提权

Linux利用动态链接共享对象库提权 RPATH和弱文件权限会导致系统的损害。Linux应用程序可以利用动态链接的共享对象库(我们从现在开始称它们为共享库)来提...

25850
来自专栏电光石火

IDEA切换git分支

点击右下角的git:master,然后选择origin/master,然后选择你要切换的分支,我目前在master分支,换dev分支就选择origin/dev,...

75530
来自专栏云计算教程系列

如何在Ubuntu 14.04上备份和还原Redis数据

Redis是一个键值缓存的数据库,它可以持久保存(永久保存)到磁盘存储(即数据库)中。在本文中,您将了解如何在Ubuntu 14.04服务器上备份Redis数据...

41450
来自专栏任浩强的运维生涯

调用redis的时候二维码不断刷新的排查

一、背景和现象。 项目是PHP开发的,点击登录的时候就根据随机数生成了二维码,缓存在了redis。用户用微信扫描了二维码分析出需要请求的链接,然后微信浏览器就请...

37150
来自专栏一个爱瞎折腾的程序猿

初次尝试Linux并记录一二

若出现 服务器拒绝了SETP连接,但它监听FTP链接。。。没有安装sshd 解决方案

12210

扫码关注云+社区

领取腾讯云代金券