php反序列化漏洞复现

超适合小白的php反序列化漏洞复现

写在前头的话

在OWASP TOP10中,反序列化已经榜上有名,但是究竟什么是反序列化,我觉得应该进下心来好好思考下。我觉得学习的时候,所有的问题都应该问3个问题:what、why、how。what:什么是反序列化,why:为什么会出现反序列化漏洞,how:反序列化漏洞如何利用。

在这里我对反序列化的原理不做详细介绍,大家可以自行到网上搜索。在这里我只叙述自己的复现过程,超简单的好不。

实验环境

Windows 10+phpstudy 2016

实验步骤

测试代码

PHP序列化代码

说起PHP反序列化,那必须先简单说一下PHP的序列化。PHP序列化是将一个对象、数组、字符串等转化为字节流便于传输,比如跨脚本等。而PHP反序列化是将序列化之后的字节流还原成对象、字符、数组等。但是PHP序列化是不会保存对象的方法。

测试代码  如图:

PHP反序列化代码

PHP类中有一种特殊函数体的存在叫魔法函数,magic函数命名是以符号__开头的,比如 __construct, __destruct, __toString, __sleep, __wakeup等等。这些函数在某些情况下会自动调用,比如__construct当一个对象创建时被调用,__destruct当一个对象销毁时被调用,__toString当一个对象被当作一个字符串使用。

而在反序列化时,如果反序列化对象中存在魔法函数,使用unserialize()函数同时也会触发。这样,一旦我们能够控制unserialize()入口,那么就可能引发对象注入漏洞。

如上述代码,构造payload:

http://127.0.0.1:8888/phpxuliehua/test.php?test=O:1:"A":1:{s:4:"test";s:31:"<audio src=x onerror=alert(47)>";}  

反序列化后在脚本运行结束时就会调用_destruct函数,同时会覆盖test变量,然后弹窗

深度利用

我们可以利用该漏洞点,控制输入变量,拼接成一个序列化对象。然后再构造一个魔法函数,比如在_destruct()函数中调用eval执行序列化对象中的语句。

测试效果如图所示:

既然都可以执行命令了,其他的大佬们自行操作把。

原文地址:https://www.cnblogs.com/zy-king-karl/p/11436858.html

时间: 2024-11-02 10:17:29

php反序列化漏洞复现的相关文章

Jboss反序列化漏洞复现(CVE-2017-12149)

一.漏洞描述 该漏洞为Java反序列化错误类型,存在于jboss的HttpInvoker组件中的ReadOnlyAccessFilter过滤器中.该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞. 二.漏洞影响版本 Jboss 5.x Jboss 6.x 三.漏洞复现环境搭建 Win7 :192.168.10.171 1. 安装java环境,测试java环境 2. 下载jboss-as-6.1.0-final,下载下来是一个压缩包 http://jbos

WebLogic XMLDecoder反序列化漏洞复现

参考链接: https://bbs.ichunqiu.com/thread-31171-1-1.html git clone https://github.com/vulhub/vulhub.git cd vulhub/weblogic/ssrf/ docker-compose up -d 这时我们就可以访问docker中weblogic的地址,地址为ubuntu(IP):7001,访问 http://192.168.126.142:7001/ 如下图搭建成功. 检验POC import req

6.JBoss5.x6.x 反序列化漏洞(CVE-2017-12149)复现

2017 年 9 月 14 日,国家信息安全漏洞共享平台( CNVD )收录了 JBOSS Application Server 反序列化命令执行漏洞( CNVD-2017-33724,对应 CVE-2017-12149 ),远程攻击者利用漏洞可在未经任何身份验证的服务器主机上执行任意代码. 漏洞细节和验证代码已公开,近期被不法分子利用出现大规模攻击尝试的可能性较大. 0x01. 漏洞复现 1). 环境准备 JBOSS 下载地址:http://download.jboss.org/jbossas

2019-11-2:漏洞复现,ActiveMQ反序列化漏洞,CVE-2015-5254

文章仅仅学习使用,所有步骤均来自网络,博主无法鉴别判断用户使用本网站教程及软件的真实用途,敬请用户在本国法律所允许范围内使用,用户一旦因非法使用而违反国家相关的法律法规,所造成的一切不良后果由该用户独立承担,博主不负责也不承担任何直接间接或连带等法律责任. *文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担. ActiveMQ反序列化漏洞,CVE-2015-5254 Apache ActiveMQ是美国阿帕奇(Apache)软件基金会

php反序列化漏洞绕过魔术方法 __wakeup

0x01 前言 前天学校的ctf比赛,有一道题是关于php反序列化漏洞绕过wakeup,最后跟着大佬们学到了一波姿势.. 0x02 原理 序列化与反序列化简单介绍 序列化:把复杂的数据类型压缩到一个字符串中 数据类型可以是数组,字符串,对象等  函数 : serialize() 反序列化:恢复原先被序列化的变量 函数: unserialize() 1 <?php 2 $test1 = "hello world"; 3 $test2 = array("hello"

Typecho 反序列化漏洞导致前台 getshell

前言 最早知道这个漏洞是在一个微信群里,说是install.php文件里面有个后门,看到别人给的截图一看就知道是个PHP反序列化漏洞,赶紧上服务器看了看自己的博客,发现自己也中招了,相关代码如下: 然后果断在文件第一行加上了die: <?php die('404 Not Found!'); ?> 今天下午刚好空闲下来,就赶紧拿出来代码看看. 漏洞分析 先从install.php开始跟,229-235行: <?php$config = unserialize(base64_decode(T

【S2-052】漏洞复现(CVE-2017-9805)

一.漏洞描述 Struts2 的REST插件,如果带有XStream组件,那么在进行反序列化XML请求时,存在未对数据内容进行有效验证的安全隐患,可能发生远程命令执行. 二.受影响版本 Struts2.5 – Struts2.5.12版本 Struts2.3.33版本 三.漏洞POC POST /struts2-rest-showcase/orders/3/edit HTTP/1.1 Host: localhost:8888 Upgrade-Insecure-Requests: 1 User-A

weblogic反序列化漏洞 cve-2018-3245

weblogic反序列化漏洞 CVE-2018-3245 0x00 针对cve-2018-2893的修复 针对JRMP反序列化修复的方式依旧是增加黑名单:黑名单package:java.rmi.activation sun.rmi.server黑名单class:java.rmi.server.UnicastRemoteObject java.rmi.server.RemoteObjectInvocationHandler 0x01绕过方法 因为将java.rmi.server.RemoteObj

Fastjson 1.2.22-24 反序列化漏洞分析

0x00 简单介绍 介绍:FastJson是一款由阿里开发的JSON库 影响版本:1.2.22-24 官方通告:https://github.com/alibaba/fastjson/wiki/security_update_20170315 补丁:https://github.com/alibaba/fastjson/commit/d075721cf396d5cb70e24c824b901e3a9a5b342b FastJson的简单使用 先通过一个简单的demo来熟悉一下FastJson的基