滲透測試中,第一階段就是資訊蒐集,這一階段完成的如何决定了你之後的進行是否順利,是否更容易。而關於資訊收集的文章網上也是有太多。今天我們來通過一些例子來講解如何正確使用Shodan這一利器。
想要利用好這一利器,首先得知道他是什麼,Shodan是一款網路空間搜尋引擎,和我們常見的百度穀歌不同,他主要蒐索的是存在於互聯網中的設備,服務器、監視器、工控設備、智能家居等,都是他的目標。Shodan不僅可以發現這些設備,並且可以識別出其版本,位置,埠,服務等一些資訊,並且進行了一些相應分類。
Shodan分免費帳戶和會員帳戶,免費帳戶對一些標籤的蒐索和多標籤關聯蒐索有限制,而會員的話就可以任意進行一些蒐索,所以想要搜到自己想要的結果最好還是有一個會員比較方便,Shodan在每個黑色星期五的時候會進行讓利(每年11月第四個週五),平時需要49美元的會員活動時只需要5美元,需要的小夥伴可以關注下。
一個系統的受攻擊面越多,被入侵的風險也就越大,Shodan可以很好的幫你找到其他攻擊面。下麵開始正式來講一下如何在平時的滲透測試中利用好Shodan,注意學習思考問題的方法,而不只是簡單的蒐索語句。
場景1:想蒐索美國所有的ElasticSearch服務器
ElasticSearch是一個基於Lucene的蒐索服務器。它提供了一個分佈式多用戶能力的全文搜尋引擎,基於RESTful web介面。設計用於云計算中,能够達到實时蒐索,穩定,可靠,快速,安裝使用方便。為什麼要蒐索他,因為他有多個漏洞,未授權訪問、目錄遍歷、任意命令執行等,蒐索wooyun鏡像也可以看到有不少結果。
要實現這個場景,首先要瞭解一些關於ElasticSearch服務器的基本知識,這裡可以直接百度。
通過百度我們可以瞭解到ElasticSearch的默認埠是9200,這裡會用到一個基礎語句“port”,這時我們可以先在Shodan進行相應蒐索,看會返回什麼。在Shodan中輸入”port:9200”來進行蒐索,
可以看到返回,共蒐索到215669個結果,重點學習的地方在左邊這個分類統計,
我們想要的是美國的ElasticSearch服務器,可以看到左邊的統計中已經對一些常用欄位進行了分類統計,有國家、組織、作業系統及產品,這裡已經看到了我們所需要的欄位,只需要點擊相應的標簽,即可進行進一步的細化蒐索。因為並不是所有的9200埠都是ElasticSearch服務,也有將默認9200埠修改了的。所以這裡依次點擊TOP PRODUCTS中的“Elastic”和TOP COUNTRIES中United States,並且删掉port:“9200”,注意觀察蒐索框中的關鍵字變化:
到這裡我們可以看到已經實現了我們的目的,找到了美國的ElasticSearch服務器,包括默認埠和非默認埠。當搜索結果細化到一定程度時,左邊的統計也會有相應的變化,現在可以看到已經變成了對都市、組織、作業系統、和ElasticSearch版本的一個統計。至此我們已經學到了兩個新的關鍵字:
“product” 對某一產品進行蒐索
“country” 蒐索某個國家的資產,
當我們需要多個詞同時蒐索時,只需要在每個關鍵字間加空格分割就行,當不需要某個詞時,可以用”-”加上關鍵字來進行去除,比如不想要Amazon的ElasticSearch服務器,就可以”-org:amazon”,如何知道org這個關鍵字的?同樣是左邊的統計,當我們滑鼠移動到Amazon時,可以看到他相應的連結,已經給出了關鍵字
上面是根據已有關鍵字可以搜到的內容(port)來進行蒐索的一個例子,下麵我們來看另一個場景。
場景2:蒐索所有的搭建了Supervisor的服務器
Supervisor是一個用Python寫的進程管理工具,可以很方便的用來啟動、重啓、關閉行程。我們為什麼要蒐索這個東西呢,當然是因為他有問題。今年9月份的時候Supervisor爆出了一個遠程程式碼執行漏洞CVE-2017-11610,我們想要複現一下漏洞(滑稽)。按照上一個場景的經驗,當我們想要通過埠來蒐索Supervisor時,我們百度發現他並沒有默認埠,所以就需要用的另一種更常用的方法。來看我是怎麼找的:
首先在Shodan中蒐索supervisor,看返回什麼。
可以看到返回了1363條結果,但是根據右邊的返回資訊來看,好像有些並不是我們需要的東西,這時候就需要進一步細化搜索結果,來找一個能够精確定位的關鍵字。這裡我們多打開一些服務器,來尋找我們需要的supervisor服務器,這裡有一個是我們需要的:
打開後發現這個就是我們需要的Supervisor服務器,那麼我們用什麼來定位這類服務器呢,這裡就要用到一些新的語法:
“http.title” 根據網站banner蒐索
很明顯我們可以看到supervisor服務器有個很明顯的特徵,就是他的title位置是”Supervisor Status”,那我們是不是可以用http.title:“Supervisor Status”來精確定位所有的supervisor服務器?來看返回結果:
可以看到返回了44個結果,而且右邊的預覽相應的也都只剩下下了title為Supervisor Status的服務器,至此我們已經大致找到了我們需要的結果,當然Shodan作為一款搜尋引擎,也不一定就能够收錄所有的設備,所以有一些遺漏也是正常的。
接下來講一下細節的東西,蒐索帶有同一個icon圖標的的服務器。
首先我們都知道,一般的網站有自己icon,比如百度、阿裡、騰訊等,而一般公司會對其所有網站的title中都加上這個icon,來新增統一性,也方便用戶識別,如下如所示:
Shodan針對網站的icon也有自己的蒐索關鍵字,可以蒐索到所有帶有統一icon的服務器,一般都會是公司自己的資產了,然後大家就可以對這些服務器進行埠掃描等進一步的漏洞挖掘。這裡用到的關鍵字為:”http.favicon.hash”,hash後面為一串獨有的數位,因為並不知道Shodan是如何給每個icon分配hash的,所以這裡我來說一下我自己的方法。
首先要知道在Shodan結果中在哪裡尋找這個標記,如下如所示,箭頭位置就是這個網頁的icon:
因為這個icon只能算是對公司資產的一種標識,所以有些網站可能並沒有帶有icon,但是有些常用手段收集的服務器可能會漏掉這些,所以這個方法還是有一定的用途,這裡拿支付寶舉例。
我們嘗試性的輸入一些與支付寶相關的內容來進行蒐索,如Alipay,支付寶,www.alipay.com等,當我們蒐索到www.alipay.com時,可以看到結果內已經有攜帶支付寶icon的網站了:
這個時候需要做的就是,點擊這個icon圖標,就像我們之前細化場景一中的搜索結果一樣,然後將輸入的www.alipay.com删掉,就可以得到所有攜帶該icon的網站了。
當然對於公司資產的收集,除了上面的方法,還有其他方法,這裡再說一種。一般大型的公司都會購買一個或幾個網段來使用,並且會進行等級,那麼這裡就可以用到我們剛才提到過的”org”語法來進行蒐索,這裡拿阿裡巴巴進行舉例。
直接在Shodan中蒐索阿裡巴巴,看返回的結果:
主意我框起來的地方,這個位置顯示的就是他的所屬組織,那麼根據我們上面講的,這裡我們點擊Alibaba,然後將我們剛才輸入的alibaba删掉,然後只看中國的服務器,再次蒐索,看會得到什麼。
這樣就得到了所有阿裡巴巴集團網段的服務器,但由於阿裡業務巨大,再加上有阿裡雲業務,所以結果中並不都是阿裡自家的東西,這裡只是講一個大致思路,具體怎麼進一步利用,還需要自己思考。
當我們得到了我們需要的結果時,如果結果數量巨大,下一步需要考慮可能就是怎麼匯出結果了,這裡說一下,Shodan是自帶了數據匯出功能的,但是需要付費,當注册成為會員時,會默認送20次,匯出成功時會給你郵箱發一封郵件。但是我認為他比較坑,因為有時候匯出一個數據可能需要好幾天的時間。想到爬蟲的同學可以嘗試一下。。因為我試過,但是因為有反爬蟲並沒有成功,當發現為爬蟲時,會限制你的蒐索到最多20頁,不管你是不是會員。我想到的解決辦法是將每一頁網頁都保存在本地,然後在本地進行選取,還怕什麼反爬蟲。當然如果大家有好的爬蟲,也可以分享一下。
最後在列舉一些比較常用的蒐索語句來供大家參攷,什麼時候用什麼樣的語句,完全取決於你怎麼去想。
asn 區域自治編號
port 埠
org ip所屬組織機構
os 作業系統類型
http.html 網頁內容
html.title 網頁標題
http.server http請求返回中server的類型
http.status http請求返回響應碼的狀態
city 都市
country 國家
product 所使用的軟件或產品
vuln CVE漏洞編號,例如:vuln:CVE-2014-0723
net 蒐索一個網段,例如:123.23.1.0/24
其實Shodan的關鍵字還有很多,經緯度、ssl資訊、smb版本號、區號、返回碼狀態等等,只要發揮你的想像力,從結果中尋找結果,學會舉一反三,就總能得到你想要的。:)
想瞭解關於Shodan更多的用法可以參考這篇Shodan手册。
最後,安利下我們Chamd5安全團隊的微信公眾號,微信蒐索:chamd5sec或者掃描下麵的二維碼即可關注,我們會不定期分享原創技術文章,更有獨特的小編妹子陪聊服務哦,歡迎大家關注。