1. 程式人生 > >Shodan的http.favicon.hash語法詳解

Shodan的http.favicon.hash語法詳解

簡單 tar 地址 字段 就是 mpi 舉例 數值 sts

  在Shodan搜索中有一個關於網站icon圖標的搜索語法,http.favicon.hash,我們可以使用這個語法來搜索出使用了同一icon圖標的網站,不知道怎麽用的朋友請參考我上一篇文章。

  通過上一篇文章我們了解到,由於hash為一個未知的隨機數,所以是無法通過輸入一個確定的hash值來搜索帶有指定圖標的網站的,只能夠通過查看一個已經被Shodan收錄的網站的hash值,來進一步獲取到所有帶有某icon的網站。那麽這裏的用法就非常的有局限性,你只能是碰運氣的來找到你所需要查找的網站,因為Shodan不一定收錄了你想要搜索的網站。接著上一篇講,那麽如果Shodan收錄了某個ip,這個服務器帶有某個icon圖標,我能不能搜索所有帶有此icon的服務器ip?答案是可以的。

  這裏拿百度舉例,這裏有一個ip為180.97.34.35的服務器,截圖如下,

技術分享圖片

  如果我想搜索帶有這個icon的所有ip地址的話,可以先在Shodan搜索這個ip,這裏要用到一個之前沒註意到的東西,就是Shodan的原始數據(Raw Data)功能,

技術分享圖片

  點擊詳情裏的View Raw Data,打開可以看到Shodan所存儲的關於這個ip所有信息的原始數據,由於東西篇幅太多,就不一一截圖,

技術分享圖片

  這裏我們需要用到關於icon hash的字段是這個,data.0.http.favicon.hash,如圖所示可以看到結果為-1507567067,這個數值就是http.favicon.hash中所需要的搜索值,

技術分享圖片

  根據上面我們得到的hash值來嘗試使用http.favicon.hash語法進行搜索,可以看到我們成功得到了所有的帶有這個icon的網站,

技術分享圖片

  Shodan的原始數據中還有其他很多東西,這裏看一下data.0.http.favicon.data字段,從字面意思上來看應該是和favicon有關的,是他的數據,而這個格式看起來有沒有很像我們熟悉的base64?沒錯了,其實這個字段就是圖標base64之後的結果,

技術分享圖片

  這裏我們可以使用python腳本簡單的進行下檢驗,腳本如下,可以看到結果與網站中數據大致是一樣的,後來詢問了Shodan的工程師,確認了這個字段中存儲的就是圖標結果的base64格式。

import requests

response = requests.get(‘https://www.baidu.com/favicon.ico‘)
data = response.content.encode(‘base64‘)
print data

技術分享圖片

  至此我們已經對Shodan的一些細節有了更進一步的了解,現在出現了一種新的狀況:假如你有一個網站,打開只有一個登陸界面,沒有其他任何信息,但是此時你發現他有一個icon圖標,所以猜想他可能是使用了某個不知名的cms之類,這裏想到可以使用Shodan來搜索出帶有同樣icon的網站,從其他使用了相同模板的網站來尋找突破口。根據我們上面講的,去Shodan中搜索這個ip,然而當你在Shodan中搜索時,卻發現Shodan並沒有收錄這個ip地址,沒有搜到任何結果,這個時候該怎麽辦?

技術分享圖片

  這裏就要講到今天的重點,如何通過一個網站icon逆推出Shodan搜索所需要的hash值。其實也非常簡單,結合我上面說到的腳本就可以實現,通過一些渠道了解到,Shodan在處理這個結果時,使用了一個名為mmh3的python庫,用的是MurmurHash3函數,一般用來進行哈希檢索操作,關於mmh3庫的具體用法可以看這裏——>傳送門點我。所以Shodan這裏對於icon圖標hash值的產生就清楚了,首先獲取網站的icon,網站圖標進行base64編碼,並使用mmh3進行hash計算。mmh3模塊可以通過pip安裝,安裝時可能會報錯,我這裏遇到需要安裝C++ Compiler Package for Python 2.7,有其他報錯的話根據報錯安裝即可,使用的為python2.7,不需要添加seed,腳本如下:

import mmh3
import requests

response = requests.get(‘https://www.baidu.com/favicon.ico‘)
favicon = response.content.encode(‘base64‘)
hash = mmh3.hash(favicon) 
print hash

  通過計算會得出一串數字,結果為-1507567067,再結合Shodan語法http.favicon.hash即可搜索出剛才的結果。

  這裏進行測試,拿博客園舉例,f12查看圖標的地址,為http://common.cnblogs.com/favicon.ico,看一下沒有問題,是icon。

技術分享圖片

技術分享圖片

  之後將腳本中的地址改為這個,進行計算,得出一個值-395680774。

技術分享圖片

  之後在Shodan中進行搜索,可以看到成功搜到了我想要的結果,雖然數量比較少。

技術分享圖片

  

  

Shodan的http.favicon.hash語法詳解