一、前情提要
在渗透测试过程中,第一步就是进行信息收集,信息收集的重要性不用再次赘述,而对于信息收集的过程,很多人将其写成了工具、脚本,于是我们就有了很多指纹识别工具、敏感文件、目录扫描工具,敏感信息探测工具,信息收集工具等等。有了这些工具,我们可以在短时间内快速的收集我们想要的信息,并且通过研究和积累,我们使用具有高命中性、通用性的字典、特征文件作为核心,在渗透测试之初快速进行信息收集。
但这些工具具有一些共同的致命的特点,就是为了达到更高的覆盖率,通常会发送大量的攻击请求至服务器,这些请求会留下痕迹,在遇到有防护手段的web服务器时,将会导致很多的麻烦,同时,安全人员也会根据黑客的行为进行画像,进行攻击防护和溯源。
这时候可能会想到,通过使用大量的代理服务器来隐匿自己的行踪,并绕过安全防护手段的监控,不得不说,在拥有大量代理池的情况下,这确实是解决问题的办法,但是并不能完全奏效,一些高级安全防护人员会从访问时间、访问频率、访问文件类型等等一系列大量特征,对攻击人员进行分组聚类,并采取杀伤链溯源的方式,将黑客从众多的代理中“揪”出来。
因此,能否在不惊动目标服务器的情况下,对目标网站进行前期最重要的信息收集,并且尽可能的获得更多的信息呢?随着这个理念的产生,有了我们今天的课题,也就是利用搜索引擎来对目标网站进行信息收集的工作。
现今,我们使用了大大小小的搜索引擎,国内外搜索引擎不计其数,每个国家都有自己的搜索引擎,我们在此选择当仁不让的“全球第一”搜索引擎Google。
同样的,这条道路也有很多的前辈涉足过,但是作为安全学习的一部分,自己走一遍才是最重要的。早在我第一次写的目录扫描器Alisa中,就简单使用了GoogleHacking作为目录扫描的一部分,而在这里将其单拿出来,作为重点进行讨论。
二、Google基础铺垫
我们先来简略地铺垫一下Google基础性知识,这些知识你可以通过百度搜索(黑人问号脸,哈哈哈)轻易的得到,也可以参照Google官方帮助手册,如果你真的感兴趣的话,你可以购买相应的书籍进行进一步的学习。
1.基础法则
Google不区分大小写,除了or被用作布尔运算符时,就必须写做OR。
Google通配符(*),不同于在其他任何语言中的使用,星号在一个搜索短语中仅仅表示一个单词。
Google保留忽略的权利,where、how以及一些通用的单词、字母和单个数字,会被Google默认忽略。
Google限制最多搜索32个单词,包含搜索项和高级运算符。不过也有一些其他方法绕过这种限制,比如使用通配符来代替某些搜索项。
2.基础查询
最简单的查询包含一个单词或者在搜索界面输入的单词组合,如chickenattack。稍微复杂一点的是短语搜索,将要搜索的一组单词包括在双引号找那个进行搜索。当Google遇到一个短语的时候,它会严格按照你给定的顺序对短语中的所有单词进行搜索,Google不会排除在短语中找到的常用词,如“chickenattack”。
我们还可以使用布尔运算符和特殊字符进行查询,最常用的是AND,用来在一个查询中包含多个搜索项。但是对于Google来讲,AND是多余的,默认情况下,Google会自动搜索你查询中的所有元素。
加号(+)会强制包含跟着它的单词。例如Google默认排除了一些常用词,但我们想强制Google来搜索这些词,我们就可以搜索+andjusticefor+all。
另一个常用的布尔运算符是NOT,在功能上与AND运算符是相反的,NOT运算符把一个单词排除出一个搜索之外。使用这个运算符最好的方法就是在一个搜索单词前加上减号(-)。减号与搜索项之间不含空格。例如hacker-jacket。
另一个运算符是OR。还可以用竖线符(
)来表示。可以指示Google在查询时落在其中一个或另一个查询上。
Google不会受到括号影响。我们可以利用括号增加查询语句的可读性。例如:
intext:(passwordpasscode)intext:(username
userid
user)filetype:csv
在搜索无效的时候也不要紧,多看看Google给出的提示。
3.高级运算符
在这里我直接放置一张高级运算符速查表,对于每一个的具体使用方法以及使用细节以及额外需要注意的点,各位看官自行学习。
高级运算符特性/要点intitle在页面的标题里查找字符串
与其他运算符混合使用效果佳
allintitle在一个页面的标题里查找所有搜索项
与其他运算符或搜索项混合使用效果差
inurl在一个页面的URL里查找字符串
与其他运算符混合使用效果佳(有时site和filetype做的比inurl好)
allinurl在一个页面的URL里查找所有搜索项
与其他运算符或搜索项混合使用效果
filetype基于文件扩展名搜索特殊类型文件
需要一个额外搜索项
其他运算符或搜索项混合使用效果差
allintext别用它site把一个搜索限定在一个特别的网站或域中
与其他运算符混合使用效果佳
能够单独使用
link搜索一个网站的链接或者URL
无法与其他运算符或搜索项混合使用
可以扩展成包含目录名、文件名、参数等内容的完整URL
inanchor在链接的描述性文字中查找文本
其他运算符或搜索项混合使用效果佳
用作寻找网站之间的关系
daterange寻找在一个特定日期范围内索引过的页面
需要一个搜索项
与其他运算符或搜索项混合使用效果佳
可以被as_qdr淘
numrange在特定范围内查找一个数字
与其他运算符或搜索项混合使用效果佳
需要两个参数,可以简写
cache显示Google缓存的页面拷贝
无法与其他运算符或搜索项混合使用
有很多妙用,但结果优点不可预测
info显示关于一个页面的总结信息
无法与其他运算符或搜索项混合使用
直接搜网站名或URL会得到相同的结果
related显示与所给网站或URL相关的站点
无法与其他运算符或搜索项混合使用
stocks?为一个股票代码显示Yahoo财经的股票列表
无法与其他运算符或搜索项混合使用
与本次课题无关
define显示单词或短语的各种不同含义
无法与其他运算符或搜索项混合使用
与本次课题无关
我们在网上看到的一些十分实用十分高级的Google技巧,大多来自上述高级运算符之间的组合使用,因此,深入理解并熟练运用这些运算符是十分有必要的,在此我强烈建议,如果你在阅读到这部分之前是一名使用GoogleHack的小白,先暂停一下,在搜索引擎上亲自使用一些,看一看返回的结果,闭上眼,用心去体验。
如果觉得手动输入还是很别扭的话,点击网址