分享好友 最新动态首页 最新动态分类 切换频道
PHP魔术方法:Typecho反序列化漏洞
2024-12-21 16:00

服务器安装typecho之后没有删除install.php,导致可以在前台利用反序列化漏洞执行任意代码。

PHP魔术方法:Typecho反序列化漏洞

PHP序列化的函数是serialize(),它可以把php对象转化为字符串,加上base64编码,方便传输。
例如对象

可以通过serialize()转化为字符串(x00开头说明是私有变量

再base64编码

反序列化函数是unserialize(),作用和serialize()相反。所以当用户可以控制unserialize()的参数时,就可能有漏洞产生。

php的魔术方法有很多,容易利用的有__wakeup()、__destruct()、__toString()。
这里还要使用一个方法__get()

__toString() 方法用于一个类被当成字符串时应怎样回应。例如 echo $obj; 应该显示些什么。

unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。

PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。

读取不可访问属性的值时,__get() 会被调用。

PHP手册有详细的解释:魔术方法

PHP 5.6.31 Typecho 1.0 (14.10.10)

1.查找反序列化函数和用户可控点
/install.php 230行
程序获取用户cookie,base64解码后反序列化成$config,然后$config[‘adapter’]被当成字符串了,我们来看看有什么类可以利用__toString()。

mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $… ]] )
第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数。

这里把$this->_filter中的元素当做回调函数,把刚才的$this->_params[‘screenName’]作为回调函数的参数。所以用户可以通过修改cookie为构造好的序列化对象,执行任意命令。

4.构造payload
只要按上面的思路构造即可,但有个地方需要注意,install.php 54行用了ob_start(),所有输出会先留在缓冲区中,call_user_func()运行完我们的命令后__toString()会抛出致命错误,导致清空缓冲区,返回状态码500(不知道有没有理解错)。

原文

在install.php的开始,调用了ob_start()

在php.net上关于ob_start的解释是这样的。
ob_start

因为我们上面对象注入的代码触发了原本的exception,导致ob_end_clean()执行,原本的输出会在缓冲区被清理。

我们必须想一个办法强制退出,使得代码不会执行到exception,这样原本的缓冲区数据就会被输出出来。

这里有两个办法。 1、因为call_user_func函数处是一个循环,我们可以通过设置数组来控制第二次执行的函数,然后找一处exit跳出,缓冲区中的数据就会被输出出来。 2、第二个办法就是在命令执行之后,想办法造成一个报错,语句报错就会强制停止,这样缓冲区中的数据仍然会被输出出来。

解决了这个问题,整个利用ROP链就成立了

如果只是想种一句话木马的话就不用会显啦,判断状态码500就证明成功。

综合了两篇文章的payload

typecho.py

删除install.php

第一次写博客,图很多,字不多,代码审计是跟着文章按图索骥,也不知道自己理解的有没有错,以后还要努力学习一个。

最新文章
云南排名前十seo公司(云南百度推广排名查询)
其实云南排名前十seo公司的问题并不复杂,但是又很多的朋友都不太了解云南百度推广排名查询,因此呢,今天小编就来为大家分享云南排名前十seo公司的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录网络seo排
AI+传媒:全维赋能开启新纪元,2025年大展宏图!
在迅速发展的科技浪潮中,人工智能(AI)正在全方位推动各行各业的变革。最近,北京人工智能产业联盟发布的《人工智能蓝皮书:中国通用人工智能发展报告(2024)》一方面揭示了生成式人工智能的创新动态,另一方面也昭示着AI在传媒领域的广
如何选择合适的邮箱进行OpenAI注册
如今,AI技术的发展已经渗透到了各个领域,并对我们的生活产生了深远的影响。OpenAI作为全球领先的人工智能研究机构,致力于推动AI技术的创新与发展。如果你对AI技术感兴趣,想要注册OpenAI账号,那么一个有效的邮箱是必不可少的。选择合适
12种文本数据采集方法
grabage_0.1_nk提供最基础的采集功能,有经验的开发人员可以将其嵌入到系统模块中用于采集数据。nk版本的内容检查不算完整,只能匹配部分发布时间,对于部分网页将作者,来源,发布时间混合在一起的情况,未能很好的解决。该问题会在将来的
AIGC重塑文旅行业新场景、新业态、新消费
(来源:中陆必得旅游规划)编者按AIGC(人工智能生成内容)在文旅产业中发挥着越来越重要的作用。通过深度学习、自然语言处理和计算机视觉等技术,AIGC能够自动化地分析和理解大量数据,从而生成丰富多样的内容。这不仅提高了内容创作的效
AI代码生成器——Cody
Cody由Sourcegraph开发,是一款人工智能驱动的编码助手,它不仅仅是一个简单的代码完成工具,更是一项功能强大且富有创新精神的工具。其主要优势在于能够深度理解代码编写的上下文,为开发人员提供准确、有意义的建议和评论。 Cody能够利用
会议OA项目之会议审批(亮点功能:将审批人签名转换为电子手写签名图片)
Java实现支持人脸识别的会议签到系统,方便参会人员高效签到,提高会议签到的安全性。采用深度学习进行模型训练以提高识别准确率,需要设计并优化相关的人脸识别算法。基本功能​ 1、支持基本的会议管理功能,包括会议申请、开始会议、会议
用AI绘画,让创意从未如此简单!搜狐简单AI带你开启智能创作之旅
在这个信息化高速发展的时代,创意和效率是任何行业中立足的关键。然而,对于许多人来说,面对日益增多的工作任务,如何高效且富有创意地完成工作成为了不小的挑战。想象这样一个情境:小李,一位营销专员,正在为即将到来的产品发布会寻找
WordPress 发布文章,出现发布失败与更新失败的解决办法
新版的Wordpress出来后,用新版的覆盖了之前老板的文件之后,出现了无法发布文章,更新老文章失败等错误提示。 这是什么原因呢?我通过网络查询,收集了以下原因和解决方法。1.古腾堡编辑器出错 这种情况非
影视建站遇到的坑与修复过程 苹果cms+海螺模板
主题设置后台 安装PHP扩展 后台快捷菜单配置添加 海螺主题设置,/admin.php/admin/conch/theme免费解析网:http://api.momimi.cn/?url=站长交流群:707031200海螺模板完美修复版2020.01.04带模板独立后台管理系统的多功能模板。使用此模板务
相关文章
推荐文章
发表评论
0评