Web滲透測試(全流程)

Web滲透測試(全流程)

Posted by Web on 2019-11-29 13:30:00

1 信息收集

1.1 域名、IP、端口

  • 域名信息查詢:信息可用於後續滲透

  • IP信息查詢:確認域名對應IP,確認IP是否真實,確認通信是否正常

  • 端口信息查詢:NMap掃描,確認開放端口

如果不會用Nmap,看這裡:NMAP基礎教程(功能介紹,安裝,使用)

發現:一共開放兩個端口,80為web訪問端口,3389為windows遠程登陸端口,嘿嘿嘿,試一下

發現:是Windows Server 2003系統,OK,到此為止。

1.2 指紋識別

指紋?其實就是網站的信息。比如通過可以訪問的資源,如網站首頁,查看源代碼:

  • 看看是否存在文件遍歷的漏洞(如圖片路徑,再通過../遍歷文件)
  • 是否使用了存在漏洞的框架(如果沒有現成的就自己挖)

2 漏洞掃描

2.1 主機掃描

  • Nessus

如果不會用Nessus,看這裡:【工具-Nessus】Nessus的安裝與使用

經典主機漏掃工具,看看有沒有CVE漏洞:

2.2 Web掃描

  • AWVS(Acunetix | Website Security Scanner)掃描器

如果不會用AWVS,看這裡:【工具-AWVS】AWVS安裝與使用

PS:掃描器可能會對網站構成傷害,小心謹慎使用。

3 滲透測試

涉及工具的學習:

DVWA:【工具-BurpSuite】BurpSuite專業版安裝和使用

Burp Suite:【工具-DVWA】DVWA的安裝和使用

3.1 弱口令漏洞

  • 漏洞描述

目標網站管理入口(或數據庫等組件的外部連接)使用了容易被猜測的簡單字符口令、或者是默認系統賬號口令。

  • 滲透測試
  1. 如果不存在驗證碼,則直接使用相對應的弱口令字典使用burpsuite 進行爆破
  2. 如果存在驗證碼,則看驗證碼是否存在繞過、以及看驗證碼是否容易識別

示例:DVWA滲透系列一:Brute ForceDVWA滲透系列六:Insecure CAPTCHA

  • 風險評級:高風險
  • 安全建議
  1. 默認口令以及修改口令都應保證複雜度,比如:大小寫字母與數字或特殊字符的組合,口令長度不小於8位等
  2. 定期檢查和更換網站管理口令

3.2 文件下載(目錄瀏覽)漏洞

  • 漏洞描述

一些網站由於業務需求,可能提供文件查看或下載的功能,如果對用戶查看或下載的文件不做限制,則惡意用戶就能夠查看或下載任意的文件,可以是源代碼文件、敏感文件等。

  • 滲透測試
  1. 查找可能存在文件包含的漏洞點,比如js,css等頁面代碼路徑
  2. 看看有沒有文件上傳訪問的功能
  3. 採用../來測試能否誇目錄訪問文件

示例:DVWA滲透系列四:File Inclusion

  • 風險評級:高風險
  • 安全建議
  1. 採用白名單機制限制服務器目錄的訪問,以及可以訪問的文件類型(小心被繞過)
  2. 過濾【./】等特殊字符
  3. 採用文件流的訪問返回上傳文件(如用戶頭像),不要通過真實的網站路徑。

示例:tomcat,默認關閉路徑瀏覽的功能:


 
  1. <param-name>listings</param-name>

  2. <param-value>false</param-value>

3.3 任意文件上傳漏洞

  • 漏洞描述

目標網站允許用戶向網站直接上傳文件,但未對所上傳文件的類型和內容進行嚴格的過濾。

  • 滲透測試
  1. 收集網站信息,判斷使用的語言(PHP,ASP,JSP)
  2. 過濾規則繞過方法:文件上傳繞過技巧
  • 風險評級:高風險
  • 安全建議
  1. 對上傳文件做有效文件類型判斷,採用白名單控制的方法,開放只允許上傳的文件型式;
  2. 文件類型判斷,應對上傳文件的後綴、文件頭、圖片類的預覽圖等做檢測來判斷文件類型,同時注意重命名(Md5加密)上傳文件的文件名避免攻擊者利用WEB服務的缺陷構造畸形文件名實現攻擊目的;
  3. 禁止上傳目錄有執行權限;
  4. 使用隨機數改寫文件名和文件路徑,使得用戶不能輕易訪問自己上傳的文件。

3.4 命令注入漏洞

  • 漏洞描述

目標網站未對用戶輸入的字符進行特殊字符過濾或合法性校驗,允許用戶輸入特殊語句,導致各種調用系統命令的web應用,會被攻擊者通過命令拼接、繞過黑名單等方式,在服務端運行惡意的系統命令。

  • 滲透測試

示例:DVWA滲透系列二:Command Injection

  • 風險評級:高風險
  • 安全建議
  1. 拒絕使用拼接語句的方式進行參數傳遞;
  2. 盡量使用白名單的方式(首選方式);
  3. 過濾危險方法、特殊字符,如:【|】【&】【;】【'】【"】等

3.5 SQL注入漏洞

  • 漏洞描述

目標網站未對用戶輸入的字符進行特殊字符過濾或合法性校驗,允許用戶輸入特殊語句查詢後台數據庫相關信息

  • 滲透測試
  1. 手動測試,判斷是否存在SQL注入,判斷是字符型還是數字型,是否需要盲注
  2. 工具測試,使用sqlmap等工具進行輔助測試

示例:DVWA滲透系列七:SQL InjectionDVWA滲透系列八:SQL Injection(Blind)

  • 風險評級:高風險
  • 安全建議
  1. 防範SQL注入攻擊的最佳方式就是將查詢的邏輯與其數據分隔,如Java的預處理,PHP的PDO
  2. 拒絕使用拼接SQL的方式

3.6 跨站腳本漏洞

  • 漏洞描述

當應用程序的網頁中包含不受信任的、未經恰當驗證或轉義的數據時,或者使用可以創建HTML或JavaScript 的瀏覽器API 更新現有的網頁時,就會出現XSS 缺陷。XSS 讓攻擊者能夠在受害者的瀏覽器中執行腳本,並劫持用戶會話、破壞網站或將用戶重定向到惡意站點。

三種XSS漏洞:

  1. 存儲型:用戶輸入的信息被持久化,並能夠在頁面顯示的功能,都可能存在存儲型XSS,例如用戶留言、個人信息修改等。
  2. 反射型:URL參數需要在頁面顯示的功能都可能存在反射型跨站腳本攻擊,例如站內搜索、查詢功能。
  3. DOM型:涉及DOM對象的頁面程序,包括:document.URL、document.location、document.referrer、window.location等
  • 滲透測試

示例:

  1. 存儲型:DVWA滲透系列十二:XSS(Stored)
  2. 反射型:DVWA滲透系列十一:XSS(Reflect)
  3. DOM型:DVWA滲透系列十:XSS(DOM)
  • 風險評級:高風險
  • 安全建議
  1. 不信任用戶提交的任何內容,對用戶輸入的內容,在後台都需要進行長度檢查,並且對【<】【>】【"】【'】【&】等字符做過濾
  2. 任何內容返回到頁面顯示之前都必須加以html編碼,即將【<】【>】【"】【'】【&】進行轉義。

3.7 跨站請求偽造漏洞

  • 漏洞描述

CSRF,全稱為Cross-Site Request Forgery,跨站請求偽造,是一種網絡攻擊方式,它可以在用戶毫不知情的情況下,以用戶的名義偽造請求發送給被攻擊站點,從而在未授權的情況下進行權限保護內的操作,如修改密碼,轉賬等。

  • 滲透測試

示例:DVWA滲透系列三:CSRF

  • 風險評級:中風險(如果相關業務極其重要,則為高風險)
  • 安全建議
  1. 使用一次性令牌:用戶登錄後產生隨機token並賦值給頁面中的某個Hidden標籤,提交表單時候,同時提交這個Hidden標籤並驗證,驗證後重新產生新的token,並賦值給hidden標籤;
  2. 適當場景添加驗證碼輸入:每次的用戶提交都需要用戶在表單中填寫一個圖片上的隨機字符串;
  3. 請求頭Referer效驗,url請求是否前部匹配Http(s)://ServerHost
  4. 關鍵信息輸入確認提交信息的用戶身份是否合法,比如修改密碼一定要提供原密碼輸入
  5. 用戶自身可以通過在瀏覽其它站點前登出站點或者在瀏覽器會話結束後清理瀏覽器的cookie;

3.8 內部後台地址暴露

  • 漏洞描述

一些僅被內部訪問的地址,對外部暴露了,如:管理員登陸頁面;系統監控頁面;API接口描述頁面等,這些會導致信息洩露,後台登陸等地址還可能被爆破。

  • 滲透測試
  1. 通過常用的地址進行探測,如login.html,manager.html,api.html等;
  2. 可以藉用burpsuite和常規頁面地址字典,進行掃描探測
  • 風險評級:中風險
  • 安全建議
  1. 禁止外網訪問後台地址;
  2. 使用非常規路徑(如對md5加密)。

3.9 信息洩露漏洞

  • 漏洞描述
  1. 備份信息洩露:目標網站未及時刪除編輯器或者人員在編輯文件時,產生的臨時文件,或者相關備份信息未及時刪除導致信息洩露。
  2. 測試頁面信息洩露:測試界面未及時刪除,導致測試界面暴露,被他人訪問。
  3. 源碼信息洩露:目標網站文件訪問控制設置不當,WEB服務器開啟源碼下載功能,允許用戶訪問網站源碼。
  4. 錯誤信息洩露:目標網站WEB程序和服務器未屏蔽錯誤信息回顯,頁面含有CGI處理錯誤的代碼級別的詳細信息,例如SQL語句執行錯誤原因,PHP的錯誤行數等。
  5. 接口信息洩露:目標網站接口訪問控制不嚴,導致網站內部敏感信息洩露。
  • 滲透測試
  1. 備份信息洩露、測試頁面信息洩露、源碼信息洩露,測試方法:使用字典,爆破相關目錄,看是否存在相關敏感文件

  2. 錯誤信息洩露,測試方法:發送畸形的數據報文、非正常的報文進行探測,看是否對錯誤參數處理妥當。

  3. 接口信息洩露漏洞,測試方法:使用爬蟲或者掃描器爬取獲取接口相關信息,看目標網站對接口權限是否合理

  • 風險評級:一般為中風險,如果源碼大量洩漏或大量客戶敏感信息洩露。
  • 安全建議
  1. 備份信息洩露漏洞:刪除相關備份信息,做好權限控制
  2. 測試頁面信息洩露漏洞:刪除相關測試界面,做好權限控制
  3. 源碼信息洩露漏洞:做好權限控制
  4. 錯誤信息洩露漏洞:將錯誤信息對用戶透明化,在CGI處理錯誤後可以返回友好的提示語以及返回碼。但是不可以提示用戶出錯的代碼級別的詳細原因
  5. 接口信息洩露漏洞:對接口訪問權限嚴格控制

3.10 失效的身份認證

  • 漏洞描述

通常,通過錯誤使用應用程序的身份認證和會話管理功能,攻擊者能夠破譯密碼、密鑰或會話令牌, 或者利用其它開發缺陷來暫時性或永久性冒充其他用戶的身份。

  • 滲透測試
  1. 在登陸前後觀察,前端提交信息中,隨機變化的數據,總有與當前已登陸用戶進行綁定的會話唯一標識,常見如cookie
  2. 一般現在網站沒有那種簡單可破解的標識,但是如果是跨站認證,單點登錄場景中,可能為了開發方便而簡化了身份認證

示例:DVWA滲透系列九:Weak Session IDs

  • 風險評級:高風險
  • 安全建議
  1. 使用強身份識別,不使用簡單弱加密方式進行身份識別;
  2. 服務器端使用安全的會話管理器,在登錄後生成高度複雜的新隨機會話ID。會話ID不能在URL中,可以安全地存儲,在登出、閒置超時後使其失效。

3.11 失效的訪問控制

  • 漏洞描述

未對通過身份驗證的用戶實施恰當的訪問控制。攻擊者可以利用這些缺陷訪問未經授權的功能或數據,例如:訪問其他用戶的帳戶、查看敏感文件、修改其他用戶的數據、更改訪問權限等。

  • 滲透測試
  1. 登入後,通過burpsuite 抓取相關url 鏈接,獲取到url 鏈接之後,在另一個瀏覽器打開相關鏈接,看能夠通過另一個未登入的瀏覽器直接訪問該功能點。
  2. 使用A用戶登陸,然後在另一個瀏覽器使用B用戶登陸,使用B訪問A獨有的功能,看能否訪問。
  • 風險評級:高風險
  • 安全建議
  1. 除公有資源外,默認情況下拒絕訪問非本人所有的私有資源;
  2. 對API和控制器的訪問進行速率限制,以最大限度地降低自動化攻擊工具的危害;
  3. 當用戶註銷後,服務器上的Cookie,JWT等令牌應失效;
  4. 對每一個業務請求,都進行權限校驗。

3.12 安全配置錯誤

  • 漏洞描述

應用程序缺少適當的安全加固,或者云服務的權限配置錯誤。

  1. 應用程序啟用或安裝了不必要的功能(例如:不必要的端口、服務、網頁、帳戶或權限)。
  2. 默認帳戶的密碼仍然可用且沒有更改。
  3. 錯誤處理機制向用戶披露堆棧跟踪或其他大量錯誤信息。
  4. 對於更新的系統,禁用或不安全地配置最新的安全功能。
  5. 應用程序服務器、應用程序框架(如:Struts、Spring、ASP.NET)、庫文件、數據庫等沒有進行相關安全配置。
  • 滲透測試
  1. 先對應用指紋等進行信息蒐集,然後針對蒐集的信息,看相關應用默認配置是否有更改,是否有加固過;端口開放情況,是否開放了多餘的端口;
  • 風險評級:中風險
  • 安全建議

搭建最小化平台,該平台不包含任何不必要的功能、組件、文檔和示例。移除或不安裝不適用的功能和框架。在所有環境中按照標準的加固流程進行正確安全配置。

3.13 使用含有已知漏洞的組件

  • 漏洞描述

使用了不再支持或者過時的組件。這包括:OS、Web服務器、應用程序服務器、數據庫管理系統(DBMS)、應用程序、API和所有的組件、運行環境和庫。

  • 滲透測試
  1. 根據前期信息蒐集的信息,查看相關組件的版本,看是否使用了不在支持或者過時的組件。一般來說,信息蒐集,可通過http返回頭、相關錯誤信息、應用指紋、端口探測(Nmap)等手段蒐集。
  2. Nmap等工具也可以用於獲取操作系統版本信息
  3. 通過CVE,CNVD等平台可以獲取當前組件版本是否存在漏洞
  • 風險評級:按照存在漏洞的組件的安全風險值判定當前風險。
  • 安全建議
  1. 移除不使用的依賴、不需要的功能、組件、文件和文檔;
  2. 僅從官方渠道安全的獲取組件(盡量保證是最新版本),並使用簽名機制來降低組件被篡改或加入惡意漏洞的風險;
  3. 監控那些不再維護或者不發布安全補丁的庫和組件。如果不能打補丁,可以考慮部署虛擬補丁來監控、檢測或保護。

3.14 業務邏輯漏洞

見:Web應用常見業務邏輯漏洞

————————————————
版权声明:本文为CSDN博主「qqchaozai」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qqchaozai/article/details/102515046