所以基本上我试图在他们的网络服务器上扫描运行例如版本apache 2.2.4的网络服务器,这样做的最佳方式是什么?
扫描IP的范围从blah blah到blah blah,端口80打开+ web服务器启用然后只需创建一个加载ips的脚本并检查它们是否有我想要的服务器横幅。
或者更快的替代方法是什么?
基本上我正在尝试制作像ShodanHQ这样的剧本。
我正在尝试运行某个版本的大量网络服务器,任何人都可以给我一个方向,谢谢我很清楚。
答案 0 :(得分:1)
要进行互联网范围的调查,例如Shodan或Scans.io,您需要从ISP获得非常高带宽的访问权限,合法审批(或至少视而不见),并且可能是异步的像Zmap或masscan这样的扫描程序。使用--min-rate
参数,Nmap是一个不错的选择。在您的操作系统上使用默认TCP堆栈(例如curl
,netcat
或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)
您可以使用curl
和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标头。