这里主要讲讲传统的PHP中的“服务端Session”。至于什么是服务端Session,什么是客户端Session,可以看看P神的**客户端 session 导致的安全问题。Session概念:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。下面就由小编和大家讲一讲php session利用总结。
当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。
Session机制:session内容一般以文件的形式存储于服务器中,而本地浏览器会存储一个与服务器中session文件对应的Cookie值,Cookie存储的是键值为“PHPSESSID”的Seeion_id值,用户在访问应用时,每次跳转发生请求时,会自动把这个存储session_id的Cookie值发送过去,因此web应用的所有页面都可以获取到这个SESSION_ID值,也就可以通过session_id获取服务器中存储的session值,当用户关闭浏览器后,cookie存储的session_id自动清除,一般服务器存储的session文件也会在30分钟后自动清除。
一、比如在wamp环境下,index.php如下:
session_start();
phpinfo();
?>
首先理解一下session_start()
当会话自动开始或者通过 session_start() 手动开始的时候, PHP 内部会依据客户端传来的PHPSESSID来获取现有的对应的会话数据(即session文件),PHP 会自动反序列化session文件的内容,并将之填充到 $_SESSION 超级全局变量中。如果不存在对应的会话数据,则创建名为sess_PHPSES SID(客户端传来的)的文件。如果客户端未发送PHPSESSID,则创建一个由32个字母组成的PHPSESSID,并返回set-cookie。
可以看到请求中对应的PHPSESSID:ifrvi9r7ui81r0fjq569b06862
在服务器端,即/wamp/tmp下我们就可以发现一个生成的记录Session的文件,因为也没有记录什么会话信息,因此该文件是一个空文件。
补充一下关于php-Session相关配置的说明
在php.ini中对Session存在许多配置,这里我们通过phpinfo来说明几个重要的点。
说明如下:
session.save_path="" --设置session的存储路径
session.save_handler="" --设定用户自定义存储函数,如果想使用PHP内置会话存储机制之外的可以使用本函数(等方式),默认files以文件存储
session.auto_start boolen --指定会话模块是否在请求开始时启动一个会话,默认为0不启动
session.serialize_handler string --定义用来序列化/
二、常见的php-session存放位置
/var/lib/php5/sess_PHPSESSID/var/lib/php7/sess_PHPSESSID/var/lib/php/sess_PHPSESSID/tmp/sess_PHPSESSID/tmp/sessions/sess_PHPSESSED0x02 Session可能导致的攻击面
Session序列化攻击Session文件包含Session伪造用户登录Session逻辑漏洞0x03 Session序列化攻击
Serialize_handler
要了解Session序列化攻击,先来了解一下Session机制中对序列化是如何处理的。
在php中存在三种序列化处理引擎
本地测试如下:
Session文件内容分别对应结果为
test|s:7:"CoCo1er";
tests:7:"CoCo1er";
a:1:{s:4:"test";s:7:"CoCo1er";}
攻击利用原理
payload千万条,原理第一条。
(这里补充说一点,PHP中的Session的实现是没有的问题,危害主要是由于程序员的Session使用不当而引起的。如下)
使用不同引擎来处理session文件
如果在PHP在反序列化存储的$_SESSION数据时使用的引擎和序列化使用的引擎不一样,会导致数据无法正确第反序列化。通过精心构造的数据包,就可以绕过程序的验证或者是执行一些系统的方法。例如:
在这么一种情况下:
假如我们使用php_serialize引擎时进行数据存储时的序列化,可以得到内容
$_SESSION[‘key’] = ‘Boby’;
a:1:{s:3:”key”;s:4:”Boby”;}
三、这时我们的解析采用了另一种引擎:php
免责声明:本站发布的内容(图片、视频和文字)以原创、来自本网站内容采集于网络互联网转载等其它媒体和分享为主,内容观点不代表本网站立场,如侵犯了原作者的版权,请告知一经查实,将立刻删除涉嫌侵权内容,联系我们QQ:712375056,同时欢迎投稿传递力量。
Copyright © 2009-2022 56dr.com. All Rights Reserved. 特网科技 特网云 版权所有 特网科技 粤ICP备16109289号
域名注册服务机构:阿里云计算有限公司(万网) 域名服务机构:烟台帝思普网络科技有限公司(DNSPod) CDN服务:阿里云计算有限公司 百度云 中国互联网举报中心 增值电信业务经营许可证B2
建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站