Why I stoped website word-wild scan.

在之前我对全球性的扫描做了一些尝试,通过 commoncrawl 项目提供的一些域名(约10亿条)做了一些全球范围内的漏洞检测。做一些总结如下。

一、全球漏扫中的漏洞检测项目

检测项目包括以下几类

1. 文件泄露扫描

  • .git/ 文件未授权访问扫描 – 可以获得整站源代码
  • phpmyadmin/ 目录未授权访问扫描 – 使mysql 暴露在公网,产生风险

2. 通用漏洞扫描

  • SQL注入漏洞扫描 扫描URL 中参数的报错形注入

3. Poc 类漏洞扫描

  • Structs2 命令执行漏洞检测

二、为什么停止

1. 未授权的漏洞探测是违法的。

在 IPv4网络空间里,做如此大规模的扫描等于把自己变成一个灯塔。我年纪轻轻不能去坐牢…

2. 不盈利

不盈利是最大的问题。大规模的 Web 漏洞扫描没有变现渠道且价值有限。投入的成本主要为服务器的成本和网络带宽的成本,暂时没有找到盈利的模式。稳定赔钱的项目无法长期运转。

3. 没有足够的时间

日常的工作已经足够让我忙不过来了。

三、一些待改进项

如果还能再改进的话,我会对以下方向改进。

1. 增加通用漏洞扫描的类型

现在只检测了 SQL 注入。事实上有很多的漏洞类型可以加入检测。比如反射型 XSS,比如任意文件读取漏洞。

2. 增加多样化的漏洞检测模式

可以利用一些类似 cloudeye 这样的方式来检测漏洞。

3. 增加更加通用的漏洞检测方式

在有了.git/config 泄露检测的基础上,其他类型的泄露如 index.php.bak文件泄露、.svn/entries文件泄露可以通过更简单的方式来添加、拉起扫描。

4. 建立漏洞库

没有建立漏洞库可能是这个扫描项目最大的败笔。如果建立漏洞库,和一些SRC 平台对接之后或许可以填补一些成本。

5. 在程序优化上下更多的时间

整个项目没有做压测,所有的参数都是我拍脑袋决定的,虽然结果足够满意但是还是会有很大的优化空间。

四、一些技术积累

1. Spark

spark 的学习成本很高但是 pyspark 出奇地好用。commoncrawl 上的数据用 pyspark 处理十分合适。

2. Golang

golang 实在是太适合这种高并发的场景了。Python 的一些异步方案(如 aiohttp、Gevent)都无法满足这么高的并发。

Leave a Reply

Your email address will not be published. Required fields are marked *