php代码审计9审计反序列化漏洞

序列化与反序列化:
序列化:把对象转换为字节序列的过程称为对象的序列化
反序列化:把字节序列恢复为对象的过程称为对象的反序列化

漏洞成因:
反序列化对象中存在魔术方法,而且魔术方法中的代码可以被控制,漏洞根据不同的代码可以导致各种攻击,如代码注入,sql注入,目录遍历等等

序列化的不同结果
public:
private:
protect:

漏洞本质:unserialize函数的变量可控,php文件中存在可利用的类,类中有魔术方法

魔术方法:
_construc(),_destruct()
_call(),_callStatic()
_get(),_set()
_isset(),_unset()
_sleep(),_wakeup()
_toString()
_invoke()
_set_state()
_clone()
_debuginfo()

代码:
<?php
error_reporting(0);
include "flag.php";
$KEY = "D0g3!!!";
$str = $_GET[‘str‘];
if (unserialize($str) === "$KEY")
{
    echo "$flag";
}
show_source(__FILE__);

直接上传s:7:"D0g3!!!"即可

原文地址:https://www.cnblogs.com/Hydraxx/p/10357335.html

时间: 2024-08-30 09:47:47

php代码审计9审计反序列化漏洞的相关文章

php代码审计7审计csrf漏洞

跨站请求伪造,也有人写出xsrf,黑客伪造用户的http请求,然后将http请求发送给存在csrf的网站,网站执行了伪造的http请求,就引发了跨站请求伪造 漏洞危害:攻击者盗用了你的身份信息,以你的名义发送恶意请求,如发送邮件,消息,盗取你的账号,甚至购买物品,虚拟货币转账等 漏洞本质:攻击者获取到重要参数,成功构造一个伪造请求,如http://www.xx.xx/xx.php?xx=xx&&id=1 挖掘思路:管理后台,会员中心,添加用户等,被引用的核心文件里面有没有验证token和r

小白审计JACKSON反序列化漏洞

1. JACKSON漏洞解析 poc代码:main.java import com.fasterxml.jackson.databind.ObjectMapper; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; import org.springframework.util.FileCopyUtils; import java.io.ByteArrayOutputStream; import java.io.File

.NET高级代码审计(第四课) JavaScriptSerializer反序列化漏洞

0X00 前言 在.NET处理 Ajax应用的时候,通常序列化功能由JavaScriptSerializer类提供,它是.NET2.0之后内部实现的序列化功能的类,位于命名空间System.Web.Script.Serialization.通过System.Web.Extensions引用,让开发者轻松实现.Net中所有类型和Json数据之间的转换,但在某些场景下开发者使用Deserialize 或DeserializeObject方法处理不安全的Json数据时会造成反序列化攻击从而实现远程RC

PHP反序列化漏洞代码审计—学习资料

1.什么是序列化 A.PHP网站的定义: 所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示.unserialize()函数能够重新把字符串变回php原来的值. 序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字. 按个人理解就是: serialize()将一个对象转换成一个字符串,unserialize()将字符串还原为一个对象. 当然从本质上来说,反序列化的数据本身是没有危害的,用户可控数据进行反序列化是存在危害的. B.PH

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

Java反序列化漏洞通用利用分析

2015年11月6日,FoxGlove Security安全团队的@breenmachine 发布的一篇博客[3]中介绍了如何利用Java反序列化漏洞,来攻击最新版的WebLogic.WebSphere.JBoss.Jenkins.OpenNMS这些大名鼎鼎的Java应用,实现远程代码执行. 然而事实上,博客作者并不是漏洞发现者.博客中提到,早在2015年的1月28号,Gabriel Lawrence (@gebl)和Chris Frohoff (@frohoff)在AppSecCali上给出了

Java反序列化漏洞的挖掘、攻击与防御

一.Java反序列化漏洞的挖掘 1.黑盒流量分析: 在Java反序列化传送的包中,一般有两种传送方式,在TCP报文中,一般二进制流方式传输,在HTTP报文中,则大多以base64传输.因而在流量中有一些特征: (1)TCP:必有aced0005,这个16进制流基本上也意味者java反序列化的开始: (2)HTTP:必有rO0AB,其实这就是aced0005的base64编码的结果: 以上意味着存在Java反序列化,可尝试构造payload进行攻击. 2.黑盒java的RMI: rmi是java的

ref:PHP反序列化漏洞成因及漏洞挖掘技巧与案例

ref:https://www.anquanke.com/post/id/84922 PHP反序列化漏洞成因及漏洞挖掘技巧与案例 一.序列化和反序列化 序列化和反序列化的目的是使得程序间传输对象会更加方便.序列化是将对象转换为字符串以便存储传输的一种方式.而反序列化恰好就是序列化的逆过程,反序列化会将字符串转换为对象供程序使用.在PHP中序列化和反序列化对应的函数分别为serialize()和unserialize().反序列化本身并不危险,但是如果反序列化时,传入反序列化函数的参数可以被用户控

Natas33 Writeup(Phar反序列化漏洞)

Natas33: 又是一个上传文件的页面,源码如下: // graz XeR, the first to solve it! thanks for the feedback! // ~morla class Executor{ private $filename=""; //三个私有参数 private $signature='adeafbadbabec0dedabada55ba55d00d'; private $init=False; function __construct(){