导语:如果你曾经维护一个网站或管理过服务器,那么你会清楚,总会人会尝试攻击你。
如果你曾经维护一个网站或管理过服务器,那么你会清楚,总会人会尝试攻击你。当我在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中调用脚本的反应
胆大你就来:自己尝试一下