压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

如何使用Wappalyzer API進行Web應用指紋識別

  Web應用指紋識別,是web滲透信息收集最關鍵的一步,這方面開源的工具也非常多,像BlindElephant,whatweb 以及在非安全圈都很火的wappalyzer。本文主要描述如何使用wappalyzer的perl與php接口進行指紋識別。

  Wappalyzer的功能是識別單個uri的指紋,其原理就是給指定URI發送HTTP請求,獲取響應頭與響應體并按指紋規則進行匹配。這也是web應用指紋識別最基礎的部分,除此之外,還有指紋置信度計算(如何去處偽造指紋,多種指紋特征如何綜合判斷,隱藏指紋信息如何提取),整個站點的指紋識別還涉及到有效爬蟲抓取,分布式計算等問題,這些都不在本文內容中。

  一、perl版本

  原理:

  給指定uri發送HTTP請求,通過分析HTTP相應的以下部分來判斷指紋

  (1)  headers特征

  響應頭key:value對,多個key:value用逗號隔開,例如

  "headers": { "X-AMP-Version": "([\d.]+)\;version:\1", "Set-Cookie": "^AMP=" },

  (2)   html特征

  響應體內容,多個規則用逗號隔開,例如

  "html": [ "<div class="[^"]*parbase", "_jcr_content", "/etc/designs/", "/etc/clientlibs/" ]

  特別注意:html全文匹配的規則一定要謹慎編寫

  (3)  url特征

  url內容,例如

  "url": "/cgi-bin/UCEditor\?(?:.*&)?merchantid=."

  (4)  meta特征

  響應html 頁面中諸如<meta name="version" content="neblog-1.0"/>中的名字name:內容content對,多個規則用逗號隔開,例如

  "meta": { "generator": "webEdition", "DC.title": "webEdition" }

  (5)  script特征

  響應html頁面中諸如<script type="text/javascript" src="http://b1.bst.126.net/newpage/r/j/ec.js?v=1413881655525"></script> src中中url內容,多個規則用逗號隔開,例如

  "script": [ "angular(?:\-|\.)([\d.]*\d)[^/]*\.js\;version:\1", "/([\d.]+(\-?rc[.\d]*)*)/angular(\.min)?\.js\;version:\1", "angular.*\.js" ]

  局限性:

  不支持規則文件中APP版本號與置信度的獲取

  對非utf8的中文編碼可能會存在問題

  優點:

  較之PHP版本,使用qr正則預編譯處理,可以提前發現正則的問題,這是我選擇該語言版本的主要原因。

  (接下來的php版本就能讓你知道正則不預編譯處理有多坑了!)

  腳本的功能:

  (1)指紋識別結果按JSON格式返回,以便后續指紋信息入庫等處理

  (2)支持批量uri查詢

  (3)支持指定自定義JSON格式的指紋規則文件

  (默認的指紋文件放置在/usr/lib/perl5/WWW/apps.json ,具體的路徑會因cpan模塊的安裝路徑有區別

  可以使用perl -V 察看@INC變量來確定路徑,或者更暴力的find吧)

  安裝:

  cpan -i  WWW::Wappalyzer

  clone https://github.com/tanjiti/FingerPrint.git

  運行:

  (1)獲取單個uri的指紋

  perl FingerPrint.pl www.xxx.com<uri 必選> tanjiti.json[指紋規則文件,可選]

  返回結果

  {

  "www.xxx.com": {

  "blogs": [

  "WordPress"

  ],

  "web-servers": [

  "Nginx"

  ],

  "cdn": [

  "CloudFlare"

  ],

  "cms": [

  "WordPress"

  ],

  "font-scripts": [

  "Google Font API"

  ],

  "javascript-frameworks": [

  "jQuery"

  ],

  "javascript-graphics": [

  "Javascript Infovis Toolkit"

  ]

  }

  }

  (2) 從文件讀取url列表進行批量指紋識別,并將結果輸出到文件中

  perl FingerPrint.pl url.txt<uri 文件路徑 必選> tanjiti.json[指紋規則文件,可選]

  結果輸出到 url.txt__fingerprint 文件里

  指紋規則文件編寫示例:

  more tanjiti.json

  "apps": {

  "Discuz!":{

  "website": "www.discuz.net/forum.php",

  "cats": [ 1 ],

  "meta": { "generator": "Discuz"},

  "headers": {"Set-Cookie": "_lastact.*_sid|_sid.*_lastact|_sid.*smile|smile.*_sid"},

  "url": "/uc_server[/$]|uc_client[/$]",

  "html": "Powered by (?:Discuz!|<a href="http://www\.discuz\.net/"|UCenter)",

  "implies": "php"

  },

  "PHP": {

  "website": "php.net",

  "cats": [ 27 ],

  "headers": { "Server": "php/?([\d.]+)?\;confidence:40\;version:\1", "X-Powered-By": "php/?([\d.]+)?\;confidence:40\;version:\1", "Set-Cookie": "PHPSESSID" },

  "url": "\.php(?:$|\?)"

  }

  }

  二、php版本

  原理

  同perl版本,區別有兩點:

  1. HTTP請求部分:較之perl使用LWP發送HTTP請求,php使用curl發送HTTP請求

  2. 規則匹配部分:指紋規則的匹配部分使用javascript語法,然后通過php的v8js模塊來解析。(為什么要這樣做呢?當返回響應體內容很多,指紋正則寫的很爛的時候,會卡死在規則匹配這一過程中,現在的規則下sina,163等大站基本卡死!)

  運行

  PHP版的接口已經能直接使用了,只是需要替換規則文件,囧

  第一步:安裝php、curl及v8js

  apt-get install php5-dev php-pear build-essential libv8-dev php5-curl

  pecl install channel://pecl.php.net/v8js-0.1.3

  echo extension=v8js.so >> /etc/php5/cli/php.ini

  驗證是否安裝成功

  php -m | grep v8js

  v8js ———–OK

  第二步:下載Wappalyzer腳本

  git clone https://github.com/ElbertF/Wappalyzer.git

  cp -R Wappalyzer/drivers/php/* .

  cp Wappalyzer/share/js/wappalyzer.js js/

  cp Wappalyzer/share/apps.json .  (指紋規則文件) 該規則文件的正則編寫的有問題,所以我使用的以前版本的規則文件cp /usr/lib/perl5/WWW/apps.json .

  php版指紋識別程序結構如下:

  index.php 主程序

  Wappalyzer.php

  WappalyzerException.php

  js/driver.js js/wappalyzer.js

  apps.json 指紋規則文件

  第三步:驗證是否成功

  php index.php www.tanjiti.com

  輸出格式為

  應用名,版本號,置信度,app類型 (比perl版本多了對版本號,置信度的獲取)

  CloudFlare, , 100%, cdn

  Javascript Infovis Toolkit, , 100%, javascript-graphics

  jQuery, , 100%, javascript-frameworks

  Nginx, , 100%, web-servers

  PHP, 5.5.9, 100%, programming-languages

  Ubuntu, , 100%, operating-systems

  WordPress,  4.0, 100%, cms, blogs

  接下來的優化輸出為json格式與批量處理uri同perl版本。

  最后寄言,一定一定要寫好正則,NFA引擎正則優化TIPS、Perl正則技巧及正則性能評測方法

 

上一篇:智能無懼挑戰 山石網科轟動RSA2015

下一篇:無需木馬感染可監聽鍵盤 ScanBox惡意軟件問世