ThinkPHP framework 任意代码执行漏洞预警
来源:互联网 发布:ae2015下载mac 编辑:程序博客网 时间:2024/05/16 08:57
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做开发的同学关注。尽早升级官方的安全补丁。
转载于:http://zone.wooyun.org/index.php?do=view&id=44
- ThinkPHP framework 任意代码执行漏洞预警
- thinkphp任意代码执行漏洞
- thinkphp任意代码执行漏洞
- Thinkphp框架任意代码执行漏洞利用及修复
- 任意代码执行漏洞
- 漏洞预警+Samba远程代码执行漏洞(CVE-2017-7494)
- 一次thinkphp任意代码执行
- MySQL远程代码执行(CVE-2016-6662)漏洞预警
- Memcached远程代码执行漏洞预警与检测修复
- 【预警通告】Apache Struts2(S2-053) 远程代码执行漏洞 威胁预警通告
- php cgi远程任意代码执行漏洞
- 利用本地包含漏洞执行任意代码
- Struts2/XWork远程执行任意代码漏洞
- 利用本地包含漏洞执行任意代码
- 利用本地包含漏洞执行任意代码
- 格式化字符串漏洞执行任意代码分析
- 【重大漏洞预警】Struts2 远程代码执行漏洞 S2-045 原理初步分析
- 【漏洞预警】FFmpeg曝任意文件读取漏洞
- 量子化学软件中文网
- Linux下C语言编程的-RPC远程调用编程
- python andriod 开发
- 如何让aptana支持jQuery智能提示
- socket编程原理
- ThinkPHP framework 任意代码执行漏洞预警
- 基础动画类 函数CGAffineTransform
- 自定义带倒影和偏转的超炫Gallery
- Linux下批量替换UTF-8文件的关键字
- Visual Studio 2008 安装失败(“Web 创作组件”无法安装)的解决办法
- 类似网易博客的提示效果(弹窗)
- POJ 2267 最短路
- Long,LONG RAW,CLOB,NCLOB,BFILE 类型使用和区分
- Apk文件结构, Dex反编译