我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Zend Framework远程执行代码漏洞

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Zend Framework远程执行代码漏洞

Zend类是整个Zend Framework的基类,之所以有这个类是为了使Zend Framework遵循DRY原则(Don't Repeat Yourself)。这个类只包含静态方法,这些类方法具有Zend Framework中的很多组件都需要的功能。

Zend Framework出现漏洞已经不是第一次了,早在2012年,WooYun就曝出了Zend Framework(ZF)框架中的XMLRPC模块存在xxe(XML external entity)注入漏洞,攻击者可借此读取服务器上的任意文件,包括密码文件及PHP源代码。当时200余家网站存在这一漏洞,知名开源建站平台Magento等使用ZF框架的建站系统也受该漏洞影响。

本周bleepingcomputer揭露了一个不受信任的反序列化漏洞,攻击者可以利用Zend Framework在PHP站点上实现远程代码执行。

目前这个漏洞被命名为CVE-2021-3007,此漏洞也可能影响Zend的替代项目Laminas,在一年前,Linux 基金会与 Zend Technologies、Rogue Wave Software 一起宣布 Zend 框架正在过渡到 Linux 基金会,并在新的治理框架下改名为 Laminas 项目。

Zend Framework由安装超过5.7亿次的PHP包组成,开发人员使用该框架构建面向对象的web应用程序。

从不受信任的反序列化到RCE

本周,安全研究员Ling Yizhou披露了Zend Framework 3.0.0中的一个特定gadget链是如何被滥用于不受信任的反序列化攻击中的。

如果漏洞被利用,远程攻击者可以在某些情况下对易受攻击的PHP应用程序进行远程代码执行(remote code execution, RCE)攻击。

Zend Framework 3.0.0有一个反序列化漏洞,如果内容是可控的,可能导致远程代码执行,这与Stream中的Zend\Http\Response\Stream类的__destruct方法有关。

虽然实际的不受信任的反序列化必须来自易受攻击的应用程序,而且Zend框架本身并不存在,但Zend提供的类链可能帮助攻击者实现RCE。

当应用程序从用户或系统接收的已编码数据在应用程序解码之前未经过适当验证时,应用程序中就会出现不受信任的反序列化漏洞。

一个易受攻击的应用程序可能会反序列化并处理接收到的格式不正确的数据,这可能会导致从应用程序崩溃(拒绝服务)到攻击者能够在应用程序上下文中运行任意命令等一系列后果。

在Zend的示例中,漏洞源于Stream类的析构函数,这是一个PHP魔术方法。

在面向对象编程中,构造函数和析构函数是在创建和销毁新类对象时分别调用的方法。

例如,在本例中,一个新创建的Stream对象将通过构造函数在其概念处运行一系列命令。

一旦对象在整个程序执行工作流程中达到其目的,PHP解释程序将最终调用该对象的析构函数,并遵循另一组命令来释放内存,执行清理任务并删除任何临时文件,这是一种好方法。

Yizhou指出,Stream的析构函数调用的用于删除文件的unlink()方法需要一个文件名作为参数,文件名是字符串数据类型。


Zend Framework和Laminas项目中的漏洞破坏程序

实际上,如果streamName对象为非字符串类型,则在应用程序执行结束时,仍将其传递给析构函数。因此,只期望字符串值的析构函数将尝试调用对象的__toString方法,以获取与字符串等价的值。但是,可以由对象的创建者,或者对象实例化的类的创建者,轻松地自定义__toString方法。例如,Yizhou强调了Zend Framework的Gravatar类中的__toString方法是由其程序员编写的,其最终返回了攻击者可以直接控制的值,以执行任意代码。

这意味着,如果将Stream类传递到预期为streamName的Gravator对象,在某些情况下,攻击者可以在使用Zend构建的易受攻击的PHP应用程序中运行任意命令。

研究人员演示了至少2种情况,可以将序列化的对象传递给Zend,当通过PHP应用程序对其进行解析时,将在呈现的网页上呈现攻击者命令的输出。

在概念验证(PoC)漏洞中,研究人员演示了web应用程序的phpinfo页面是如何成功解析他的系统命令“whoami”通过一个序列化的HTTP请求,并返回Windows帐户名“nt authority\system”。

研究人员在演示对讲机上成功运行了“whoami”命令,获得了“nt authority system”输出

使用Laminas构建的应用也可能会受到影响

在2020年1月,Zend框架被迁移到Laminas项目,大量的代码被迁移到新的代码库中。

例如,带有上述析构函数的Zend的Stream.php类在某些版本的Laminas中仍然存在。

该代码可能与Laminas项目Laminas -http有关。维护人员不再支持Zend框架。然而,并不是所有的Zend Framework 3.0.0漏洞都存在于Laminas项目版本中。

虽然这并不一定表明所有用Laminas项目构建的应用程序都是脆弱的,但建议开发人员做好必要的防护。

考虑到PHP能够在一定程度上控制大约80%的互联网站点,并且考虑到Zend Framework的普及程度,建议开发人员彻底检查他们的web应用程序,以确定是否存在不受信任的对象反序列化。

本周在Yii Framework中发现了一个类似的gadget链,攻击者可以使用它们来攻击易受攻击的应用程序。

对应用程序执行彻底的安全审计是一种不时发现零日和特定于环境的漏洞的方法。

本文翻译自:

https://www.bleepingcomputer.com/news/security/zend-framework-remote-code-execution-vulnerability-revealed/

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Zend Framework远程执行代码漏洞

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Zend Framework远程执行代码漏洞

本周bleepingcomputer揭露了一个不受信任的反序列化漏洞,攻击者可以利用Zend Framework在PHP站点上实现远程代码执行。

Discuz! 7.1 远程代码执行漏洞

截稿至此时,黑客X档案等一些使用discuz!最新版的论坛已被攻击进而无法访问。 首先说一下,漏洞是t00ls核心群传出去的,xhming先去读的,然后我后来读的,读出来的都是代码执行,1月5日夜里11点多钟,在核心群的黑客们的要求下,xh
2022-06-12

漏洞预警!Apache Struts 2曝出远程代码执行漏洞

该漏洞被追踪为 CVE-2023-50164,其根源在于文件上传逻辑,该逻辑可实现未经授权的路径遍历,在这种情况下极易被用来上传恶意文件并执行任意代码。

DrayTek 路由器爆远程代码执行漏洞

DrayTek是一家位于中国台湾的网络设备制造商,其生产的设备主要包括路由器、交换机、防火墙以及VPN设备等。

APACHE OFBIZ XMLRPC远程代码执行漏洞分析

近期,研究人员报告了一个存在于Apache OFBiz中的反序列化漏洞。这个漏洞是由多个Java反序列化问题所导致的,当代码在处理发送至/webtools/control/xmlrpc的请求时,便有可能触发该漏洞。未经认证的远程攻击者将能够
漏洞2024-12-10

Apache Log4j 2 远程代码执行漏洞详解

Apache Log4j 2 是一款常用的 Java 日志管理工具,但在其版本 2.0 到 2.14.1 中存在一个严重的远程代码执行漏洞(CVE-2021-44228),该漏洞可能导致攻击者远程执行任意代码,并完全控制受影响的服务器。该漏
2023-09-28

如何进行Drupal 远程代码执行漏洞预警

这期内容当中小编将会给大家带来有关如何进行Drupal 远程代码执行漏洞预警,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。0x00 漏洞背景北京时间2月21日,360CERT 监控到 Drupal 发布的
2023-06-19

Chrome和Edge远程代码执行0Day漏洞曝光

安全研究人员Rajvardhan Agarwal在推特上发布了一个可远程代码执行(RCE)的0Day漏洞,该漏洞可在当前版本的谷歌Chrome浏览器和微软Edge上运行。

ThinkPHP远程代码执行漏洞是什么样的

本篇文章为大家展示了ThinkPHP远程代码执行漏洞是什么样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架。Thinkp
2023-06-04

关于Windows Print Spooler远程代码执行0day漏洞

这是Windows Print Spooler中的另一个零日漏洞,可以通过攻击者控制下的远程服务器和“队列特定文件”功能,为威胁行为者提供Windows上的管理权限。
Windows2024-12-03

weblogic 远程代码执行漏洞的示例分析

本篇文章给大家分享的是有关weblogic 远程代码执行漏洞的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。0x00 漏洞概述今天,Oracle已经发布了季度补丁更新。
2023-06-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录