Perl扫描特定Web服务器http横幅的最有效方法是什么?

时间:2014-09-26 22:13:58

标签: perl nmap shodan

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

要进行互联网范围的调查,例如ShodanScans.io,您需要从ISP获得非常高带宽的访问权限,合法审批(或至少视而不见),并且可能是异步的像Zmapmasscan这样的扫描程序。使用--min-rate参数,Nmap是一个不错的选择。在您的操作系统上使用默认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 - 此脚本将grab the Server header来自基本GET请求。或者,您可以使用http-headers获取所有标头,或使用-sV --version-light从探测响应中进行基本版本检测。
  • -oA scan-results-%D%T - 将3种格式输出到单独的带时间戳的文件中。您可以使用导入Nmap XML输出的众多工具之一来处理结果。

答案 1 :(得分:-1)

您可以使用curlsed

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标头。