当前位置:首页 » 编程语言 » php反序列化漏洞

php反序列化漏洞

发布时间: 2022-12-26 16:18:07

⑴ [世安杯]一道关于php反序列化漏洞的题目

题目地址: http://ctf1.shiyanbar.com/shian-/
点进去,看到

没什么信息,因此ctrl+u查看源码

看到提示,file_get_contents()函数,联想到文件包含漏洞,因此google一波,查到

由于本题:allow_url_include=On
因此可以包含一个远程文件,假设你的云服务IP地址为:xxx
则可以输入 http://ctf1.shiyanbar.com/shian-/?user=http://xxxx/a.txt
其中a.txt的内容为: the user is admin

用base64解码,得到

看到源码之后,明白了需要使用$file把class.php包含进来,然后把$pass反序列化之后, echo $pass 这句话会执行对象里面的__toString函数,具体的反序列化漏洞查看 http://m.blog.csdn.net/qq_32400847/article/details/53873275
因此,接下来只要找到序列化之后的字符串,然后GET给pass就行了
复制class.php的源码到自己的虚拟机上,修改一下

保存之后,通过浏览器访问,得到:

接着把这个序列化字符串赋值给pass,以及用file包含class.php,构造出:

执行之后得到:

发现什么都没有,CTRL+U查看源码

这样就得到了flag;

此外,可以参考我之前的一篇文章 php伪协议的使用[获得webshell]
使用file= php://input ,之后传入一个webshell,再读取f1a9.php

⑵ 开源PHP组件漏洞曝光,多个运行CMS系统的网站受影响

据外媒报道,研究人员发现,CMS制造商Typo3开发的开源PHP组件PharStreamWrapper存在安全漏洞, 运行Drupal、Joomla或Typo3内容管理系统的网站均受影响。

据悉,该漏洞由研究人员Daniel Le Gall发现,被命名为Drupalgeddon,编号CVE-2019-11831, 允许黑客使用恶意phar归档替换网站的合法归档文件。 Drupal开发人员将其标记为中等危险级别,低于近期Drupal漏洞和早期远程代码执行漏洞的高危评级。

Drupal官方发布漏洞公告称,通过构造含有恶意代码的Phar文件, 黑客可绕过Drupal core7.x、8.x版本PHP组件中针对反序列化保护的拦截器,远程执行恶意代码, 影响业务系统安全。

此外,黑客还可能会 开发针对该漏洞的自动化攻击程序, 植入后门程序进一步释放矿工程序或DDoS僵尸木马等恶意软件,影响网站正常运行。

截至目前,官方已发布安全补丁修复该漏洞, 专家建议网站管理员尽快更新以保护网站。 其中运行Drupal版本8.7的网站需要升级到版本8.7.1,运行8.6或更早版本的网站需要更新到版本8.6.16,运行版本7的网站需要升级到版本7.67,而Joomla需要升级到版本3.9.6。

⑶ Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现

Apache Shiro <= 1.2.4

shiro默认使用了 CookieRememberMeManager ,其处理cookie的流程是:得到 rememberMe的cookie值 --> Base64解码 --> AES解密 --> 反序列化 。
然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。

前16字节的密钥 -->后面 加入序列化参数 --> AES加密 --> base64编码 -->发送 cookie 。

使用大佬脚本生成 payload( ysoserial.jar 文件和运行目录处于同一目录)
图片.png 图片.png
这里依旧使用docker进行漏洞复现
图片.png 图片.png 图片.png 图片.png 图片.png 图片.png 图片.png 图片.png 图片.png 图片.png 图片.png 图片.png
参考链接:
https://blog.csdn.net/three_feng/article/details/52189559
http://www.db-sec.com/2019/06/apache-shiro%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/

⑷ Apache Commons Collections1 反序列化命令执行漏洞

   当服务器收到序列化对象数据后,会调用对象类的readobject()方法进行反序列化,这里我们构造的恶意序列化对象使用的是AnnotationInvocationHandler类的实例化对象。所以当服务器收到这个对象时会去调用该类的readobject()方法进行反序列化,下面我们跟着上面的触发流程进行一步步触发分析。

结论 :在漏洞触发的第一步中,在反序列化我们向服务器发送的恶意序列化AnnotationInvocationHandler对象时会触发对构造该类对象时传入的Map类型对象的第一个键值对的value进行修改。

   当通过迭代器对象对TransformedMap类型的value值进行修改时会调用(TransformedMap类的父类并实现了 Map.Entry接口)中的内部类MapEntry的setValue()方法,debug运行可以看到this.parent变量值是TransformedMap对象的第一个键值对。

结论 :在漏洞触发的第二步中,触发了TransformedMap的checkSetValue()方法

   可以看到ChainedTransformer对象的transform()方法的功能是将传入的对象交给对象中的this.iTransformers变量引用的对象的transform()方法进行处理。this.iTransformers变量引用的对象从53行可知是对象实例化时传入的,从poc的25行可知我们实例化时传入一个Transformer[]的数组。

结论 :在漏洞触发的第三步中,TransformedMap.checkSetValue()触发ChainedTransformer.transform()方法。ChainedTransformer.transform()方法将传入的对象经过ChainedTransformer对象中的各个Transformer类型的实例对象调用实例化对象的transform()方法处理。

   由poc 20-25行可知ChainedTransformer对象中的Transformer类型的实例对象分别是ConstantTransformer、InvokerTransformer,首先触发ConstantTransformer对象的transform()方法,可以看出ConstantTransformer对象的transform()方法的功能是将传入的对象转换成实例化ConstantTransformer对象时传入的对象,由poc的21行可知实例化ConstantTransformer对象时传入的对象为java.lang.Runtime.class,因此经过ConstantTransformer.transform()后传入的参数变成了类对象 java.lang.Runtime.class ,再经过InvokerTransformer.transform()处理。

   从59-61行可以看出InvokerTransformer.transform()功能是通过反射得到传入对象中方法名为this.iMethodName参数类型为this.iParamTypes的方法,并执行该方法传入的方法参数为this.iArgs。而this.iMethodName、this.iParamTypes、this.iArgs三个参数都是我们在实例化InvokerTransformer对象时自定义的,这导致可以进行任意命令执行。

第一次执行InvokerTransformer.transform()方法后

第二次执行InvokerTransformer.transform()方法后

第三次执行InvokerTransformer.transform()方法

结论 :在漏洞触发的第四步中,传入的对象经过1次ConstantTransformer.transform()与3次InvokerTransformer.transform()转换触发exec()任意命令执行。

ps:jdk版本需要1.7

⑸ php数组反序列化失败,求解!!!

unserialize()解序列化函数里面要用实际长度!根据strlen返回的“实际长度”进行修改。
最后几行,改为:
echo "<br/>";
echo "实际长度=".strlen("fwejfo 策划送 fewf fewf ewfewf *%&5"); //输出35
echo "<p>";
var_mp(unserialize('a:4:{s:1:"a";s:2:"aa";s:1:"b";i:20;s:1:"c";s:47:"测试ljfiewojfowjfo分为丰富32&*%*&%*%%875khuiehf";i:10;s:35:"fwejfo 策划送 fewf fewf ewfewf *%&5";}'));
测试正确!
如果传递的字符串参数,解序列化失败,则返回 FALSE。

⑹ 这个网站干什么的 什么是PHP反序列化靶机实战

在我们讲PHP反序列化的时候,基本都是围绕着serialize(),unserialize()这两个函数。那么什么是序列化呢,序列化说通俗点就是把一个对象变成可以传输的字符串。举个例子,不知道大家知不知道json格式,这就是一种序列化,有可能就是通过array序列化而来的。而反序列化就是把那串可以传输的字符串再变回对象。而反序列化则比较容易出现漏洞。

这么序列化一下然后反序列化,为什么就能产生漏洞了呢?
这个时候,我们就要了解一下PHP里面的魔术方法了,魔法函数一般是以__开头,通常会因为某些条件而触发不用我们手动调用:
在研究反序列化漏洞的时候,如果服务器能够接收我们反序列化过的字符串、并且未经过滤的把其中的变量直接放进这些魔术方法里面的话,就容易造成很严重的漏洞了。

所以这个网站其实希望告诉大家这个反序列化的问题,并提供一些实战练习。

⑺ php如何循环反序列化

1.构造HITCON类反序列化字符串,其中$method='login',$args数组’username’部分可用于构造SQL语句,进行SQL注入,'password’部分任意设置。

2.调用login()函数后,利用username构造联合查询,使查询结果为SoFun类反序列化字符串,设置username构造联合查询,使查询结果为SoFun类反序列化字符串,设置username构造联合查询,使查询结果为SoFun类反序列化字符串,设置file=‘flag.php’,需绕过__wakeup()函数。

3.绕过oadData()函数对反序列化字符串的验证。

4.SoFun类 __destruct()函数调用后,包含flag.php文件,获取flag,需绕过__wakeup()函数

热点内容
扫描服务器名称如何填 发布:2024-05-18 13:36:29 浏览:114
芒果缓存的视频看不了视频怎么下载不了 发布:2024-05-18 13:35:14 浏览:518
c语言发短信 发布:2024-05-18 13:23:08 浏览:833
vb数据库程序 发布:2024-05-18 13:01:57 浏览:111
新建文件夹2免费手机 发布:2024-05-18 12:56:13 浏览:365
自己在家搭建服务器有水冷散热吗 发布:2024-05-18 12:47:27 浏览:649
旧版的安卓手机怎么使用微信 发布:2024-05-18 12:46:36 浏览:467
我的世界服务器开多久 发布:2024-05-18 12:45:32 浏览:593
vba获取网页表格数据库数据库数据库 发布:2024-05-18 12:23:24 浏览:700
腾讯服务器为什么卡顿 发布:2024-05-18 12:02:12 浏览:306