1

所以基本上我正在尝试扫描在他们的网络服务器上运行例如版本 apache 2.2.4 的网络服务器,这样做的最佳方法是什么?

扫描从 blah blah 到 blah blah 的 IP 范围,打开端口 80 + Web 服务器,然后制作一个加载 ips 的脚本并检查它们是否有我想要的服务器横幅。

或者有什么更快的替代方法?

基本上我正在尝试制作像 ShodanHQ 这样的脚本。

我正在尝试让大量的网络服务器运行某个版本,任何人都可以给我一个方向,谢谢希望我很清楚。

4

2 回答 2

1

要进行像ShodanScans.io这样的互联网范围内的调查,您需要非常高的带宽访问、来自 ISP 的法律批准(或至少视而不见),并且可能需要像Zmapmasscan这样的异步扫描仪。Nmap 是一个不错的选择--min-rate。在您的操作系统上使用默认 TCP 堆栈的任何东西(例如curlnetcat或 Perl 解决方案)都无法跟上所需的高数据包量和目标数量。

然而,如果你想扫描一个较小的网络(比如一个有 65K 地址的 /16),那么 Nmap 就可以胜任了,它比异步扫描器需要更少的设置(因为它们需要防火墙设置来防止本机 TCP 堆栈响应到返回的探针),并且可以广泛使用。您可以使用此命令获得合理的性能:

sudo nmap -v -T5 -PS80 -p80 -sS --script http-server-header -oA scan-results-%D%T 10.10.0.0/16

这分解为:

  • -v- 详细输出
  • -T5- 最快的时间选项。对于某些网络来说,这可能太多了;-T4如果您怀疑结果丢失,请尝试。
  • -PS80- 仅考虑响应端口 80(打开或关闭)的主机。
  • -p80- 扫描活动主机上的 80 端口
  • -sS- 使用Nmap的半开SYN扫描,时序性能最好
  • --script http-server-header- 此脚本将从基本 GET 请求中获取服务器标头。或者,您可以用于http-headers获取所有标头,或用于-sV --version-light从探测响应中进行基本版本检测。
  • -oA scan-results-%D%T- 将 3 种格式输出到单独的时间戳文件中。您可以使用导入 Nmap XML 输出的众多工具之一来处理结果。
于 2014-09-27T12:41:56.277 回答
-1

你可以使用curland sed

curl -sI 'http://192.0.2.1' | sed -n 's/^Server:[[:blank:]]*//p'

从 perl 调用它:

perl -e '$server=`curl -sI 'http://192.0.2.1' | sed -n 's/^Server:[[:blank:]]*//p'`; print $server'

curl 中的 -I 选项使用 HEAD 请求打印 http 标头。

于 2014-09-26T22:43:02.430 回答