2019测试指南-web应用程序安全测试(二)指纹Web应用程序
2019獨角獸企業重金招聘Python工程師標準>>>
在陽光下沒有任何新東西,幾乎每一個人們??都可能想到開發的Web應用程序已經開發出來了。隨著世界各地積極開發和部署的大量免費和開源軟件項目,應用程序安全測試很可能面臨完全或部分依賴于這些眾所周知的應用程序的目標站點(例如Wordpress, phpBB,Mediawiki等)。了解正在測試的Web應用程序組件對測試過程有很大幫??助,并且還將大大減少測試期間所需的工作量。這些眾所周知的Web應用程序具有已知的HTML標頭,cookie和目錄結構,可以枚舉這些標識符以識別應用程序。
?
測試目標
確定Web應用程序和版本,以確定已知漏洞以及在測試期間使用的相應漏洞。
?
如何測試
餅干
識別Web應用程序的一種相對可靠的方法是使用特定于應用程序的cookie。
請考慮以下HTTP請求:
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的名稱。
?
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攻擊。
我們可以看到,對于一些特定于WordPress的文件夾(例如,/ wp-includes /,/ wp-admin /和/ wp-content /),HTTP響應是403(禁止),302(找到,重定向到wp-login .php)和200(OK)。這是一個很好的指標,目標是WordPress驅動的。同樣可以dirbust不同的應用程序插件文件夾及其版本。在下面的屏幕截圖中,可以看到Drupal插件的典型CHANGELOG文件,該文件提供有關正在使用的應用程序的信息,并公開了易受攻擊的插件版本。
提示:在開始dirbusting之前,建議先檢查robots.txt文件。有時也可以在那里找到特定于應用程序的文件夾和其他敏感信息。下面的屏幕截圖顯示了此類robots.txt文件的示例。
每個特定應用程序的特定文件和文件夾都不同。建議在滲透測試期間安裝相應的應用程序,以便更好地了解所呈現的基礎結構以及服務器上可能留下的文件。但是,已經存在幾個好的文件列表,一個很好的例子是可預測文件/文件夾的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代碼
示例輸出顯示在下面的屏幕截圖中:
?
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插件。它僅適用于正則表達式匹配,除了要在瀏覽器上加載的頁面之外不需要任何其他內容。它完全在瀏覽器級別工作,并以圖標的形式給出結果。雖然有時會出現誤報,但在瀏覽頁面后立即使用哪些技術構建目標網站的概念非常方便。
插件的示例輸出顯示在下面的屏幕截圖中。
?
參考
白皮書
- Saumil Shah:“HTTP指紋識別簡介” -?http://www.net-square.com/httprint_paper.html
- Anant Shrivastava:“Web應用程序指紋” -?http://anantshri.info/articles/web_app_finger_printing.html
?
整治
一般建議是使用上述幾種工具并檢查日志,以更好地了解攻擊者確切地幫助披露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文件夾的此類限制的示例。
但是,這些并不是限制訪問的唯一方法。為了使該過程自動化,存在某些特定于框架的插件。WordPress的一個例子是StealthLogin(http://wordpress.org/plugins/stealth-login-page)。
?
其他方法
一般準則:
- 校驗和管理這種方法的目的是擊敗基于校驗和的掃描儀,而不是讓它們通過哈希來公開文件。通常,校驗和管理有兩種方法:
- 更改這些文件的放置位置(即將它們移動到另一個文件夾,或重命名現有文件夾)
- 修改內容 - 即使稍微修改也會產生完全不同的哈希值,因此在文件末尾添加單個字節不應該是一個大問題。
- 控制混亂
一個有趣而有效的方法,涉及從其他框架添加虛假文件和文件夾,以欺騙掃描儀和混淆攻擊者。但要小心不要覆蓋現有的文件和文件夾,并打破當前的框架!
轉載于:https://my.oschina.net/u/3447023/blog/3017504
總結
以上是生活随笔為你收集整理的2019测试指南-web应用程序安全测试(二)指纹Web应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 再杀木马
- 下一篇: kaggle quora_我想以自己的方