2019測試指南-web應用程序安全測試(二)指紋Web應用程序

在陽光下沒有任何新東西,幾乎每個人們​​均可能想到開發的Web應用程序已經開發出來了。隨着世界各地積極開發和部署的大量免費和開源軟件項目,應用程序安全測試極可能面臨徹底或部分依賴於這些衆所周知的應用程序的目標站點(例如Wordpress, phpBB,Mediawiki等)。瞭解正在測試的Web應用程序組件對測試過程有很大幫​​助,而且還將大大減小測試期間所需的工做量。這些衆所周知的Web應用程序具備已知的HTML標頭,cookie和目錄結構,能夠枚舉這些標識符以識別應用程序。php

 

測試目標

肯定Web應用程序和版本,以肯定已知漏洞以及在測試期間使用的相應漏洞。css

 

如何測試

餅乾

識別Web應用程序的一種相對可靠的方法是使用特定於應用程序的cookie。html

請考慮如下HTTP請求:python

GET / HTTP / 1.1 用戶代理:Mozilla / 5.0(Windows NT 6.2; WOW64; rv:31.0)Gecko / 20100101 Firefox / 31.0 接受:text / html,application / xhtml + xml,application / xml; q = 0.9,* /*;q=0.8 接受語言:en-US,en; q = 0.5 '''Cookie:wp-settings-time-1 = 1406093286; wp-settings-time-2 = 1405988284''' DNT:1 鏈接:keep-alive 主持人:blog.owasp.org 

已自動設置cookie CAKEPHP,它提供有關正在使用的框架的信息。常見cookie名稱列表顯示在Cpmmon應用程序標識符部分中。可是,能夠更改cookie的名稱。web

 

HTML源代碼

此技術基於在HTML頁面源代碼中查找某些模式。一般,人們能夠找到許多信息,這些信息能夠幫助測試人員識別特定的Web應用程序。其中一個常見標記是直接致使應用程序泄露的HTML註釋。更常見的是,能夠找到某些特定於應用程序的路徑,即指向特定於應用程序的css和/或js文件夾的連接。最後,特定的腳本變量也可能指向某個應用程序。正則表達式

從下面的元標記中,能夠輕鬆瞭解網站及其版本使用的應用程序。註釋,特定路徑和腳本變量均可以幫助攻擊者快速肯定應用程序的實例。數據庫

<meta name =「generator」content =「WordPress 3.9.2」/> 

更頻繁地,此類信息放在<head> </ head>標記之間,<meta>標記中或頁面末尾。然而,建議檢查整個文檔,由於它可用於其餘目的,例如檢查其餘有用的註釋和隱藏字段。瀏覽器

特定文件和文件夾

除了從HTML源收集的信息以外,還有另外一種方法能夠極大地幫助攻擊者高精度地肯定應用程序。每一個應用程序在服務器上都有本身的特定文件和文件夾結構。有人指出,人們能夠從HTML頁面源看到特定的路徑,但有時它們沒有明確地顯示在那裏,仍然駐留在服務器上。安全

爲了揭示它們,使用了稱爲dirbusting的技術。Dirbusting強制目標具備可預測的文件夾和文件名,並監視HTTP響應以計算服務器內容。此信息既可用於查找默認文件,也可用於攻擊它們,也可用於對Web應用程序進行指紋識別。Dirbusting能夠經過多種方式完成,下面的示例顯示了藉助於Burp Suite的已定義列表和入侵者功能,對WordPress驅動的目標進行了成功的dirbusting攻擊。ruby

Wordpress dirbusting.png

咱們能夠看到,對於一些特定於WordPress的文件夾(例如,/ wp-includes /,/ wp-admin /和/ wp-content /),HTTP響應是403(禁止),302(找到,重定向到wp-login .php)和200(OK)。這是一個很好的指標,目標是WordPress驅動的。一樣能夠dirbust不一樣的應用程序插件文件夾及其版本。在下面的屏幕截圖中,能夠看到Drupal插件的典型CHANGELOG文件,該文件提供有關正在使用的應用程序的信息,並公開了易受攻擊的插件版本。

Drupal botcha disclosure.png

提示:在開始dirbusting以前,建議先檢查robots.txt文件。有時也能夠在那裏找到特定於應用程序的文件夾和其餘敏感信息。下面的屏幕截圖顯示了此類robots.txt文件的示例。

機器人-INFO-disclosure.png

每一個特定應用程序的特定文件和文件夾都不一樣。建議在滲透測試期間安裝相應的應用程序,以便更好地瞭解所呈現的基礎結構以及服務器上可能留下的文件。可是,已經存在幾個好的文件列表,一個很好的例子是可預測文件/文件夾的FuzzDB單詞列表(http://code.google.com/p/fuzzdb/)。

通用應用程序標識符

餅乾

亞歷克 phpbb3_
WordPress的 WP-設置
1C-的Bitrix BITRIX_
AMPcms AMP
Django CMS Django的
DotNetNuke的 DotNetNukeAnonymous
E107 e107_tz
EPiServer EPiTrace,EPiServer
塗鴉CMS graffitibot
Hotaru CMS hotaru_mobile
ImpressCMS ICMSession
編號Indico MAKACSESSION
InstantCMS InstantCMS [LOGDATE]
Kentico CMS CMSPreferredCulture
鏌鋣 SN4 [12symb]
TYPO3 fe_typo_user
Dynamicweb Dynamicweb
輕子 LEP [some_numeric_value] +的sessionid
維克斯 域名= .wix.com
VIVVO VivvoSessionId

 

HTML源代碼

應用 關鍵詞
WordPress的 <meta name =「generator」content =「WordPress 3.9.2」/>
亞歷克 <body id =「phpbb」
Mediawiki的 <meta name =「generator」content =「MediaWiki 1.21.9」/>
的Joomla <meta name =「generator」content =「Joomla! - 開源內容管理」/>
Drupal的 <meta name =「Generator」content =「Drupal 7(http://drupal.org)」/>
DotNetNuke的 DNN平臺 - http://www.dnnsoftware.com

更多信息https://www.owasp.org/index.php/Web-metadata

工具

下面列出了通常和衆所周知的工具。還有許多其餘實用程序,以及基於框架的指紋識別工具。

 

WhatWeb

網站:http : //www.morningstarsecurity.com/research/whatweb
目前市場上最好的指紋識別工具之一。包含在默認的Kali Linux版本中。語言:用於指紋識別的Ruby匹配用於:

  • 文本字符串(區分大小寫)
  • 經常使用表達
  • Google Hack數據庫查詢(有限的關鍵字集)
  • MD5哈希
  • URL識別
  • HTML標記模式
  • 用於被動和激進操做的自定義ruby代碼


示例輸出顯示在下面的屏幕截圖中:

Whatweb-sample.png

 

BlindElephant

網站:https ://community.qualys.com/community/blindelephant
這個偉大的工具基於靜態文件校驗和的版本差別原則,從而提供很是高質量的指紋識別。語言:Python

成功指紋的示例輸出:

pentester $ python BlindElephant.py http:// my_target drupal Loaded /Library/Python/2.7/site-packages/blindelephant/dbs/drupal.pkl包含145個版本,478個區分路徑和434個版本組。 在http:// my_target 點擊drupal版本啓動BlindElephant指紋點擊http://my_target/CHANGELOG.txt 文件產生不匹配。錯誤:檢索到的文件與已知指紋不匹配。527b085a3717bd691d47713dff74acf4 點擊http://my_target/INSTALL.txt 文件沒法匹配。錯誤:檢索到的文件與已知指紋不匹配。14dfc133e4101be6f0ef5c64566da4a4 點擊http://my_target/misc/drupal.js 基於結果的可能版本 :7.12,7.13,7.14點擊http://my_target/MAINTAINERS.txt 文件產生不匹配。錯誤:檢索到的文件與已知指紋不匹配。36b740941a19912f3fdbfcca7caa08ca 點擊http://my_target/themes/garland/style.css 基於結果的可能版本:7.2,7.3,7.4,7.5,7.6,7.7,7.8,7.9,7.10,7.11,7.12,7.13,7.14 ... 指紋識別結果: 7.14 最佳猜想:7.14 

 

Wappalyzer

網站:http: 
//wappalyzer.com Wapplyzer是一款Firefox Chrome插件。它僅適用於正則表達式匹配,除了要在瀏覽器上加載的頁面以外不須要任何其餘內容。它徹底在瀏覽器級別工做,並以圖標的形式給出結果。雖然有時會出現誤報,但在瀏覽頁面後當即使用哪些技術構建目標網站的概念很是方便。


插件的示例輸出顯示在下面的屏幕截圖中。

OWASP-wappalyzer.png

 

參考

白皮書

 

整治

通常建議是使用上述幾種工具並檢查日誌,以更好地瞭解攻擊者確切地幫助披露Web框架的內容。經過在更改隱藏框架軌道後執行屢次掃描,能夠實現更高級別的安全性並確保自動掃描沒法檢測到框架。如下是框架標記位置和一些其餘有趣方法的一些具體建議。

 

HTTP標頭

檢查配置並禁用或混淆全部披露技術使用信息的HTTP標頭。這是一篇關於使用Netscaler進行HTTP-header混淆的有趣文章:http: //grahamhosking.blogspot.ru/2013/07/obfuscating-http-header-using-netscaler.html

 

餅乾

建議經過更改相應的配置文件來更改cookie名稱。

 

HTML源代碼

手動檢查HTML代碼的內容並刪除明確指向框架的全部內容。

通常準則:

  • 確保沒有透露框架的可視標記
  • 刪除任何沒必要要的評論(版權,錯誤信息,特定框架評論)
  • 刪除META和發電機標籤
  • 使用公司本身的css或js文件,不要將它們存儲在特定於框架的文件夾中
  • 若是必須使用默認腳本,請不要在頁面上使用默認腳本或對其進行模糊處理。

 

特定文件和文件夾

通常準則:

  • 刪除服務器上任何沒必要要或未使用的文件。這意味着文本文件也公開了有關版本和安裝的信息。
  • 限制對其餘文件的訪問,以便在從外部訪問時實現404響應。這能夠經過修改htaccess文件並在那裏添加RewriteCond或RewriteRule來完成。下面介紹兩個常見WordPress文件夾的此類限制的示例。
RewriteCond%{REQUEST_URI} /wp-login\.php$ [OR] RewriteCond%{REQUEST_URI} / wp-admin / $ RewriteRule $ / http:// your_website [R = 404,L] 


可是,這些並非限制訪問的惟一方法。爲了使該過程自動化,存在某些特定於框架的插件。WordPress的一個例子是StealthLogin(http://wordpress.org/plugins/stealth-login-page)。

 

其餘方法

通常準則:

  • 校驗和管理這種方法的目的是擊敗基於校驗和的掃描儀,而不是讓它們經過哈希來公開文件。一般,校驗和管理有兩種方法:
    • 更改這些文件的放置位置(即將它們移動到另外一個文件夾,或重命名現有文件夾)
    • 修改內容 - 即便稍微修改也會產生徹底不一樣的哈希值,所以在文件末尾添加單個字節不該該是一個大問題。
  • 控制混亂

    一個有趣而有效的方法,涉及從其餘框架添加虛假文件和文件夾,以欺騙掃描儀和混淆攻擊者。但要當心不要覆蓋現有的文件和文件夾,並打破當前的框架!

相關文章
相關標籤/搜索