Session 固定

admin 2025年1月10日16:38:27评论0 views字数 1342阅读4分28秒阅读模式

Session 固定

让合法用户使用攻击者预先设定的 session ID 来访问网站, 一旦用户的会话 ID 被成功固定, 攻击者就可以通过此 session ID 来冒充用户访问
只要该 session ID 还是有效的, 没有被系统重新生成或者销毁

前言

基于 session 的攻击有很多种方式. 大部分的手段都是首先通过获得合法用户的 session, 然后冒充该用户来访问系统. 也就是说, 攻击者至少必须要获取到一个有效的 session 标识符, 用于接下来的身份验证.
获得合法用户的 session 有以下 3 种办法

  1. 猜测(猜测有效的 session 标识符, 类似暴力破解. 但是 PHP 生成 session ID 的还是比较安全的, 所以这种攻击方式基本上是不太可能成功的)
  2. 劫持(当通过 url 参数来传递 session 标识符的话, 容易暴露这个标识符. 使用 cookie 传递较为安全, 但是也会因为浏览器漏洞暴露 session 标识符)
  3. 固定(诱使用户通过攻击者预先选定的 session 标识符来访问系统. 一旦系统接收到了这个用户的请求, 并且使用用户传递过来的 session 标识创建了会话, 攻击者就可以使用这个 session 标识. )

准备

  1. 已知 session name(默认 session name 为 PHPSESSID)
  2. PHP Version: 5.5.12 Apache Version:2.4.9
  3. 浏览器*2
  4. POC 代码 session.php
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php 
    ini_set("session.use_trans_sid", 1);
    ini_set("session.use_only_cookies", 0);
    ini_set("session.use_cookies", 0);
    session_start();
    if (!isset($_SESSION['count']))
    {
    $_SESSION['count'] = 0;
    }
    else
    {
    $_SESSION['count']++;
    }
    echo $_SESSION['count'],'<br>';
    echo session_id();
    ?>

测试

  1. 使用 firefox 打开 session.php, 刷新的时候可以看见 $_SESSION['count'] 始终为 0, session_id 不断变化
  2. 添加参数 PHPSESSID=1234, 每刷新一次, $_SESSION['count'] 增加 1
  3. 打开 360 浏览器, 带着刚才的参数 PHPSESSID=1234 访问 session.php, 发现 $_SESSION['count'] 为 firefox 里的值+1, 成功固定 session

Session 固定
Session 固定

分析

这种简单的攻击方式只对那些接受来自 url 的 session 标识符起作用, 这也是为什么代码前面要进行设置, 目的就是为了让 PHPSESSID 通过 url 传递.
php 默认如果没有发现 cookie 中的 session 标识符的话, 就会查找是否有 session 标识符包含在 get 或者 post 数据中, 也就是 session 标识符处于 url 参数中或者表单的隐藏域中, 如果 php 发现了 session 标识符, 就不在重新生成一个新的随机 session ID 了, 它会使用来自请求中获得的 session ID 来标识此次会话.

当然, 最最重要的是你要已知 session name

- By:tr0y.wang


免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月10日16:38:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Session 固定http://cn-sec.com/archives/3616248.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息