Google Hacking————你真的会用Google吗?

(题图id 58575273)

禁止一切形式转载(除知乎官方)

请学会活用注解(形式是[1][2][3][4]这类的)....虽然翻下去再翻上来有点烦(

google hacking,也叫google dorking,其实是很老的东西了,零几年就已经不是陌生词了,不过在知乎并没有什么提及,很惭愧,做了一点微小的科普。

Ⅰ.概念定义

使用Google搜索引擎或其他Google应用程序通过特定语法来查找网站配置或代码中的安全漏洞[1]



Ⅱ.语法(操作符加下划线是为了区分度)

1.开讲前你须知的Google基本逻辑和基础操作符:

google.com/custom?URL 可实现站内搜索

关键字不区分大小写字母[2];

默认使用AND逻辑搜索[3];

Google在默认下忽视关键字中部分常用单词(如冠词);

Google默认限制关键字最多32个单词,但"*"不占用字符限制位,活用*突破限制;

"+"强制搜索其后的一个单词,可以取消之前说的Google对常用单词的忽视(AND逻辑),但是大部分常用英文符号(如问号,句号,逗号等)无法成为搜索关键字,加强制也不行;

"-"强制忽略其后的一个单词,可以屏蔽包含某些关键字的网页(NOT逻辑)(如A-C在结果中呈现的网页则是含有A且不含有C的);

"|"或"OR"(使用时操作符前后都要加空格),对只要符合多个关键字中的任意一个的结果予以显示;

混合使用多种布尔操作时以从左到右的顺序执行而不是以数学逻辑。


2.高级操作符

基本使用语法 operator:search_term

高级操作符中以all开头的操作符在一般情况下一个查询中只能使用一次,不能和其他操作符混用

intext:

把网页中的正文内容中的某个字符做为搜索条件(但是只能搜索冒号后接的一个关键字).例如在google里输入:intext:钓鱼(广义的).将返回所有在网页正文部分包含"钓鱼(广义的)"的网页,可以与其他操作符混合使用,可单独使用

allintext:

使用方法和intext类似,能接多个关键字,能与其他操作符混合使用,可单独使用

intitle:
搜索网页标题中是否有所输入字符.例如输入:intitle:五点共圆.将返回所有网页标题中包含"五点共圆"的网页,可以与其他操作符混合使用,可单独使用

allintitle:

和ntitle类似,能接多个关键字,但是不能与其他操作符混合使用,可单独使用

cache:
输入URL,搜索特定页面的缓存快照,即使目标页面发生变动甚至不存在了,依然可以看到它的副本

define:
搜索输入关键词或关键词组的定义来源链接,例如搜索:define:script,将返回关于script的定义,该操作符不能与其他操作符及关键字混用。


filetype:
搜索指定类型的文件.例如输入:filetype:asp.将返回所有以asp结尾的文件的URL,可以与其他操作符混合使用[4]

ext:

与filetype等价

info:
搜索输入URL的摘要信息和其他相关信息,该操作符不能与其他操作符及关键字混用

inurl:
搜索输入字符是否存在于URL中.可以联合site指定来找后台、fck之类,可以与其他操作符混合使用,可单独使用

allinurl:

类似inurl:,但是可指定多个字符,不能与其他操作符混合使用,可单独使用

link:
搜索链接到所输入URL的页面,该操作符不需要关键字,不能与其他操作符及关键字混用


site: (这个下面Ⅲ也会讲)

将搜索范围缩小到特定的网站,域或子域

related:

冒号后接一个URL,搜索与该URL相关的页面,该操作符不能与其他操作符及关键字混用

numrange:

冒号后接数字范围,用一个减号两边接数字来表示。减号左边为最小值,右边为最大值,从而搜索数字

inanchor:

搜索一个HTML标记中的一个链接的文本表现形式,即在链接文本中搜索冒号后紧接的一个关键字

至于“链接文本”,比如
<a href="GNU/Linuxhttp://www.linux.org/">GNU/Linux</a>
以上代码中的“GNU/Linux”就是链接文本

stocks:

搜索关于指定公司的股票市场信息

insubject:

搜索Google组的标题行

daterange:

搜索某个日期范围内Google做索引的网页







Ⅲ.具体应用和实例[5]

1.基础网站抓取(site:的使用及拓展)

附图,排版可能略乱

"site:"将搜索范围缩小到特定的网站,域或子域,如site: microsoft.com



不过这样往往出现的是大量没有用处的显而易见的内容



为了不被这些没有意义的“废话”干扰,我们可以做一个负搜索[6],site: microsoft.com -site:www.microsoft.com



重复这一过程可以进一步精准,如site:microsoft.com -site:www.microsoft.com -site:msdn.microsoft.com -site:support.microsoft.com -site:download.microsoft.com -site:office.microsoft.com



不过如此重复下会碰上Google最多只能32个单词的查询限制(即上文所讲的*的作用由来),这个过程趋向枯燥

使用Lynx[7]来捕捉google的搜索结果,处理完HTML后返回相同结果

虽然host和domain的列举很老套了,但是我们在没有给任何我们正在解析的目标发送数据包的条件向下达成了,虽然很无聊,但有几点好处

1.低调。目标并不能发现你的活动

2.排行是由Google权决定的,公众化的东西会在顶部,而某些有意思的东西则会偏底部

3.这暗示了下一步的侦查,你不仅仅获取了hosts和domain names,你只要看看从Google返回的片段就能获取应用程序信息,一个结果页面可以处理很多种信息,邮箱地址,名称等等

4.因为我们从多个来源获取数据,我们可以专注于不明显的关系

虽然我们可以修改Lynx命令来输出更多结果,但更多的结果不等于不同的hosts,所以我们可以通过另一种方法来定位主机,虽然比较陈旧

如上图,搜索web,site,email等常用词,和站点一起添加到新页面中

然后通过从某网站顺过来的perl(API-based)来分析出更多有效结果


2.端口扫描

比如结合inurl:和intext:,


当以上操作符都失败了,我们可以用第三方扫描



同样,我们先是通过高级操作符检索出,随便打开其中的任意一个



3.SQL数据库挖掘

关于SQL injection这种基础的东西,想来随便一个script kid都会,也不是我们今天的主要内容,所以介绍之类的就省去了


这一点主要选取的是利用其他SQL syntax来获取信息

比如"Identified by",构造的语句是filetype:sql + "IDENTIFIED BY" -cvs



随便点开第一个返回的结果


那么,更硬点的版本呢?这次会用上之前讲过的一些基本语法,比如"*"和"|",这次的语句构造如下filetype:sql + "IDENTIFIED BY" ("Grant * on *" | "create user")



依旧随便点开一个结果,

列举就到此,下面再提供些相应构造吧(从Blackhat翻来的干货)

先是一张SQL转储检测的,


然后还有张数据库检测,


Ⅳ.结语


正如以上实例,Google不仅能帮我们找到所需要的文章,电影,本子[8]和各种gv,还能让我们在渗透检测过程中省时省力。Google语法结合各种语言构造能产生无数妙用,当然这需要你有扎实的语法基础。

会用google,善用google只是通往权限路上微小的一步,信安路上还有许多有趣的内容等着你去发现。

也许你不会走上信安这条路,不过多学点技巧总是好的。




[1]这是早期定义,现在或许有了概念延伸,例如使用Shodan( Shodan )和Censys( censys.io/ ) 之类的更有针对性和专业性的搜索引擎来搜集网站与系统的信息(Shodan前五页免费,后面的结果需要付费)

[2]一个例外是当单词“OR”作为布尔操作符时必须大写


[3]简单解释下就是所搜索的页面在网页标题,内容以及URL等位置同时含有所有关键字(忽略顺序)


[4]这里在某次blackhat中被列举为Cannot be used Alone,但是可以单独使用,或许那个演讲者的意思是用于联合使用,单个使用意义不大?


[5]此部分内容为blackhat的相关ppt内容的个人翻译与总结


[6]negative search,指消除不相关的信息以呈现给用户相应的内容,参考 Negative search

[7]Lynx是一款纯文字网页浏览器

[8]虽然想来你们都能熟练使用e-hentai,h社和p站R18区

编辑于 2017-02-02

文章被以下专栏收录

    本专栏旨在: 1.分享国内外网络安全大事件。 2.科普网络安全。 3.分享技术。 欢迎投稿