Web指紋識別的介紹與編寫
一、 前言
Web指紋是Web服務組件在開發時留下的對其類型及版本進行標識的特殊信息,包括Web服務器指紋、Web運用指紋以及前端框架指紋等。在Web安全測試過程中,收集Web指紋信息也是一個比較重要的步驟;在安全運營過程中,通過指紋識別識別資產的Web信息,這樣能更加了解整個資產存在哪些方面的威脅,然后對癥檢測修補。
網絡上開源的Web指紋識別程序很多,如Wappalyzer,Whatweb, wpscan, joomscan等等,在線指紋平臺有云悉,還有我們本文重點介紹的數字觀星指紋平臺
(https://fp.shuziguanxing.com/#/)等。接下來會介紹如何編寫以及編譯指紋并提交到平臺上。
二、 初見
實踐是認識事物最快的途徑,這里先使用常見的指紋識別工具做簡單的指紋識別示范。
1. Whatweb
Whatweb是一個基于Ruby語言的開源網站指紋識別軟件,正如它的名字一樣,Whatweb能夠識別各種關于網站的詳細信息包括:CMS類型、博客平臺、中間件、Web框架模塊、網站服務器、腳本類型、JavaScript庫、IP、Cookie等。
在kali下sudo apt install whatweb :
對網站進行指紋識別:
2. Wappalyzer
Wappalyzer是基于正則表達式來識別Web應用,它的功能是識別單個url的指紋,其原理就是給指定URI發送HTTP請求,獲取響應頭與響應體并按指紋規則進行匹配。它也是一款瀏覽器插件,能識別出網站采用了那種Web技術,能夠檢測出CMS和電子商務系統、留言板、Javascript框架,主機面板,分析統計工具和其它的一些Web系統。這里主要介紹基于node.js的Wappalyer的安裝與使用。
(1)node.js環境的安裝,官網下載地址https://nodejs.org/en/
(2)通過Node.js安裝Wappalyzer
記住這個路徑 C:\Users\xx\AppData\Roaming\npm\node_modules\wappalyzer之后講解調試指紋有用
(3)使用wappalyzer指紋識別
三、 探究
這里主要探討如何編寫基于Wappalyzer的指紋(參考https://fp.shuziguanxing.com/#/fingerplatinfo)
1. 指紋識別的幾種方式
- 網頁中發現關鍵字
- 特定文件的MD5(主要是靜態文件、不一定要是MD5)
- 指定URL的關鍵字
- 指定URL的TAG模式
2. 指紋識別分類
基于Wappalyzer的指紋識別分類
3. 指紋規則
4. 指紋識別例子講解
"Struts": {
"cats": [
"18"
],
"html":"(href|action|src).*?=.*?(action|do)\\;confidence:50",
"url": "/.*\\.do$|/.*\\.action$\\;confidence:40",
"html": "Struts Problem Report",
"website": "http://struts.apache.org/",
"_fingerprint_note":"Apache Struts是一個用于開發Java EE網絡應用程序的開放源代碼網頁應用程序架構。",
"_fingerprint_test_url":"https://www.shuziguanxing.com/"
}
描述:struts組件,分類18(Web框架),匹配html中是否存在action,do后綴,定義可信值50,匹配url中是否有do和action后綴,定義可信值40,匹配html中是否存在“Struts Problem Report”字符串,默認不定義可信值則為100。備注:總體可信值如果超過100,也只會返回100。
5. 簡單分析Wappalyzer的執行過程
Wappalyze執行文件在C:\Users\xx\AppData\Roaming\npm\下。
Wappalyzer的包目錄在C:\Users\xx\AppData\Roaming\npm\node_modules\wappalyzer。
這里我們重點看apps.json文件,apps.json文件是個什么東西呢?apps.json記錄的是整個的指紋規則,之后我們自己編寫的指紋就是要放進這里調試。
看下里面是一個怎么樣的構造:
{
"$schema":"../schema.json",
"apps":{
"1C-Bitrix":{
"cats":[
1
],
"headers":{
"Set-Cookie":"BITRIX_",
"X-Powered-CMS":"Bitrix Site Manager"
},
"html":"(?:<link[^>]+components/bitrix|(?:src|href)=\"/bitrix/(?:js|templates))",
"icon":"1C-Bitrix.png",
"implies":"PHP",
"script":"1c-bitrix",
"website":"http://www.1c-bitrix.ru"
},
},
"categories":{
"1":{
"name":"CMS",
"priority":1
},
......
}
}
Json文件里面有兩部分apps與categories,我們可以發現apps里面的信息跟上面指紋例子特別像,其實我們之后寫的指紋就是放在這里面進行識別網站的,categories是指紋的類型,這項可以不用管,只看apps。
6. 調試編寫好的指紋
Wappalyzer在執行過程中會調用apps.json文件內容進行指紋匹配。所以我們編寫好的指紋放進里面進行調試。
如果你希望只顯示你要調試的指紋的話,你可以把apps.json文件備份為apps.json.bak,然后把apps.json中的apps部分里面的內容刪除,只放入自己編寫的指紋。
以織夢cms為例子,執行全部的指紋:
如果僅僅是測試cms,不想看到其他信息,你可以刪除其他指紋,留下我們寫好要調試的指紋,這樣看起來就很清晰了。
四、 實戰
1. 查找目標
上sofa:??https://fofa.so??查找“禪道”
??
2. 判斷觀星指紋平臺是否存在該指紋
復制sofa查找到的目標到觀星指紋平臺,沒有該Web應用指紋信息,那我們開始編寫這個Web應用的指紋。
3. 觀察該Web應用
(1)cookie:zentaosid
(2)html
(3)script
4. 依據以上特征編寫指紋
下面的是依據上面分析來寫的,圈出來的信任值只是方便編譯時,查看命中哪條記錄,等最后調試完成后再按實際情況給信任值。
5. 提交到指紋平臺
??https://fp.shuziguanxing.com/#/batchAdd??
五、總結
我們數字觀星指紋收錄平臺中的指紋規則是基于Wappalyzer的,編寫的指紋能夠通過Wappalyzer調試,寫的指紋基本都是正確的。
指紋收錄平臺收集指紋信息,通過的指紋會依據質量獲得相應的星豆,具體信息請看看官方說明:
??https://fp.shuziguanxing.com/#/fingerplatinfo??,里面還介紹了接收指紋的范圍、指紋提交流程、指紋審核流程以及指紋評價標準等。
最后,感謝超哥指導,筆者一介菜鳥,有誤之處歡迎指出。