我是誰,我在哪,是誰在敲打我窗,是DIO噠?。?!
1289
2022-05-30
Google Hacking,有時也會被稱為 Google dorking,是一種利用谷歌搜索的高級使用方式進行信息收集的技術。這個概念最早在2000年由黑客 Johnny Long 提出并推廣,一系列關于 Google Hacking 的內容被他寫在了《Google Hacking For Penetration Testers》一書中,并受到媒體和大眾的關注。在 DEFCON 13的演講上,Johnny 創造了 “Googledork" 這個詞,“Googledork" 指的是“被 Google 透露了信息的愚蠢、無能的人們”。這是為了引起人們注意到,這些信息能被搜索到并不是 Google 的問題,而是由用戶或用戶安裝程序時無意識的錯誤配置造成的。隨著時間的推移,“dork" 這個詞成為了“定位敏感信息的搜索”這個行為的簡稱。
黑客們可以使用 Google 的高級操作符搜索那些易被攻擊的 Web 應用程序或者特定文件類型( .pwd, .sql…), 查找 Web 應用程序中的安全漏洞、收集目標信息、發現泄露的敏感信息或錯誤消息以及發現包含憑據和其他敏感數據的文件。
雖然 Google 在國內無法直接訪問,但作為技術人員,理應找到恰當的訪問途徑。另外這種技術雖然名為 “Google Hacking”,但同樣的思路,類似的搜索技巧,也是完全適用于其他搜索引擎的。所以這里僅是拋磚引玉性質的介紹,觸類旁通地可以靈活應用在其他的搜索場景里,只需要注意各種搜索引擎在搜索操作符(operator)使用上的細小差異。
一、搜索基礎點
可以使用雙引號 ( “ " ) 進行短語搜索;
關鍵字不區分大小寫;
可以使用通配符 ( * );
會在搜索中忽略一些詞語,這些詞語被稱為 stop words,比如:how,where 等;
關鍵詞最多可以有32個詞語,但 Google 并不會把通配符 ( * ) 算入關鍵詞的長度,所以可以使用通配符擴展搜索內容的長度;
布爾運算符和特殊字符:
+ 加號 (AND)
會強制搜索加號后面跟隨的單詞,后面不能有空格。使用加號可以讓那些 Google 默認忽略的單詞可以被搜索;
- 減號 (NOT)
會強制忽略減號后面跟隨的單詞,后面也不能有空格;
| 管道符 (OR)
會在搜索中搜索被管道符分割的關鍵詞中的任意一個。
二、高級操作符
在 Google Hacking 中可以使用高級運算符,以縮小搜索結果范圍,最終獲取到需要的信息。高級操作符雖然容易使用,但也需要遵循嚴格的語法。
1. 需要知道
基本語法是:operator:search_term ,當中不能有空格;
布爾運算符和高級操作符可以結合使用;
多個高級操作符可以在一次搜索中配合使用;
以 all 開頭的操作符在一次搜索中僅能使用一次,不能與其他高級操作符同時使用。
2. 基本操作符(operator)
· intitle & allintitle ·
使用 intitle 可以搜索網頁的的標題,標題指的是在 HTML 中的 title 標簽的內容。比如搜索 intitle:"Index of" 會返回所有 title 標簽中含有關鍵字短語 “Index of" 的搜索結果。
allintitle 的使用方法和 intitle 類似,但 allintitle 后面可以跟隨多個內容。比如 allintitle:"Index of""backup files"
返回所有 title 標簽中含有關鍵字短語 Index of 和 backup files 的搜索結果。
但使用 allintitle 會有很大的限制,因為這樣搜索的內容只會限制于返回 intitle 的內容,而不能使用別的高級操作符。在實際使用中,最好使用多個 intitle,而不是使用 allintitle。
· allintext ·
這個是最容易理解的一個操作符,作用就是返回那些包含搜索內容的頁面。當然,allintext 不能與其他高級操作符結合使用。
· inurl & allinurl ·
在介紹過 intitle 后,inurl 其實也很好理解:可以搜索網頁 url 的內容。然而在實際使用中,inurl 往往并不能如預期般獲得想要的結果,原因如下:
Google 并不能很有效地去搜索 url 中協議的部分,比如 http://;
在實際情況中,url 通常會包含大量的特殊字符。為了在搜索的同時兼容這些特殊字符,搜索的結果就不會如預期那樣精準;
其他的高級操作符(比如:site, filetype 等)可以搜索 url 內特定的部分,在搜索中的效率也比 inurl 高的多。
所以 inurl 并不如 intitle 那樣好用。但即便 inurl 或多或少有一些問題,inurl 在 Google Hacking 中也是不可或缺的。
和 intitle 相同,inurl 也有一個對應的高級操作符 allinurl。而且 allinurl 同樣不能與別的高級操作符結合使用,所以如果想要去搜索 url 中多個關鍵字,最好使用多個 inurl 操作符。
· site ·
site 操作符可以在特定的網站中指定搜索內容,比如搜索 site:apple.com,返回的內容就只會是 www.apple.com 這個域名或者其子域名下的內容。
不過需要注意的是,Google “閱讀” 域名的順序是從右到左,和人閱讀的順序是截然相反的。如果你搜索 site:aa,Google 會去搜索以 .aa 為結尾的域名,而不是以 aa 開頭的域名。
· filetype ·
filetype 操作符能搜索的文件類型,也就是指定搜索文件的后綴名。比如搜索 filetype:php,搜索將會返回以 php 為結尾的 URL。此操作符往往會與其他高級操作符配合使用,達到更精確的搜索結果。
· link ·
link 操作符可以搜索跳轉到指定 URL 的鏈接,link 操作符后面不僅可以寫一些基礎 URL,也可以寫一些復雜的、完整的 URL。link 操作符也不能與其他高級操作符或關鍵字一起使用。
· inanchor ·
inanchor 操作符可以搜索 HTML 鏈接標簽中的錨文本,“錨文本”是網頁中關于超鏈接的一段描述,比如下面這段 HTML 語言:
其中的Wikipedia就是這段鏈接中的錨文本。
· cache ·
當 Google 爬到網站的時候,會生成一個鏈接來保存這個網站的快照,也被稱為網頁緩存。運用 cache 操作符就可以搜索指定 URL 的網頁快照,而且網頁快照不會因為原網頁的消失或變更而發生改變。
· numrange ·
numrange 操作符后面需要加上兩個數字來表示數字的范圍,以 “-" 為分割,形如: numrange:1234-1235。當然 Google 也提供了一個更簡潔的方式來搜索數字,形如: 1234..1235,這樣就可以不使用 numrange 操作符來達到搜索范圍數字的目的了。
· daterange ·
daterange 操作符可以搜索指定時間范圍內 Google 索引的網站,操作符后面使用的日期格式是“儒略日期(Julian Day)”。關于“儒略日期”的解釋請參見相關文檔。使用時可以通過在線版查詢工具獲得需要的“儒略日期"數值,如:www.onlineconversion.com/julian_date.htm
· info ·
info 操作符會返回一個站點的摘要信息,操作符后面的內容必須是一個完整的站點名稱,否則不會返回正確的內容。info 操作符不能與其他操作符一起使用。
· related ·
related 操作符會搜索那些和輸入的 URL 相關或者相似的頁面,related 操作符不能與其他操作符一起使用。
· stocks ·
stocks 操作符會搜索相關的股票信息,stocks 操作符不能與其他操作符一起使用。
· define ·
define 操作符會搜索關鍵字的定義,define 操作符不能與其他操作符一起使用。
三、簡單應用
1. 郵箱抓取
如果要對一個目標進行測試,Google Hacking 能幫助我們搜索到足夠的信息。其中,收集相關的郵箱地址(往往也是網站的用戶名)則是 Goolge Hakcing 運用中簡單且又能證明其強大的一個例子。
首先我們先在 Google 中搜索 “@gmail.com",發現搜索返回的結果并不好,但也包含了需要的搜索結果。
隨后,用 Lynx(Linux 下的純文本網頁瀏覽器),將所有的結果輸出至一個文件:
lynx --dump 'http://www.google.com/search?q=@gmail.com' > test.html
最后,用 grep 和正則表達式就可以找出所有的郵箱地址:
grep -E '^[A-Za-z0-9+._-]+@([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}' test.html
當然,網絡上還有更“完美”的正則表達式能涵蓋更多的郵箱地址格式(比如:emailregex)。這個例子不過是拋磚引玉,僅僅是利用 Google 搜索就可以達到搜索基礎信息的目的。
2. 基礎網站抓取
作為一名安全測試人員,如果我們需要對一個指定的網站進行信息收集,可以使用 site 操作符指定一個站點、域名或子域名。
可以看到搜索結果非常的多,Google 會智能地將更顯而易見的結果放在前面。而我們往往希望看到的并不是這些常見內容,而是那些在平時可能看不到的結果。我們可以使用 - 來篩選我們的搜索結果。
將上圖中的幾個站點排除后搜索關鍵字:
site:microsoft.com -site:www.microsoft.com -site:translator.microsoft.com -site:appsource.microsoft.com -site:bingads.microsoft.com -site:imagine.microsoft.com
搜索結果:
可以看到,結果已經不包含第一次搜索中的幾個站點了。想要進一步挖掘,就必須重復這個篩選的動作,那最后搜索內容的長度肯定會到 Google 限制的32個單詞的上限。不過這個操作可以簡單地就達成域名的收集工作,雖然有點乏味和繁瑣。
和之前相同,我們可以使用 Lynx 將這個過程簡化一點:
lynx --dump 'https://www.google.com/search?q=site:microsoft.com+-site:www.microsoft.com&num=100' > test.html grep -E '/(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]/' test.html
【優點】
雖然站點名和域名收集并不是一件新鮮事,但通過 Google 完成這項任務有以下幾項優點:
低調:不會直接向測試目標發送任何數據包,不會被目標捕捉行為;
簡單:返回的結果是被 Google 按照一定順序排序好的,往往更有用的信息會被放在“下面”,所以可以對結果進行簡單篩選而尋找到需要的信息;
指向性:通過 Google 進行信息搜索,可以得到的不僅僅是站點名和域名,還有電子郵箱地址、用戶名等等更有用的信息。這些信息往往能指向下一步的測試操作。
四、復雜應用
1. Google Hacking Database
www.exploit-db.com/google-hacking-database
Google Hacking Database (GHDB) 是一種互聯網搜索引擎查詢的索引,旨在發現那些在互聯網上公開透明且敏感的信息。這些敏感信息在大多數情況下是不應被公開的,但因為某些原因,這些信息被搜索引擎抓取到,然后被放在了公開的網絡中。GHDB 中包含了大量 Google Hacking 的搜索語句,如果是想要提升自己搜索的能力,或者是想要拓展視野,這里絕對是絕佳的去處。
GHDB 把所有的搜索內容分為了以下 13 類:
Footholds 演示頁面
Files Containing Usernames 用戶名文件
Sensitive Directories 敏感目錄
Web Server Detection 網站服務器檢測
Vulnerable Files 有漏洞的文件
Error Messages 錯誤信息
Files Containing Juicy Info 有價值的文件
Files Containing Passwords 口令文件
Sensitive Online Shopping Info 在線商業信息
Network or Vulnerability Data 安全相關數據
Pages Containing Login Portals 登錄頁面
Various Online Devices 在線設備
Advisories and Vulnerabilities 公告和漏洞
由此可見,Google Hacking 幾乎沒有做不到,只有想不到,如果需要精進,那肯定還需要漫長的學習的。
2. 腳本利用
前面也提到過,利用 Lynx 等相關的命令行可以比較簡單地對 Google 出來的數據進行處理,進而得到想要的結果。同時,Google 也提供了很多 API 可以方便進行調用。所以編寫腳本,能更為有效且快捷地得到所需要的信息。這里列舉兩個利用 Google 搜索的腳本,用以展示腳本的強大和靈活性。
· dns-mine ·
github.com/sensepost/SP-DNS-mine
利用 dns-min.pl 可以更加快捷的達成之前介紹的網站抓取的目的。
· bile ·
github.com/sensepost/BiLE-suite
bile 腳本工具利用 Httrack 和 Google 能搜索出和目標網站相關聯的站點,并且用算法衡量各個結果的權重,最后有序輸出。
五、如何防范
前面已經介紹了許多不同的 Google Hacking 的方法,那么對于網站的運營人員,應如何防范這種看似無孔不入的攻擊呢?
1. 禁止目錄列表
通常通過 .htaccess 文件可以防止那些未授權的訪問網站中的目錄內容。在 Apache Web Server 上也可以通過編輯 httpd.conf 文件 Options-Indexes-FollowSymLinks-MultiViews 字段禁止訪問站點中的目錄列表。
2. 合理設置站點的 robots.txt
可以使用 /robots.txt 文件向網絡機器人提供有關其網站的說明, 這被稱為The Robots Exclusion Protocol。
在網站根目錄創建 robots.txt,例如:
User-agent: Baiduspider Disallow: / User-agent: Sosospider Disallow: / User-agent: sogou spider Disallow: / User-agent: YodaoBot Disallow: / Disallow: /bin/ Disallow: /cgi-bin/
通過 User-agent 指定針對的爬蟲機器人,通過 Disallow 指定不允許機器人訪問的目錄。上面的例子的意思就是拒絕百度、搜搜、搜狗和有道的機器人爬取網站,同時禁止所有機器人爬取 /bin/ 和 /cgi-bin/ 目錄。
3. 合理設置頁面的 NOARCHIVE 標簽
通過 robot.txt 可以限制爬蟲機器人訪問你的站點,但對于單個頁面而言,robot.txt 就沒有那么好用了,Google 等搜索引擎依舊抓取網頁并且會生成網頁快照,要處理這種情況就需要使用 META 標簽。
將上面這個 META 標簽加入頁面的 head 中,可以有效地避免機器人爬取單個頁面生成網頁快照。
4. 合理設置頁面的 NOSNIPPET
為了不讓搜索引擎生成網頁摘要,也可以在網頁中加入一條 META 標簽:
這樣就可以避免搜索引擎抓取網頁并生成網頁的摘要,同時 NOSNIPPET 也會讓搜索引擎避免生成網頁快照。
六、擴展
最后推薦兩個網站,相對于 Google 他們更注重于搜索網絡安全方面的信息收集。
1. 鐘馗之眼
www.zoomeye.org
ZoomEye 是一款針對網絡空間的搜索引擎,收錄了互聯網空間中的設備、網站及其使用的服務或組件等信息。
ZoomEye 擁有兩大探測引擎:Xmap 和 Wmap,分別針對網絡空間中的設備及網站,通過 24 小時不間斷地探測、識別,標識出互聯網設備及網站所使用的服務及組件。研究人員可以通過 ZoomEye 方便地了解組件的普及率及漏洞的危害范圍等信息。
搜索內容包括:
網站組件指紋:包括操作系統,Web 服務,服務端語言,Web 開發框架,Web 應用,前端庫及第三方組件等等。
主機設備指紋:結合 NMAP 大規模掃描結果進行整合。
2. Shodan
www.shodan.io
Shodan是一個搜索引擎,它允許用戶使用各種過濾器查找連接到互聯網的特定類型的計算機(網絡攝像頭,路由器,服務器等)。有些人還將其描述為服務橫幅的搜索引擎,服務橫幅是服務器發送回客戶端的元數據。這可以是有關服務器軟件的信息,服務支持的選項,歡迎消息或客戶端在與服務器交互之前可以找到的任何其他信息。
最后也需要提醒一下,在搜索隱私相關數據時,也需要保持敬畏之心,不要濫用技術手段,否則可能引起爭議和觸發規條。(黃繆華 | 天存信息)
Ref
J. Long - Google Hacking for Penetration Testers
J. Long - Using Google as a Security Testing Tool
Google Search Help
錨文本(Anchor_text)
robot.txt詳解
鐘馗之眼
Shodan
儒略日期
搜索引擎 網絡 運維 通用安全 面向對象編程
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。