渗透测试-php反序列化漏洞
php反序列化漏洞
前言
一、什么是php反序列化漏洞
在理解这个漏洞前,你需要先搞清楚php中serialize(),unserialize()这两个函数。
序列化serialize()
序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象:
class S{
public $test=“pikachu”;
}
$ s=new S(); //创建一个对象
serialize($s); //把这个对象进行序列化
序列化后得到的结果是这个样子的:O:1:“S”:1:{s:4:“test”;s:7:“pikachu”;}
O:代表object
1:代表对象名字长度为一个字符
S:对象的名称
1:代表对象里面有一个变量
s:数据类型
4:变量名称的长度
test:变量名称
s:数据类型
7:变量值的长度
pikachu:变量值
反序列化unserialize()
就是把被序列化的字符串还原为对象,然后在接下来的代码中继续使用。
$u=unserialize(“O:1:“S”:1:{s:4:“test”;s:7:“pikachu”;}”);
echo $u->test; //得到的结果为pikachu
序列化和反序列化本身没有问题,但是如果反序列化的内容是用户可以控制的,且后台不正当的使用了PHP中的魔法函数,就会导致安全问题
常见的几个魔法函数:
__construct()当一个对象创建时被调用
__destruct()当一个对象销毁时被调用
__toString()当一个对象被当作一个字符串使用
__sleep() 在对象在被序列化之前运行
__wakeup将在序列化之后立即被调用
漏洞举例:
class S{
var $test = "pikachu";
function __destruct(){
echo $this->test;
}
}
$s = $_GET['test'];
@$unser = unserialize($a);
payload:O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
二、php反序列化漏洞引起的xss漏洞
我们打开pikachu进行练习
我们知道该漏洞就围绕着那两个函数,我们先进行代码审计
http://192.168.222.4/pikachu/vul/unserilization/sec.php
是一个序列化字符串
查看源代码是一个存在xss的代码
我们进行练习
http://192.168.222.4/pikachu/vul/unserilization/unser.php
打开源代码看看
发现存在函数魔法和存在任意输入的参数,明显存在反序列化漏洞,我们可以构造payload输入
O:1:“S”:1:{s:4:“test”;s:29:“”;}
var $test = “pikachu”;可以将pikachu修改为我们的payload就可以了,我们输入提交发现触发了xss漏洞,这就是通过输入参数没有进行过滤而产生的漏洞,实验结束。
总结
本次实验简单介绍了php反序列化漏洞的使用方法和原理。
相关文章
- 暴力破解漏洞实战靶场笔记
- 内网远程溢出漏洞利用
- PHP如何自动识别第三方Restful API的内容,自动渲染成 json、xml、html、serialize、csv、php等数据
- Windows下图文详解PHP三种运行方式(php_mod、cgi、fastcgi)
- [获取行数]php读取大文件提供性能的方法,PHP的stream_get_line函数读取大文件获取文件的行数的方...
- Relearning PHP (2) – php 的浮点数float
- Jira未授权SSRF漏洞复现(CVE-2019-8451)
- PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
- PHP反序列化详解(二)——PHP魔术方法与PHP反序列化漏洞
- CVE-2019-0192 Apache solr远程反序列化代码执行漏洞危害
- Atitit 短信验证的漏洞 目录 1.1. APP读取短信1 1.2. 手机上访问的业务来说,短信验证码就没那么独立了1 1.3. 短信保管箱”1 1.4. 自动把短信备份到云端的功能。2
- 通杀! 熬夜码的 - 八万字 - 让你一文读懂SQL注入漏洞原理及各种场景利用
- 05 - vulhub - Apache HTTPD 换行解析漏洞(CVE-2017-15715)
- CRLF Injection漏洞的利用与实例分析
- XSS漏洞
- 2. SSTI(模板注入)漏洞(cms实例篇)
- 1.3 任意文件查看与下载漏洞
- 目录遍历漏洞——本质上是因为php这样的后端代码实现中使用了include这样的模板函数导致
- 漏洞利用 Exploit---利用默认口令、IP假冒、应用漏洞
- php去除换行符的方法小结(PHP_EOL变量的使用)
- WEB漏洞攻防 - SQL注入 - 二次注入
- 网络安全80端口—-PHP CGI参数注入执行漏洞
- 文件包含漏洞渗透与攻防(一)