php - SESSION固定攻击的前提?
黄舟
黄舟 2017-04-10 17:33:27
[PHP讨论组]

攻击者提供一个包含已知会话ID的链接例如:<a href='login.php?PHPSESSID=1234'>点击</a>,来诱使受害人点击这个链接,用户点击链接后可能会进行一系列操作,然后攻击者再使用这个会话ID登陆网站,从而劫持用户的会话,造成SESSION固定攻击。
但是一般php的设置session.use_cookiessession.use_only_cookies都为1,也就是攻击者不能通过url传递会话ID的方式劫持SESSION,在这种情况下,还有可能造成SESSION固定攻击吗?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(4)
PHP中文网

可以自己重写session,方便对各种规则进行设定校验。

ringa_lee

难道不校验IP和安全HASH的么

假设当前用户的实际SESSION PrimaryKey为hash(ip+uid)。则$_SESSION[md5(ip.uid)]['login']

PHPz

首先分析下Session固定攻击产生的根本原因:

  1. 攻击者成功获取到了一个固定的sessionID;

  2. 攻击者使用某些方法让被攻击者以获取到的已知sessionID作为被攻击者的sessionID请求了服务端并执行授权操作;

  3. 攻击者以获取到的session ID请求服务端以获得和被攻击者相同的授权。

这里的重点在于“2”,(在服务端支持GET session的情况下)通过一个URL诱使被攻击者点击是最直接的方式,但最终目的是让被攻击者“携带已知sessionID”请求服务端,开启session.use_only_cookies的情况下还是保留了使用cookie“携带已知sessionID”请求服务端的方式,这种情况下攻击者只需要“使用某些方法”(比如XSS)修改cookie值为已知sessionID就能达到相同效果。最终的防御方式还是应该在每次授权改变后重新分配sessionID。
答案参考:https://www.douban.com/note/299072454/

阿神

有可能的。

常见的会话管理机制,一般使用 cookie 来保存会话 ID。为了照顾到不能使用 cookie 的情况,PHP、Java 等都提供了将会话 ID 嵌入 URL 的功能。

根据会话 ID 位置的不同,会话固定攻击手段也不同:

  • URL 里:伪造 URL,如题主所说

  • Cookie 里:修改 cookie

结合一些其它的漏洞就可以修改用户的 cookie,例如:

  • XSS

  • HTTP 消息头注入

  • 等其它导致 cookie 被篡改的漏洞

可以看下《Web 应用安全权威指南》,很好地一本书。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号