php+反序列化代码执行漏洞,PHP反序列化漏洞
0x001 漏洞产生原理
在反序列化的过程中自动触发了某些魔术方法。未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致XSS、代码执行、文件写入、文件读取等不可控后果。
0x002 漏洞触发条件
一般只能通过代码审计的方式挖掘该漏洞,寻找代码中unserialize()函数的变量可控,且PHP文件代码中存在可利用的类,同时类中具有魔术方法。
0x003 PHP魔术方法__construct() 当一个对象创建时被调用
__destruct() 当一个对象销毁时被调用
__toString() 当一个对象被当作一个字符串使用
__sleep() 在对象在被序列化之前运行
__wakeup 将在序列化之后立即被调用
0x004 序列化数据格式
序列化主要分为字符型、数组型、对象型。
以序列化对象格式为例
0x005 反序列化漏洞
1. XSS
漏洞示例demo2.php:
构造序列化值:
利用序列化值构造POC:
成功在页面进行了弹窗:在序列化数据之后,立即自动调用了__wakeup()函数,执行 。
2. 代码执行
漏洞示例test.php:
构造序列化值:
利用序列化值构造POC:
成功显示了phpinfo页面:在反序列化该数据时,自动触发了_destruct()函数,执行 eval(phpinfo())。
3. 文件写入
漏洞示例demo3.php:
构造序列化值:
利用序列化值构造POC:
成功将phpinfo写入了shell.php:在反序列化该数据结束后,,立即自动调用了__wakeup()函数,而在__wekeup()创建了对象后,就会自动调用__construct()函数,从而执行了文件写入的操作。
4. 文件读取
以2020 ISCC CTF中的一道题为例
代码审计
以GET形式传入一个data参数,并且对data参数进行了反序列化;
使用了_toString() 当一个对象被当作一个字符串时自动调用
使用file_get_contents()包含$file文件内容;
最后使用base64_encode()加密输出$file文件中的内容。
构造序列化值:
利用序列化值构造POC:
成功显示了flag.php文件中的内容:在反序列化该数据时,自动触发了_toString()函数,执行 base64_encode(file_get_contents($filename))。
5. 漏洞拓展
上面讲的都是基于魔术方法下的敏感操作导致的反序列化导致的安全问题。但是当漏洞/危险代码存在在类的普通成员方法中,该如何利用呢?
漏洞示例demo4.php:
我们发现类的普通方法调用eval()函数,这个函数很危险,如果可控就可能造成代码执行。
通过代码发现$_GET['test']可控,因为使用unserialize()会自动调用__destruct(),所以它会先调用action()函数,然后会走到x1类和x2类,而安全问题在x2类中。
构造如下序列化代码serialize-demo4.php:
上述序列化代码运行后得到的序列化值:
利用得到的序列化值构造POC:
0x006 反序列化webShell
1. 配合菜刀getShell
漏洞示例test.php:
利用eval()传入可控参数,写入一句话木马 <?php @eval($_GET[cmd]);?>,构造序列化数据值:
利用序列化值构造POC:
执行该POC后,会在同级目录下生成一个shell.php文件,通过菜刀连接访问shell.php,即可getShell。
2. 反序列化木马
利用反序列化的特点,编写webShell木马
使用菜刀连接该webShell木马
此木马与正常文件很像,所以对于免杀安全狗等防护软件效果很不错。
参考文章
php+反序列化代码执行漏洞,PHP反序列化漏洞相关推荐
- fastjson反序列化漏洞_漏洞预警Fastjson再爆反序列化代码执行漏洞;星巴克被发现存在信息泄露风险...
漏洞预警 Fastjson再次爆出通杀的反序列化代码执行漏洞 漏洞信息 据态势感知平台监测,网络上再次出现此前未曾发现的fastjson反序列化攻击向量. Fastjson是由阿里巴巴推出基于Java ...
- pikachu RCE(remote command/code execute)(远程命令执行/远程代码执行)(皮卡丘漏洞平台通关系列)
目录 一.官方介绍 二.诚意推荐 三.悠闲通关 第1关 exec "ping" 第2关 exec "eval" 一.官方介绍 本节引用内容来源pikachu漏洞 ...
- android fastjson漏洞_【漏洞预警】Fastjson 远程代码执行漏洞(暂无PoC)
Fastjson简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库.它采用一种"假定有序快速匹配"的算法,把JSON Parse的性能提升到极致,是目前Jav ...
- 突发,Log4j2 爆出远程代码执行漏洞,各大厂纷纷中招!
今日推荐 这 9 个 Java 开源项目 yyds,你知道几个?阿里技术专家推荐的20本书,免费送!K8S 部署 SpringBoot 项目(一篇够用)妙用Java 8中的 Function接口 消灭 ...
- rmi远程代码执行漏洞_微软 Windows DNS Server 远程代码执行漏洞
安全预警 漏洞:微软 Windows DNS Server 远程代码执行漏洞漏洞编号:CVE-2020-1350威胁程度:高影响范围: Windows Server 2008 for 32-bit S ...
- 【高危漏洞通告】Spring Framework 远程代码执行 (CVE-2022-22965)
[高危漏洞通告]Spring Framework 远程代码执行 (CVE-2022-22965)漏洞通告 一. 漏洞情况 Spring 框架(Framework)是一个开源的轻量级 J2EE 应 ...
- php代码执行漏洞,预警!!!PHP 远程代码执行漏洞
一.前言 2019年10月22日,在github上公开了一个关于PHP的远程代码执行漏洞. 斗象智能安全CRS产品已全面支持该漏洞的检测与验证,用户可直接登陆www.riskivy.com 进行验证. ...
- Python 被爆大 Bug,攻击者可远程代码执行漏洞!
整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 近日,Python 软件基金会(PSF)释出 Python 3.8.8 和 3.9.2 版本,该版本主要修复了两个值得注意的安全漏洞,其 ...
- Apache Log4j任意代码执行漏洞安全风险通告第三次更新
奇安信CERT 致力于第一时间为企业级用户提供安全风险通告和有效解决方案. 风险通告 近日,奇安信CERT监测到Apache Log4j存在任意代码执行漏洞.经过分析,该组件存在Java JNDI注入 ...
最新文章
- 谷歌一员工确诊新冠肺炎:已大面积限制员工出行
- [剑指offer] 字符流中第一个不重复的字符
- controller实现pdf的下载功能
- PyQt5 Introduction and components
- Linux下读写芯片的I2C寄存器
- POJ2182-Lost Cows【树状数组,二分】
- Android夜间模式实践
- 纯HTML、CSS实现下拉菜单
- 手把手·从零开始撸Docker 系列一
- python 浏览器自动化 弹窗控制_selenium 网页自动化 - 在访问一个网页时弹出的浏览器窗口,我该如何处理?...
- openSUSE Tumbleweed 支持 Linux Kernel 4.20
- 视频教程-CCNA自学视频课程专题四:CCNA认证重点难点解析3(扩展篇)-思科认证
- linux数字小键盘,银行工作者必备!小郭数字小键盘练习软件:免费数字键小键盘指法练习...
- 关于.Net WebProxy【转】
- JAVA时间格式化处理_java时间格式化处理
- vc linux 中文版下载64位,VSCode 64位下载
- Android之自定义ViewGroup经典例子
- VOT测试自己的数据集
- 【C语言-09】给定两个整形变量的值,将两个值的内容进行交换。(内附异或法原理讲解哦~)
- 失去了翅膀,却依然坚信只要拼搏就可以飞翔
热门文章
- 【渝粤题库】陕西师范大学202011 微观经济学 作业 (专升本、高起本)
- webstorm前端调用后端接口_软件测试面试题:怎么去判断一个bug是前端问题还是后端问题...
- logistic回归 如何_R_语言 logistic回归分析
- python下载之后无法启动_安装后启动时,适用于Python的Eric IDE崩溃
- 【自适应盲均衡2】多径衰落信道的复数常模算法(CMA)的理论推导与MATLAB仿真
- Java集合(3)--Iterator迭代器
- 计算机二级web题目(8.3)--简单应用题2
- 通信工程施工设计纲领文件
- 7.5 GRASP原则五:高内聚 High Cohesion
- 接口自动化 基于python+Testlink+Jenkins实现的接口自动化测试框架