在滲透測試過程中,第一步就是進行信息收集,信息收集的重要性不用再次贅述,而對於信息收集的過程,很多人將其寫成了工具、腳本,於是我們就有了很多指紋識別工具、敏感文件、目錄掃描工具,敏感信息探測工具,信息收集工具等等。有了這些工具,我們可以在短時間內快速的收集我們想要的信息,並且通過研究和積累,我們使用具有高命中性、通用性的字典、特徵文件作為核心,在滲透測試之初快速進行信息收集。
但這些工具具有一些共同的致命的特點,就是為了達到更高的覆蓋率,通常會發送大量的攻擊請求至伺服器,這些請求會留下痕跡,在遇到有防護手段的web伺服器時,將會導致很多的麻煩,同時,安全人員也會根據黑客的行為進行畫像,進行攻擊防護和溯源。
這時候可能會想到,通過使用大量的代理伺服器來隱匿自己的行蹤,並繞過安全防護手段的監控,不得不說,在擁有大量代理池的情況下,這確實是解決問題的辦法,但是並不能完全奏效,一些高級安全防護人員會從訪問時間、訪問頻率、訪問文件類型等等一系列大量特徵,對攻擊人員進行分組聚類,並採取殺傷鏈溯源的方式,將黑客從眾多的代理中「揪」出來。
因此,能否在不驚動目標伺服器的情況下,對目標網站進行前期最重要的信息收集,並且儘可能的獲得更多的信息呢?隨著這個理念的產生,有了我們今天的課題,也就是利用搜尋引擎來對目標網站進行信息收集的工作。
現今,我們使用了大大小小的搜尋引擎,國內外搜尋引擎不計其數,每個國家都有自己的搜尋引擎,我們在此選擇當仁不讓的「全球第一」搜尋引擎Google。
同樣的,這條道路也有很多的前輩涉足過,但是作為安全學習的一部分,自己走一遍才是最重要的。早在我第一次寫的目錄掃描器Alisa中,就簡單使用了Google Hacking作為目錄掃描的一部分,而在這裡將其單拿出來,作為重點進行討論。
我們先來簡略地鋪墊一下Google基礎性知識,這些知識你可以通過百度搜索(黑人問號臉,哈哈哈)輕易的得到,也可以參照Google官方幫助手冊,如果你真的感興趣的話,你可以購買相應的書籍進行進一步的學習。
Google 不區分大小寫,除了 or 被用作布爾運算符時,就必須寫做OR。
Google 通配符(*),不同於在其他任何語言中的使用,星號在一個搜索短語中僅僅表示一個單詞。
Google 保留忽略的權利,where、how以及一些通用的單詞、字母和單個數字,會被Google默認忽略。
Google限制最多搜索32個單詞,包含搜索項和高級運算符。不過也有一些其他方法繞過這種限制,比如使用通配符來代替某些搜索項。
最簡單的查詢包含一個單詞或者在搜索界面輸入的單詞組合,如 chicken attack。稍微複雜一點的是短語搜索,將要搜索的一組單詞包括在雙引號找那個進行搜索。當Google遇到一個短語的時候,它會嚴格按照你給定的順序對短語中的所有單詞進行搜索,Google不會排除在短語中找到的常用詞,如「chicken attack」。
我們還可以使用布爾運算符和特殊字符進行查詢,最常用的是 AND,用來在一個查詢中包含多個搜索項。但是對於Google來講,AND是多餘的,默認情況下,Google會自動搜索你查詢中的所有元素。
加號(+)會強制包含跟著它的單詞。例如Google默認排除了一些常用詞,但我們想強制Google來搜索這些詞,我們就可以搜索 +and justice for +all。
另一個常用的布爾運算符是 NOT,在功能上與 AND 運算符是相反的,NOT運算符把一個單詞排除出一個搜索之外。使用這個運算符最好的方法就是在一個搜索單詞前加上減號(-)。減號與搜索項之間不含空格。例如 hacker -jacket。
另一個運算符是 OR。還可以用豎線符(|)來表示。可以指示Google 在查詢時落在其中一個或另一個查詢上。
Google不會受到括號影響。我們可以利用括號增加查詢語句的可讀性。例如:
intext:(password|passcode) intext:(username|userid|user) filetype:csv在搜索無效的時候也不要緊,多看看Google給出的提示。
在這裡我直接放置一張高級運算符速查表,對於每一個的具體使用方法以及使用細節以及額外需要注意的點,各位看官自行學習。
高級運算符特性/要點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技巧,大多來自上述高級運算符之間的組合使用,因此,深入理解並熟練運用這些運算符是十分有必要的,在此我強烈建議,如果你在閱讀到這部分之前是一名使用Google Hack的小白,先暫停一下,在搜尋引擎上親自使用一些,看一看返回的結果,閉上眼,用心去體驗。
如果覺得手動輸入還是很彆扭的話,點擊網址https://pentest-tools.com/information-gathering/google-hacking,裡面會有一些簡單的樣例可以供我們理解。
在知曉了Google搜索語法之後,我們就可以進行簡單的Google Hack了。
我們先來看看,除了在」日站「、」滲透「的時候使用Google Hack,我們做為一名」信息爆炸時代「的」年輕人「,合理使用Google搜索這一利器,能帶給我們什麼樣的好處呢?
先看幾個有意思的東西。
搜索play pacman,可以直接玩耍吃豆人遊戲。
搜索flip a coin,性感硬幣,在線拋出。
搜索sunrise & sunset,後面跟地名,可以獲得當地的日出日落時間。
除了這些Google提供的「便民功能」之外,善用高級運算符的搜索,也可以給我們帶來意想不到的結果,例如:
怎麼樣,還充什麼愛奇藝會員嗎?(我愛奇藝會員還有3年到期。。)
怎麼樣,還在kindle上花錢嗎?其他類型的文件大體如此。將上述兩種結合在一起,你就可以獲得更加精準的搜索。
想要合法看圖怎麼辦?比如知乎,經常有人在知乎發問,***是種什麼體驗?那麼我們把關鍵字加入「胸大」二字,看看有關胸大和體驗的提問,再看看答案的配圖,你會回來感謝我的。
留圖不留種,菊花萬人捅?不存在的兄弟,我們只看有下載連結的網站。
簡單的搜索就能獲得這些,只要你姿勢多,大量免費資源唾手可得。豈不美哉?
除此之外,Google還有很多的彩蛋等著大家去發現,有興趣的可以去看看,一些連結會被放在第七章。
我們接著看看,Google Hack在黑客或白帽子進行入侵或資料收集時,都能產生哪些效用:
在入侵之前,可以利用Google Hack技術進行信息收集(本次討論的課題)。
在發現或者公布某個漏洞之後,利用Google Hack技術大量收集這個漏洞的主機或網站,可能用來「抓雞」或進行安全態勢分析、
在入侵過程中搜索,開闢其他的思路,訪問歷史遺留後門等等。
接下來我們將在第四章進行信息收集部分的集中研究。
在這裡要贅述一下,我們認知中,通常的搜尋引擎是通過爬取來獲得網站全部內容的,換言之,網站上未進行連接指向的文件和目錄,在理論上不會被搜尋引擎抓取到,並且,網站與搜尋引擎通過 robots 協議來約束能夠爬取和不能夠爬取的頁面。那也就是說,一個網站能夠被Google抓取的內容是極其有限的。
但是在實際搜索中發現,Google能夠抓到一些沒有連結的文件或目錄之外,還十分驚奇的能夠抓取到更深的目錄,在工作中,甚至發現了Google抓取到一些網站需要登錄之後才能使用的後臺功能連結,直接訪問會被重定向至登錄頁面。Google從何手段得知這些頁面我們不得而知,但一個簡單的想法可能是:Google可能會從Chrome的歷史瀏覽記錄裡獲得數據(瞎猜的)。
還有一點需要注意的是,Google緩存訪問的匿名性。
Google會把抓取到的絕大部分Web數據保存一份拷貝。這些都可以通過搜索頁面的緩存連結來訪問。在訪問Google的緩存連結時,不僅僅從 Google 資料庫加載頁面,也會連接真實的伺服器來訪問圖表和其他非 HTML 內容。我們希望通過訪問Google緩存,來進行訪問的匿名性,即不向目標伺服器發送任一數據包,卻可以拿走目標伺服器的敏感數據。我們無需通過代理伺服器,使用一個快速的剪貼和URL修改,就能以相當匿名的方式瀏覽一個緩存頁面。舉個例子,考慮查詢 site:phrack.org,我麼並非直接點擊緩存連結,而是右擊緩存連結,然後把這個URL拷貝到剪貼板。最後在這個URL的末尾附加上參數 &strip=1 。這個緩存頁面已經剝離了外部引用,不會引入原始伺服器的元素,但頁面可能已經無法辨認。
終於到了本次課題的重點部分,我們按照在滲透測試中信息收集的流程,進行分解,看看使用 Google Hacking如何實現這些功能。
子域名查詢,使用site限定範圍並使用*來進行泛查詢,最後用-排除掉主域名,得到的就是子域名:
site:*.example.com -www.example.comC段查詢,如果你知道這個網站的IP,你也可以使用site結合通配符來查詢在C段上存在的網站:
備份文件查詢,備份文件大致可分為網站備份文件、單頁面的備份文件、配置文件的備份文件,講道理,現在都9102年了,大概只有安全意識為0的運維人員或開發人員會把這些文件放在網站目錄中,找到它們的概率較低,但一旦找到了,可以說本次入侵基本就結束了:
對於網站備份文件,可以使用常用壓縮文件擴展名作為搜索目標:
site:example.com filetype:zip
site:example.com filetype:rar
site:example.com filetype:tar
site:example.com filetype:tar.gz
site:example.com filetype:7z
site:example.com filetype:cab
site:example.com filetype:gz
site:example.com filetype:iso
site:example.com filetype:bz2
site:example.com filetype:jar
可以看到,這裡我列舉了常見的一些壓縮格式,為什麼我不用布爾邏輯匯總在一條查詢裡呢?因為在實際測試中,發現 filetype 和 ext 運算符與布爾邏輯的合作性並不是很好,經常有查不到東西的情況出現,因此我們寧願多進行幾次查詢,來增加我們查詢的命中率。
對於單頁面的備份文件,道理也是一樣的,常見的單頁備份文件擴展名為:bkf、bkp、bak、old、backup,不過不完全是這些,我還見過有人在後面添加時間,如 config.php.201812,這部分可以自行拓展。
配置文件,配置文件也能為攻擊者提供大量的有用信息,需要注意的是,我們想找的是存放著線上應用真實的配置文件,不是配置文件的樣例模板,因此在構造搜索語句時,有幾點可以注意一下:
使用獨一無二的單詞或短語。
過濾掉單詞 sample example test how to tutorial 來排除明顯的樣例文件。
用 -cvs 過濾掉CVS庫,它裡面經常存放著默認配置文件。
在一個配置文件中查找出一個最常被修改的域,對這個域執行一個精簡搜索來減少潛在的無用文件過樣例文件。
如果想寬泛的進行查詢,通過文件名即可:
site:example.com filetype:conf
site:example.com filetype:cnf
site:example.com filetype:xml
site:example.com filetype:ini
site:example.com filetype:dll
site:example.com filetype:ctl
site:example.com filetype:inf
site:example.com filetype:cfg…
根據不同文件名的後綴,結合你想查的東西,可以增加運算符,獲得更精準的命中:
site:example.com filetype:cnf my.cnf -cvs -example
site:example.com filetype:cfg mrtg 「target[*]」 -sample -cvs -example
也可以通過查詢URL獲得一些命中:
site:example.com inurl:config 「fetch = +refs/heads/*:refs/remotes/origin/*」
site:example.com inurl:configuration.php intext:」class JConfig {」
更多的,需要我們根據不同的配置文件進行精心構造,也可以參照GHDB。
日誌文件,日誌文件通常以 log 結尾,最簡單的基礎搜索就是:
site:example.com filetype:log inurl:log或者更簡單的如:
site:example.com ext:log log這個類型在 GHDB 中也有整理。不同類型的日誌文件洩漏了不同類型的信息。可以在攻擊中被利用。
資料庫文件,有的管理人員定期會將資料庫備份並將備份文件統一放入某一文件夾中。使用 filetype 即可:
site:example.com filetype:sql
site:example.com filetype:dbf
site:example.com filetype:mdb
site:example.com filetype:wdb
使用 filetype 可能會導致覆蓋不全,因為如果是二進位格式的文件,Google 不能理解這個文件的格式,那我們就不能使用 filetype 運算符查找文件,因此,我們還應該使用 inurl 進行查詢,來增加命中率:
site:example.com inurl:db|backupdb…除了真實的資料庫文件,還可能存在一些資料庫轉儲文件,資料庫任意格式的輸出都能構成一個資料庫轉儲。使用一個完整的資料庫轉儲,資料庫管理員能完整地重建一個資料庫。這意味著一個完整轉儲的細節不僅僅是資料庫表格的結構,還包含著每張表中的每一條記錄。類似的搜索如:
site:example.com intext:」Dumping data for table」然後通過搜索額外的感興趣的單詞或短語,以助於縮小範圍。同時我們還可以通過 filetype 及其他的高級運算符來進一步縮小。
樣例文件,web伺服器軟體經常會在 web 目錄裡存有手冊和文檔一起提供給用戶,這些文件告訴用戶如何進行使用或理解。這些文件將會帶來一些安全風險。
例如Apache Tomcat的默認樣例目錄,使用以下語句搜索:
site:example.com intitle:」apache tomcat/」 「Apache Tomcat examples」又例如snoop servlet的漏洞:
site:example.com inurl:/examples/jsp/snp/snoop.jsp再比如使用 mysql_connect 函數的 PHP 腳本洩漏了機器名、用戶名和明文密碼,如 db_connect.inc。
這樣的例子還有很多,這裡不進行一一列舉,可以多嘗試一下template、example等關鍵字。
其他敏感文件,除了上面提到的這些,還有一些能帶給我們敏感信息的文件,如robots.txt文件。裡面可能寫了不希望爬蟲爬取的目錄,這些目錄通常就是敏感目錄。
site:example.com (inurl:」robot.txt」 | inurl:」robots.txt」 ) intext:disallow filetype:txt註冊表,如果現在還能在網站目錄中搜到註冊表,那也是沒誰了,不過還是記錄一下:
site:example.com filetype: reg HKEY_CURRENT_USER username目錄列表,這可以說是比較喜聞樂見的一種漏洞類型了,在報告裡,它是低危,但是在滲透中,它能帶來的效用卻很高,在實戰中,遇見的機率也是略低。典型的目錄列表有一個描述當前目錄的標題、一個可以點擊的文件和目錄列表,通常還有一個標註目錄列表底部的頁腳。
目錄列表將存在以下問題:
無法保障進出數據的安全。不阻止用戶下載特定的文件或訪問特定的目錄。
會顯示一些信息,這些信息能幫助攻擊者了解到關於Web伺服器特定的技術細節。
無法分辨哪些是公共文件,哪些是後臺文件。
經常是偶然被顯示出來,因為只要頂層索引文件遺失或失效時,很多Web伺服器就會顯示一個目錄列表。
使用下面兩條基本可以即快又準的搜索到包含目錄遍歷的位置:
site:example.com intitle:index .of 「parent directory」
site:example.com intitle:index .of name size
想要查看指定目錄的遍歷也是可以的:
site:example.com intitle:index .of inurl:admin除了文件信息,目錄列表還能給我們帶來很多有用的數據,如伺服器軟體名、伺服器版本號、伺服器作業系統等。
我們也可以結合目錄列表和其他運算符,直接找到我們較感興趣的東西,如:
site:example.com intitle:index .of 「Application Data/Microsoft/Credentials」
site:example.com intitle:index .of etc|.sh_history|.bash_history|passwd|people.lst|htpasswd|…
臨時文件目錄,臨時文件目錄可以洩漏一些敏感信息,歷史上也記錄了很多類似的漏洞:
site:example.com inurl:tmp|temp|cache…登錄位置查詢,有用戶登錄的位置,通常來帶用戶中心、評論、個人信息管理、管理後臺,隨之而來的就存在很多漏洞,如評論存儲型XSS、頭像上傳、越權、CSRF等等。因此查找登錄位置也是重中之重,首先,我們可以使用intext查找登錄位置的關鍵字。
site:example.com intext:管理|後臺|登陸|用戶名|密碼|帳號|註冊|admin|login|manage|manager|register|houtai|guanli|forgotten還可以用inurl查找位置:
site:example.com inurl:admin|login|manage|manager|register|prelogin|logincheck這部分大家也可以添加自己在滲透測試中遇見的一些登錄位置遇見的關鍵字。
還可以根據版權資訊、指紋信息查找。網站首頁通常具有版權資訊,這個信息可能會在登錄頁面再次出現:
site:example.com intext:」Powered by」
site:example.com intext:」XX科技」
敏感目錄,除了上面提到的,如果你有額外希望關注的敏感目錄,如「信息公開」,使用inurl直接查詢就可以:
site:example.com inurl:xxgk錯誤消息收集,首先是收集資料庫報錯信息,這部分信息可能暴露出SQL語句,路徑等其他信息。並且,這樣的點很容易出現SQL注入漏洞。
site:example.com intext:」sql syntax near」|」syntax error has occurred」| 「incorrect syntax near」|」unexpected end of SQL command」|」mysql_connect()」| 「mysql_query()」|」Warning: pg_connect()」其次是,由於一些報錯信息,會導致洩漏出伺服器的敏感路徑,我們可以直接搜索這些敏感路徑,也能為我們的滲透測試來帶有用的信息:
site:example.com intext:」/var/lib/」|」/var/www/」|」D:\」|」C:\」用戶名、密碼和其他秘密信息,最簡單的就是某些網站上直接上用戶名或密碼寫出來:
site:example.com intext:(password|passcode|pass|密碼) intext:(username|userid|user|用戶|帳戶)實戰中沒有那麼簡單,但是確實是有命中的,比如一些平臺發布一些應用的操作方法,裡面會提供一些默認的帳戶及口令,遇到一些安全意識較差的,沒改密碼的,還是有可能的。
更多的情況是在網站提供的doc格式的操作手冊裡搜索,這部分將在Office文檔收集部分詳述。
電子郵箱地址查找,電子郵件可作為社工的一個關鍵入口。
site:example.com intext:郵箱|郵件|email|e-mail上面的方法比較low,但是存在一定的命中。
site:example.com intext:」@qq.com」|」@163.com」…這個方法。。也比較low,而且搜索結果一言難盡,有些網站為了防止郵箱被抓取,會把@符號換為別的,如#等,還有的留郵箱直接留了一個Base64。這部分算個坑,大家自己琢磨把。
電話號碼,電話號碼也是信息收集的一部分,同樣的,可以按照關鍵字查詢:
site:example.com intext:電話|手機號|聯繫方式|請撥打…手機號可以長成這樣:13500882588(長春市計程車語音廣告招商熱線),或者這樣:0431-87651234(計程車投訴電話),不要問我為什麼這兩個記得這麼清楚,你要是常在長春打車,你也一定能記住。。
因此我嘗試了numrange的搜索方法,但是效果不佳,不過對於座機號碼,可以利用前面的區號來搜索,拿長春舉例,長春的座機號碼前面為0431,因此就可以在頁面上搜索出現0431的位置,來判斷是否包含電話號碼。
對於滲透測試來說,office文檔中的東西也可以是比較juicy的。
對於搜索固定文件名稱,最常見的使用類似 filetype:xls 這種形式的,但是由於Google不一定能完全解析到這些文件,在過程中還有一些坑,測試時發現其實使用 inurl 就可以達到目的,而且效果較好。
因此,重點在於專注內容來尋找敏感文件。
我們可以結合 intitle 、intext、inurl 、單詞、短語進行測試收集,最簡單的例子如:
site:example.com filetype:doc 「密碼」
site:example.com filetype:xls|xlxs 「密碼」
site:example.com filetype:doc intitle:」管理」
指紋識別技術是來判斷一個網站是否使用成型的CMS,根據CMS的版本,以及歷史爆出的漏洞進行定向攻擊的手段,在實際滲透測試中能大大的提高效率。
那麼我們使用Google Hacking能否進行指紋識別呢?答案是肯定的,但是效果不一定會好。
我們知道正常的指紋識別通過訪問特徵文件來確定,這部分其實也可以理解為一個目錄掃描工具,想利用Google Hack的話,我們不直接訪問目標文件,而是通過訪問Google緩存,查看是否有類似的記錄。
這種方法能不能完成我們的目標?答案是能,但是會有幾個問題。
第一,Google抓取的頁面不一定是完全的,所以有很大記錄無法正確匹配指紋;第二,這種大量的訪問請求與目錄掃描簡直無異,違背了我們當初使用Google搜索那種「大海撈針」、十分優雅的感覺,所以在本次課題中將不予討論,但是在技術上是有可實現性的。
除了普通的信息收集,對於一個網站功能點的收集也是一個重點
文件上傳功能,作為能產生高危漏洞的功能點之一,文件上傳功能受到攻擊者額外的青睞,
site:example.com inurl:upload|upfile|saveup intext:提交|確定|上傳文件下載功能,與文件上傳相對,關鍵字由up變為down,上傳變為下載,不贅述。
文件讀取功能,這部分帶來的漏洞就是文件包含,我們可以嘗試常用的關鍵字:
site:example.com inurl:」path=」|」readfile=」|」file=」|」url=」留言評論功能,如下:
site:example.com intext:提交|確定|評論個人空間,常見的越權、儲存型XSS等漏洞的匯聚地:
site:example.com intext:個人信息管理|會員|個人空間 OR inurl:member|zone
其他功能大家自行拓展。
易受攻擊的文件,包含那些被報過漏洞的頁面,或容易遭到攻擊的功能頁面。
這部分參考GHDB,以及我們日常積累的漏洞頁面。舉個例子,曾經報出的 Weblogic SSRF漏洞,就可以通過下面的搜索被找到:
site:example.com inurl:」/uddiexplorer/SetupUDDIExplorer.jsp」如果你積累的夠多,這個信息收集框架就能活活被你搞成漏洞掃描器。
這是一個在實戰中拓展的思路,有一次日一個站,這個站之前被黑過,連webshell還沒來得及刪直接加了一個防護,各種繞不過,但是後來發現頁面被掛了博彩頁面,通過搜索被掛了相同博彩頁面的網站後,發現了是藉由某個最新發布的漏洞批量搞的,於是使用相同的點入侵這個站就拿下來了。因此,搜尋已經遭受入侵的證據,也是信息收集中應有的步驟。
博彩、廣告、反共言論查詢,這部分通過intext來實現即可,由於搜索字符長度的限制,我們將關鍵字拆分,分為多次查詢完成,同樣的,這部分大家可以自由擴展。
歷史遺留後門文件,在遭受攻擊之後,有的黑客可能會留下webshell,以便更加方便的遠程操作伺服器,因此通過搜尋伺服器上是否包含一些小馬、大馬、黑頁或其他的文件,也可以給我們提供幫助。
site:example.com intext:劍眉大俠|不滅之魂|仗劍孤行|通殺版|法客論壇|上傳的口令|」導出DLL文件出錯」|」token虛擬機管理」|老子的絕對路徑|免殺版
site:example.com intext:法克|後門|木馬|小馬|大馬|脫庫|黑客|一句話後門|掛馬|清馬|」掃描IP」|開放埠|提權|執行命令|設置密碼|提升權限
site:example.com intext:一句話木馬|過狗|安全狗|」K8飛刀」|」K8拉登哥哥」|」K8搞基大隊」|反彈埠|」hacked by」…
除了關鍵字之外,還可以利用常見的木馬文件名稱來查找:
site:example.com inurl:phpspy|udf|JFolder|JspSpyJDK5|AspxSpy2014Final…webshell 文件名可以通過在 github 上搜索相關的項目得到,不過這種方式會存在一定的誤報,而且命中率也比較低,可以作為與intext查找的互補使用。
其他特徵文件,除了木馬和黑頁之外,還可以拓展其他思路,例如,部分黑客在拿下一臺伺服器權限後想要進一步內網滲透,除了遠程連接的這臺伺服器,然後把自己的工具全裝在伺服器上(汗,年輕的時候還真這麼幹過)之外,更好的方式是利用代理來實現,使用起來比較方便著名的有regeorg+proxifier的組合,黑客需要將regeorg對應語言的文件上傳至伺服器,在未更改的情況下,訪問該頁面會出現Georg says, 『All seems fine』的字樣,我們可以通過搜索這個關鍵字來查看伺服器是否遭受了內網滲透:
site:example.com intext:」Georg says」 intext:」All seems fine」類似地,使用 AWVS 等掃描器,對weblogic、struts2等漏洞進行測試驗證時,也會向伺服器上上傳測試文件,我們也可以用裡面的驗證欄位來搜索,類似:
site:example.com intext:」Struts2 Exploit Test」搜尋引擎由於爬蟲的周期性,通常對於網站抓取的更新是要慢於網站本身的更新一段時間的,因此,在使用搜索時,可能搜索到一些已經消失的頁面,不過並不影響我們在其中獲取敏感信息。如果想要從 Google 緩存中得到數據,則考慮使用 cache 關鍵字。
在思路清晰、查詢語句基本成熟之後,我們希望能夠將其編寫成代碼,能夠在實際使用時由計算機替我們快速實現。
項目地址:https://github.com/JosephTribbianni/Elena
核心的文件在包google_hack下,google_search提供google查詢類,ghdb.json記錄整理好並可以使用的搜索語法,google_hack將兩者結合在一起,進行查詢。logfile文件夾下存放日誌文件。config文件夾下settings文件是用戶自定義設置文件。
module包內,logger提供日誌輸出及記錄功能,report提供將查詢結果返回html格式的報告。
這裡沒有使用 Google提供給我們的 API,因為每天免費一百條,查多了就會收費。
為了解決直接查詢會被封IP的情況,我們使用採用代理池隨機抽取的方案。具體代碼請移步 Github 查閱,歡迎指導。這裡放兩張截圖。
在測試樣例中,為了展示效果,我們對 http://su18.org 查詢了四個在Google中抓取到的目錄。
程序運行:
日誌記錄:
報告樣例:
點擊條目會返回目標頁面源碼:
實際上可以看到,在編寫程序的後期,為了保證程序查詢結果的健壯性,及報告的充實性,在從Google 查詢中得到結果後,還是直接訪問了我們查詢到的網站地址,並獲取了一些信息添加到報告之中。
而且,由於本人沒有那麼多代理,所以程序寫的是單線程(汗)。
本章99%的搜索語句我都測試並優化過,建議各位自行測試加深印象,對於思路,千萬不要被我的想法和分類固化,因為還有很多方面我沒有覆蓋到,希望各位自行發散。
到此為止,我們已經完成了這次的課題,對Google Hack進行的學習、研究並利用python代碼進行實現,但是額外再想一下,雖然我們已經成功做到了「不向目標伺服器發送一個數據包,但卻從中拿走了敏感數據」,其實是指做了一個替代,原本要打到目標伺服器中的數據,被打到了 Google 上,儘管我們一再精簡,但還是有很多數據包將要發送。
我們可能會擔憂,在這期間,我們的網絡運營商以及能夠獲取這部分數據的團體,可以通過我們的流量來檢測我們的行為,或者Google本身就能夠通過我們的行為知道我們的目標是什麼。
這顯然不是我們想要的,那怎麼進一步進行隱匿呢?
第一是使用代理,因為除此之外我暫時想不出更有效的方案了。在向Google發送請求時使用代理,來隱藏自己。
第二是使用一些匿名的搜尋引擎,如 duckduckgo ,它承諾在處理我們的請求時不會保存用戶數據用於其他目的(但是我們也不知道)。
第三是不使用自己的資源進行請求,我們在網站找到一些能夠替我們請求並返回結果的頁面(類似SSRF那種),以他們作為我們的上層代理。(除了提供這種服務的網站之外,屬於利用其它網站的漏洞進行惡意訪問,理論上違法,這裡只是純技術上的討論,請勿實踐,另外,這些網站也不一定擁有能夠連接到Google的網絡服務。)
在樣例中和代碼中,各位可以手動試用一下上述搜索語句,並按照自己的喜好進行精簡或優化,以獲得更加精準的目標命中或更加廣闊的結果返回。更多的用法和拓展也需要大家去補充了。
雖然我們本文使用了Google這個搜尋引擎進行這方面的實現,但是作為國內最大的搜尋引擎百度,在信息收集方面,並不是一無是處,首先,對於中文的智能語義化處理,百度就較Google稍強。另外百度貼吧,百度網盤裡,資源也是大大的有。有興趣的也可以試試其他國家的或比較著名的搜尋引擎,都會有意想不到的發現。
同時不要忘了,這篇文章僅僅是我作為安全學習路上一篇記錄,儘管努力地編寫優雅的代碼,但是由於入門級的Python水平加上時間的不允許,也只能是作為一個學習過程的產物,並不是什麼拿的上檯面的東西,而作為信息收集部分的工具,僅僅是針對單一網站進行的操作,如果你想針對全網進行收集,可以修改我的腳本,但是也千萬不要忘了使用已經近乎成熟的利器:https://www.shodan.io/、https://www.zoomeye.org/ 。
總結一下:學習Google Hacking在實戰中是有幫助的,造個輪子沒別的意思,就是在練習寫python的過程中順便熟悉知識點,整理思路。差不多就到這吧。
《Google Hacking 滲透性測試者的利劍》 清華大學出版社 沈盧斌譯
www.google.com/help/basics.html
http://www.mrjoeyjohnson.com/Google.Hacking.Filters.pdf
https://www.exploit-db.com/google-hacking-database/GHDB
https://www.cifnews.com/article/29108
https://zhuanlan.zhihu.com/p/41410213
http://www.zarias.com/funny-google-searches/
https://www.vendasta.com/blog/32-fun-google-tricks
https://zety.com/work-life/google-search-hacks
https://pentest-tools.com/information-gathering/google-hacking
http://www.dianbo.org/9238/
https://github.com/opsdisk/pagodo/blob/master/google_dorks_20181229_113249.txt
https://github.com/K0rz3n/GoogleHacking-Page/blob/master/Google%20Hacking%20Database.md
https://www.cnblogs.com/xudong0520/p/5797828.html
http://www.mamicode.com/info-detail-552937.html
https://github.com/anthonyhseb/googlesearch
凌天實驗室,是安百科技旗下針對應用安全領域進行攻防研究的專業技術團隊,其核心成員來自原烏雲創始團隊及社區知名白帽子,團隊專業性強、技術層次高且富有實戰經驗。實驗室成立於2016年,發展至今團隊成員已達35人,在應用安全領域深耕不輟,向網絡安全行業頂尖水平攻防技術團隊的方向夯實邁進。