ThinkPHP framework 任意代码执行漏洞预警

ThinkPHP是一个国内使用很广泛的老牌PHP MVC框架。貌似国内有不少创业公司或者项目都用了这个框架。

最近官方发布了一个安全补丁,官方表述是:该URL安全漏洞会造成用户在客户端伪造URL,执行非法代码。

可是貌似大多数开发者和使用者并没有注意到此漏洞的危害性,应者了了,更不用说有多少人去升级了。随后我对其进行了分析,发现此问题果然是一个非常严重的问题,只要使用了thinkphp框架,就可以直接执行任意php代码。特此发帖预警各位。

我们来分析一下官方的补丁:

/trunk/ThinkPHP/Lib/Core/Dispatcher.class.php

复制代码

代码如下:

125 - $res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['1']="2";', implode($depr,$paths));
125 + $res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['1']='2';', implode($depr,$paths));

这个代码是把pathinfo当作restful类型url进行解析的,主要作用是把pathinfo中的数据解析并合并到$_GET数组中。
然而在用正则解析pathinfo的时候,主要是这一句:

复制代码

代码如下:

$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['1']="2";', implode($depr,$paths));

这里明显使用了preg_replace的/e参数,这是个非常危险的参数,如果用了这个参数,preg_replace第二个参数就会被当做php代码执行,作者用这种方式在第二个参数中,利用PHP代码给数组动态赋值。

复制代码

代码如下:

'$var['1']="2";'

而这里又是双引号,而双引号中的php变量语法又是能够被解析执行的。因此,攻击者只要对任意一个使用thinkphp框架编写的应用程序,使用如下方式进行访问,即可执行任意PHP代码:

复制代码

代码如下:

index.php/module/action/param1/${@print(THINK_VERSION)}

由于是双引号执行,这里为了保险起见,不给出更有危害性的代码,利用这个还是需要点技巧的。

总之这个问题非常严重,找了一下,发现目前没有修补漏洞的网站还是很多的。而ThinkPHP框架的特征其实非常好识别,有意者直接写个scanner进行扫描也未必不可能。
为了不造成更大损失,特地发帖希望引起各位使用thinkphp做开发的同学关注。尽早升级官方的安全补丁

作者:GaRY

(0)

相关推荐

  • 关于ThinkPHP framework 任意代码执行漏洞预警

    最近官方发布了一个安全补丁,官方表述是:该URL安全漏洞会造成用户在客户端伪造URL,执行非法代码。 可是貌似大多数开发者和使用者并没有注意到此漏洞的危害性,应者了了,更不用说有多少人去升级了。随后我 ...

  • 微信惊现远程任意代码执行漏洞badkernel 附自检方案

    近日,国内某安全团队发现微信远程任意代码执行漏洞:badkernel! 据了解,此漏洞危害等级为“严重”,通过此漏洞攻击者可获取微信的完全控制权,危及微信隐私.聊天记录甚至微信钱包. 据该团队透露,b ...

  • Windows修复两个严重远程代码执行漏洞CVE-2017-8543/8464补丁下载地址

    微软的Patch Tuesday更新发布了多达95个针对Windows.Office.Skype.IE和Edge浏览器的补丁.其中27个涉及远程代码执行,18个补丁被微软设定为严重(Critical) ...

  • Excel VBA代码执行的几种常用方式

    Excel VBA是基于Excel的自动化编程语言.它在帮助我们完成一些繁琐的,单调的,大量且重复的工作时具有极大的优越性.学好VBA对我们提高工作效率有很大的意义. 操作方法 01 使用F5快捷键. ...

  • 漏洞挖掘高级方法

    最近看了一篇某外国大佬写的关于漏洞挖掘的文章,讲的挺基础的,然后对自己也有一些帮助,于是抽时间翻译过来,一是自己学习,二是希望能够帮助到一些朋友,翻译水平有限还望见谅,有兴趣可以看原文, 在此文中我将 ...

  • XP从4月8日起将正式停止支持服务.升级到 Win 8.1图文教程

    根据微软中国官网公布的消息,4月8日起,将正式停止对Windows XP操作系统的支持服务。届时,微软将推送Windows XP的最后一批补丁,并推送全新的Windows 8.1 Update。据了解 ...

  • 你所不知道的XML安全

    0x00 XML简介 XML可扩展标记语言,被设计用来传输和存储数据。其形式多样 例如: 1.文档格式(OOXML,ODF,PDF,RSS,DOCX...) 2.图片格式(SVG,EXIF Heade ...

  • 在struts2中如何实现转发和重定向?

    Struts 2作为基于MVC设计模式的J2EE Web应用框架,已经有近10年的历史了,它的交互行为与servlet有些像是, Struts 2是在 struts 1和WebWork的技术基础上进行 ...

  • 爱思助手的一键刷机稳定吗(爱思助手能给安卓机刷机吗)

    时隔 28 天后,苹果给大家推送了iOS 15.6.1 / iPadOS 15.6.1 正式版,这可能是 iOS 15 和 iPadOS 15 操作系统的最终更新了,因为苹果现在专注于将于今年秋季推出 ...