作为一个学习web安全的菜鸟,前段时间被人问到PHP反序列化相关的问题,以前的博客中是有这样一篇反序列化漏洞的利用文章的.但是好久过去了,好多的东西已经记得不是很清楚.所以这里尽可能写一篇详细点的文章来做一下记录.   我们来参考这里: https://secure.php.net/manual/zh/language.oop5.magic.php 我们根据官方文档中的解释,一个一个来进行测试. __construct() 和 __destruct() __construct()被称为构造方法,…
概述 在面向对象编程中,PHP提供了一系列的魔术方法,这些魔术方法为编程提供了很多便利.PHP中的魔术方法通常以__(两个下划线)开始,并且不需要显示的调用而是由某种特定的条件出发. 开始之前 在总结PHP的魔术方法之前先来定义两个类,以便后边示例使用: <?php class Device{ public $name,$battery,$data = [],$connection; protected function connect(){ $this->connection = 'reso…
原文地址:http://small.aiweimeng.top/index.php/archives/49.html 先不多说,直接上代码,如下: class Demo { private $str = 'str'; //实例化时自动加载function public function __construct() { echo "start<br/>"; } //__call()用来获取没有定义的function public function __call($name,…
<?php class info { private $province; //省 public $city; //城市 private $myname; //姓名 //__construct()方法到实例化时自动加载function function __construct() { echo "实例化我就起作用<br>"; $this->myname("Steven"); } //__call()方法用来获取没有定义的function fu…
ref:https://xz.aliyun.com/t/2043 小结: 3.2.2版本之前的Apache-CommonsCollections存在该漏洞(不只该包)1.漏洞触发场景 在java编写的web应用与web服务器间java通常会发送大量的序列化对象例如以下场景: 1)HTTP请求中的参数,cookies以及Parameters. 2)RMI协议,被广泛使用的RMI协议完全基于序列化 4)JMX 同样用于处理序列化对象 5)自定义协议 用来接收与发送原始的java对象 2. 漏洞挖掘…
ref:https://www.anquanke.com/post/id/84922 PHP反序列化漏洞成因及漏洞挖掘技巧与案例 一.序列化和反序列化 序列化和反序列化的目的是使得程序间传输对象会更加方便.序列化是将对象转换为字符串以便存储传输的一种方式.而反序列化恰好就是序列化的逆过程,反序列化会将字符串转换为对象供程序使用.在PHP中序列化和反序列化对应的函数分别为serialize()和unserialize().反序列化本身并不危险,但是如果反序列化时,传入反序列化函数的参数可以被用户控…
前言 学习本系列文章需要的Java基础: 了解Java基础语法及结构(菜鸟教程) 了解Java面向对象编程思想(快速理解请上知乎读故事,深入钻研建议买本<疯狂Java讲义>另外有一个刘意老师的教学视频也可以了解一下,其中关于面向对象思想的介绍比较详细.链接:https://pan.baidu.com/s/1kUGb3D1#list/path=%2F&parentPath=%2FJava%E7%B1%BB 密码:kk0x) 基本的Eclipse使用(自行百度) 其实只要大学上过Java课…
参考文章 一篇文章带你理解漏洞之 Python 反序列化漏洞 Python Pickle/CPickle 反序列化漏洞 Python反序列化安全问题 pickle反序列化初探 前言 上面看完,请忽略下面的内容 Python 中有很多能进行序列化的模块,比如 Json.pickle/cPickle.Shelve.Marshal 一般 pickle 模块较常使用 在 pickle 模块中 , 常用以下四个方法 pickle.dump(obj, file) : 将对象序列化后保存到文件 pickle.…
0X00 前言 Java中的Fastjson曾经爆出了多个反序列化漏洞和Bypass版本,而在.Net领域也有一个Fastjson的库,作者官宣这是一个读写Json效率最高的的.Net 组件,使用内置方法JSON.ToJSON可以快速序列化.Net对象.让你轻松实现.Net中所有类型(对象,基本数据类型等)和Json之间的转换,fastjson是一个开源的Json.Net库,下载地址 http://www.codeproject.com/Articles/159450/fastJSON,反序列过…
感觉序列化和反序列化用得倒是比较少了,而json_encode和json_decode用得相对多,都是转化成串,进行入库.传输等.json更方便,但是序列化和反序列化结合这两个魔术方法使用倒还行<?php /** * 魔术方法__sleep() 和 __wakeup() * __sleep(): serialize()序列化之前调用,返回一个需要保存变量名数组.一般用来保存部分属性,节省空间 * __wakeup():unserialize() 反序列化之前调用,无返回值,一般进行一个动作 */…
0x01 前言 前天学校的ctf比赛,有一道题是关于php反序列化漏洞绕过wakeup,最后跟着大佬们学到了一波姿势.. 0x02 原理 序列化与反序列化简单介绍 序列化:把复杂的数据类型压缩到一个字符串中 数据类型可以是数组,字符串,对象等  函数 : serialize() 反序列化:恢复原先被序列化的变量 函数: unserialize() 1 <?php 2 $test1 = "hello world"; 3 $test2 = array("hello"…
fastjson =< 1.2.47 反序列化漏洞浅析 iiusky 洛米唯熊 今天 文章出处: https://www.03sec.com/3240.shtmlhttps://www.secquan.org/   圈子社区牛逼!!! 作者:iiusky #poc {"name":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl&qu…
又到了金三银四跳槽季,很多小伙伴都开始为面试做准备,今天小编就给大家分享一个网安常见的面试问题:PHP反序列化漏洞. 虽然PHP反序列化漏洞利用的条件比较苛刻,但是一旦被利用就会产生很严重的后果,所以很多公司都比较关注这个技能点,小伙伴们一定要掌握哦. PHP序列化与反序列化介绍 什么是序列化与反序列化 维基百科中这样定义:序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计…
序列化与反序列化 序列化用途:方便于对象在网络中的传输和存储 0x01 php反序列化漏洞 在PHP应用中,序列化和反序列化一般用做缓存,比如session缓存,cookie等. 常见的序列化格式: 二进制格式 字节数组 json字符串 xml字符串 序列化就是将对象转换为流,利于储存和传输的格式 反序列化与序列化相反,将流转换为对象 例如:json序列化.XML序列化.二进制序列化.SOAP序列化 而php的序列化和反序列化基本都围绕着 serialize(),unserialize()这两个…
概念&原理 序列化就是使用 serialize() 将对象用字符串的方式进行表示: 反序列化是使用 unserialize() 将序列化的字符串构造成相应的对象,为序列化的逆过程. 序列化的对象可以是class或者是Array\String对象 序列化与反序列化的作用 对象是在内存中存储的数据类型,其寿命随着生成程序的终止而终止.为了将对象的状态保存下来,在需要的时候将其恢复,使用序列化将对象转化为二进制字符串进行保存.用于对象的传递. 对象序列化 示例代码 <?php class Pers…
php的反序列化反序列化漏洞又称php对象注入(php Object Injection)产生的问题主要分以下两类: 将传来的序列化数据直接unserilize,造成魔幻函数的执行.这种情况在一般的应用中依然屡见不鲜. PHP Session 序列化及反序列化处理器设置不当会带来的安全隐患.(这个在乌云上之前已有文章有比较详细的介绍) php的反序列化主要是unserialize代码执行,需要满足两个条件 unserialize()的参数用户可以控制,这样就可以构造出需要反序列化的数据结构. 存…
原文:http://blog.chaitin.com/2015-11-11_java_unserialize_rce/ 博主也是JAVA的,也研究安全,所以认为这个漏洞非常严重.长亭科技分析的非常细致. 1 背景 2015年11月6日,FoxGlove Security安全团队的@breenmachine 发布的一篇博客[3]中介绍了如何利用Java反序列化漏洞,来攻击最新版的WebLogic.WebSphere.JBoss.Jenkins.OpenNMS这些大名鼎鼎的Java应用,实现远程代码…
相关学习资料 http://www.freebuf.com/vuls/90840.html https://security.tencent.com/index.php/blog/msg/97 http://www.tuicool.com/articles/ZvMbIne http://www.freebuf.com/vuls/86566.html http://sec.chinabyte.com/435/13618435.shtml http://www.myhack58.com/Articl…
反序列化漏洞利用的条件 1.程序中存在序列化字符串的输入点. 2.程序中存在可以利用的魔术方法. 反序列化漏洞的一个简单DEMO <?php class example { public $handle; function __destruct() { $this->shutdown(); } public function shutdown() { $this->handle->close(); } } class process { public $pid; function…
零.Java反序列化漏洞 java的安全问题首屈一指的就是反序列化漏洞,可以执行命令啊,甚至直接getshell,所以趁着这个假期好好研究一下java的反序列化漏洞.另外呢,组里多位大佬对反序列化漏洞都有颇深的研究,借此机会,努力学习,作为狼群中的哈士奇希望成功的继续伪装下去,不被识破,哈哈哈哈!!! 参考文档:感谢所有参考文献的作者: 1.https://www.cnblogs.com/bencakes/p/6139477.html 2.https://www.cnblogs.com/ssoo…
0x00 前言 最近几天国外安全研究员Soroush Dalili (@irsdl)公布了.NET Remoting应用程序可能存在反序列化安全风险,当服务端使用HTTP信道中的SoapServerFormatterSinkProvider类作为信道接收器并且将自动反序列化TypeFilterLevel属性设置为Full的时候会造成反序列化漏洞,从而实现远程RCE攻击,本文笔者从原理和代码审计的视角做了相关介绍和复现,并且归纳成.NET反序列化漏洞系列课程中的第五课 0x01 .NET Remo…
Web安全基础2 3.8.文件处理 1)文件上传 一个正常的业务需求,问题在于控制上传合法文件. 防御文件上传 客户端javascript校验(通常校验扩展名) 检查MIME类型 检查内容是否合法 随机文件名* 检查文件扩展名* 隐藏路径* 重写内容(影响效率)imagecreatefromjpeg... 测试方法 客户端javascript校验:在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包,抓包改包可绕过…
1.什么是序列化 A.PHP网站的定义: 所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示.unserialize()函数能够重新把字符串变回php原来的值. 序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字. 按个人理解就是: serialize()将一个对象转换成一个字符串,unserialize()将字符串还原为一个对象. 当然从本质上来说,反序列化的数据本身是没有危害的,用户可控数据进行反序列化是存在危害的. B.PH…
序列化与反序列化:序列化:把对象转换为字节序列的过程称为对象的序列化反序列化:把字节序列恢复为对象的过程称为对象的反序列化 漏洞成因:反序列化对象中存在魔术方法,而且魔术方法中的代码可以被控制,漏洞根据不同的代码可以导致各种攻击,如代码注入,sql注入,目录遍历等等 序列化的不同结果public:private:protect: 漏洞本质:unserialize函数的变量可控,php文件中存在可利用的类,类中有魔术方法 魔术方法:_construc(),_destruct()_call(),_c…
转http://blog.chaitin.com/ 1 背景 2 Java反序列化漏洞简介 3 利用Apache Commons Collections实现远程代码执行 4 漏洞利用实例 4.1 利用过程概述 4.2 WebLogic 4.3 Jenkins 4.4 Jboss 4.5 WebSphere 4.6 其它 5 漏洞影响 6 修复建议 7 参考资料 1 背景 2015 年11月6日,FoxGlove Security安全团队的@breenmachine 发布的一篇博客[3]中介绍了如…
java反序列化漏洞是与java相关的漏洞中最常见的一种,也是网络安全工作者关注的重点.在cve中搜索关键字serialized共有174条记录,其中83条与java有关:搜索deserialized共有20条记录,其中10条与java有关.这些出现反序列化漏洞的框架和组件包括的大名鼎鼎的spring,其中还有许多Apache开源项目中的基础组件.例如Apache Commons Collections. 这些基础组件大量被其他框架或组件引用,一旦出现漏洞就会引起大面积的网络安全事故,后果非常严…
一直想研究下php反序列化漏洞,花了几天时间做了个简单的了解..写篇文章记录下. 直白点就是围绕着serialize和unserialize两个函数. 一个用于序列化,一个用于反序列化. 我们通常把字符串/数组/对象进行序列化,然后再反序列化被序列化的字符串/数组/对象 简单写个demo1.php <?php $a="test"; //字符串 $arr = array('j' => 'jack' ,'r' => 'rose'); //数组 class A{ publi…
本文首发自https://www.secpulse.com/archives/95012.html,转载请注明出处. 前言 什么是序列化和反序列化 Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据.有关对象的类型的信息和存储在对象中数据的类型.反序列化就是通过序列化后的字段还原成这个对象本身.但标识不被序列化的字段是不会被还原的. 序列化有什么用 1)网站相应的session对象存储在硬盘上,那么保存在session中的内容就必须实现相…
PHP反序列化漏洞复现 测试代码 我们运行以上代码文件,来证明函数被调用: 应为没有创建对象,所以构造函数__construct()不会被调用,但是__wakeup()跟__destruct()函数都被调用,如果这些函数里面包含的是恶意代码会怎么样呢? 利用场景 __wakeup() 或__destruct() 由前可以看到,unserialize()后会导致__wakeup() 或__destruct()的直接调用,中间无需其他过程.因此最理想的情况就是一些漏洞/危害代码在__wakeup()…
原作者:大方子 原文链接:https://blog.csdn.net/nzjdsds/article/details/82703639 0x01 索引 最近在总结php序列化相关的知识,看了好多前辈师傅的文章,决定对四个理解难度递进的序列化思路进行一个复现剖析.包括最近Blackhat议题披露的phar拓展php反序列化漏洞攻击面.前人栽树,后人乘凉,担着前辈师傅们的辅拓前行! 为了让大家进入状态,来一道简单的反序列化小题,新来的表哥们可以先学习一下php序列化和反序列化.顺便安利一下D0g3小…