PHP - 是否有可能在PHP中为恶意软件扫描程序实现gzip炸弹

时间:2016-08-03 13:33:48

标签: php apache nginx gzip

我目前正在开发一个PHP类作为可以检测暴力和SQLi攻击的webapps的IDS类型,我开始意识到我的系统上的大多数攻击都是通过未配置的恶意软件扫描程序完成的。 nikto或sqlmap。让我们暂时忽略这应该由服务器而不是网络应用程序完成。

由于它们都是为了分析来自网络服务器的答案而构建的,我认为可以使用ZIP bomb来轰炸它们。

我的想法是我的PHP脚本发送一个带有小(压缩)gzip数据的gzip头文件,客户端将解压缩它 - 导致它耗尽内存。

任何人都可以告诉我一些关于如何实现这一点的指示,或者仅仅是由网络服务器完成的gzip并且它无法通过PHP完成

1 个答案:

答案 0 :(得分: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:内存上升,显示错误
  • 边缘38:内存上升,然后下降,没有显示任何内容(似乎永远加载)
  • Nikto:正常速度扫描,没有内存问题
  • SQLmap:高内存然后崩溃