iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
自我挑戰組

從零開始:資安滲透初探系列 第 15

14-1: 資安滲透初探: 網站應用滲透測試

  • 分享至 

  • xImage
  •  

網站應用滲透測試是一個比較廣的領域,預計會分成3個部分來進行分享

網站應用程式滲透測試是一個非常重要且龐大的主題。網站滲透測試的目標是發現網站應用程式中的漏洞和錯誤,因為網站是公開暴露在互聯網上的,這意味著任何人都可以訪問並潛在地攻擊它。

為什麼網站滲透測試如此重要?

  1. 網站的可訪問性:任何人只要知道網站的域名或IP地址,就可以訪問這個網站。因此,攻擊者不僅可以瀏覽網站,還可以嘗試執行各種攻擊,比如代碼注入、暴力破解、提取數據庫資料,甚至修改網站的代碼。
  2. 代碼注入:這是一種常見的攻擊方式,其中攻擊者會在用戶輸入欄位中注入代碼,例如SQL查詢或JavaScript代碼。如果網站的代碼過濾不當,這些注入的代碼將被執行,可能導致數據洩漏或網站被劫持。
  3. SQL注入:這是一種危險的攻擊方式,攻擊者利用SQL查詢語法,直接與網站的數據庫進行交互。如果網站未能正確過濾用戶輸入,攻擊者可能獲取整個數據庫中的所有資料,包括用戶名和密碼。
  4. 跨站腳本攻擊 (XSS):攻擊者注入惡意JavaScript代碼,該代碼會在其他用戶訪問網站時執行。這可能導致用戶資料被竊取或用戶被重定向到惡意網站。
  5. 伺服器攻擊:攻擊者可能通過網站的用戶輸入欄位來執行伺服器上的命令,如果網站未能正確過濾輸入,這些命令將在伺服器上執行,可能導致伺服器被完全控制。
  6. 漏洞賞金計劃:許多網站會推出漏洞賞金計劃,鼓勵安全研究員發現並報告網站中的漏洞,並為此支付豐厚的報酬。

攻擊類型簡介:

  • 代碼注入攻擊:攻擊者試圖在用戶輸入欄位中注入HTML、JavaScript或SQL代碼,並希望這些代碼在未經過濾的情況下被執行。
  • 暴力破解攻擊:攻擊者通過反覆嘗試大量的密碼,試圖猜中目標用戶的密碼。
  • XSS攻擊:攻擊者在網站的用戶輸入欄位中插入惡意JavaScript代碼,該代碼將在其他用戶訪問網站時被執行。

這些攻擊都是由於網站代碼未能正確過濾用戶輸入而產生的,這也是為什麼網站滲透測試如此重要的原因。

HTTP請求與回應的基本概念

  • HTTP請求 (HTTP Request):
    當我們想要從網站獲取某個網頁時,我們會向該網站發送HTTP請求。這個請求包含了一些重要的欄位,例如:
    • Host: 指定我們要訪問的網站域名,有時也會包含端口號。
    • User-Agent: 用來識別連接到伺服器的客戶端,通常識別的是瀏覽器。
    • Cookies: 雖然這裡的圖片沒有顯示,但Cookies是客戶端與伺服器之間交換的值,用於保存有關特定用戶會話的數據和信息。
    • Authorization: 這個欄位通常用於身份驗證,當我們需要發送用戶名和密碼來訪問某個網頁時,這個欄位會起作用。
  • HTTP回應 (HTTP Response):
    當網站接收到我們的請求後,會返回HTTP回應。這個回應也包含了一些重要的欄位,例如:
    • 狀態碼 (Status Code): 回應的第一行通常會包含狀態碼,例如我們經常看到的404錯誤就表示該頁面不存在。而200狀態碼則表示頁面存在並成功加載。
    • Set-Cookie: 如果定義了這個欄位,伺服器會向客戶端設置Cookie的值,這些值可以用來識別客戶端並存儲客戶端的數據。
    • Cache-Control: 這個欄位指示回應內容是否應該被存儲在客戶端的瀏覽器中。
    • Content-Length: 指示回應內容的大小,以字節為單位。

在這些欄位之下,我們可以看到HTML標籤,這是我們請求的網頁的源代碼。這些代碼將會在瀏覽器中被渲染,最終展示我們所請求的網頁。

小結

了解HTTP請求和回應是進行網站滲透測試的基礎。掌握這些基本概念後,我們便可以開始進行對網站的攻擊測試。

1. 為何需要進行資訊收集與枚舉?

在網站滲透測試中,資訊收集與枚舉是至關重要的步驟。透過收集網站的技術細節、結構以及潛在的漏洞,我們可以更有效地制定攻擊策略。例如,了解網站使用的技術堆棧可以幫助我們選擇合適的攻擊工具,而發現網站上的隱藏目錄則可以讓我們找到可能存在的未公開功能或敏感信息。

2. 使用 Dirb 工具發現網站子目錄

Dirb 是一個預裝在 Kali Linux 上的工具,用於掃描網站並發現其子目錄。透過對網站進行自動化掃描,Dirb 可以幫助我們找到網站的隱藏頁面、文件夾或其他重要目錄。

使用範例:

  1. 打開終端,輸入以下指令來使用 Dirb 進行網站掃描:

    dirb <http://192.168.1.8>
    
    
  2. Dirb 會開始掃描該網站,並列出所有發現的子目錄。例如,它可能會發現 /index, /phpinfo, /test 等目錄。

  3. 您可以將這些結果一一嘗試,訪問這些目錄,看看是否有有趣的內容可以進一步分析。

3. 訪問發現的子目錄

Dirb 找到一些子目錄後,我們可以手動訪問這些目錄,以確定是否有有價值的信息。例如,您可以訪問 /robots.txt 來查看是否有一些網站所有者不希望被訪問的目錄。此外,目錄 /phpmyadmin 可能包含管理數據庫的介面,這些都是非常有價值的發現。

4. 狀態碼的理解

Dirb 的結果中,您會看到與子目錄對應的狀態碼,例如 200 表示頁面存在並且可以正常加載,404 表示頁面不存在。這些狀態碼可以幫助我們了解網站的當前狀況,並針對特定頁面進行下一步的操作。

5. 工具的進一步擴展

如果您對 Dirb 的結果不滿意,您還可以選擇使用自定義的字典來進行更深入的掃描,這樣可以增加發現隱藏目錄的機會。此外,您可以結合其他工具,如 TheHarvesterWhatWeb,來進行更全面的網站資訊收集。

接下來我們來進行 Burp Suite的配置,這是一款功能強大的網站滲透測試工具,能夠攔截和修改 HTTP 請求和回應,並幫助我們分析和攻擊網站。

1. Burp Suite 的介紹

Burp Suite 是一個被廣泛使用的網站安全測試工具。通過它,我們可以攔截、查看、修改並重放 HTTP/HTTPS 請求。這使得我們可以對網站進行深入的分析,找出潛在的漏洞。Burp Suite 作為代理伺服器工作,所有通過瀏覽器的流量都會首先經過 Burp Suite。

2. 配置 Burp Suite

以下是配置 Burp Suite 的步驟:

  1. 啟動 Burp Suite
    • 在 Kali Linux 上,前往 "Web Application Analysis" 目錄,啟動 Burp Suite。
    • 接受條款並選擇 "Temporary project",然後選擇 "Use Burp defaults" 來啟動 Burp Suite。
  2. 配置代理伺服器
    • 在 Burp Suite 的主介面中,點擊 "Proxy" 標籤,然後選擇 "Options"。
    • 確保在 "Proxy Listeners" 下綁定至埠 8080,並選擇 "Loopback only"。
  3. 配置 Firefox 瀏覽器
    • 打開 Firefox 瀏覽器,前往設置 (Setting) -> 一般 (General) -> 網絡設定 (Network Settings)。

    • 選擇 "手動代理配置" (Manual Proxy Configuration),在 HTTP Proxy 欄位中輸入 127.0.0.1,並設置埠號為 8080。選擇 "Use this proxy for all protocols",然後點擊 "OK"。

3. 設置 Burp Suite 的 HTTPS 憑證

由於 Firefox 不信任 Burp Suite,因此我們需要下載並安裝 Burp Suite 的 CA 憑證,讓 Firefox 信任它以便可以攔截 HTTPS 流量。

  1. 下載 CA 憑證
    • 在 Firefox 中,訪問 http://burp 網址,進入 Burp Suite 的首頁。
    • 點擊 "CA Certificate" 來下載憑證。
  2. 導入憑證
    • 返回 Firefox 設置,前往 "隱私與安全" (Privacy & Security) -> "Certificates" -> "View Certificates"。
    • 點擊 "Import" 導入剛下載的憑證,並選擇信任此 CA 來識別網站,然後點擊 "OK"。

4. 測試 Burp Suite 配置

完成上述配置後,我們可以通過 Burp Suite 攔截請求並查看請求的詳細信息:

  1. 測試攔截
    • 在 Burp Suite 的 "Proxy" -> "Intercept" 標籤下,確保攔截已打開 (橙色)。
    • 當你訪問一個網站時,例如 www.google.com,Burp Suite 會攔截並顯示該請求。
    • 你可以查看 HTTP 請求的詳細信息,如 Host, User-Agent, Cookie 等字段,並選擇手動轉發或修改後再轉發。
  2. 關閉攔截
    • 如果不希望每次都手動轉發請求,可以關閉攔截功能 (Intercept off),讓請求自動通過 Burp Suite。

Shellshock 漏洞簡介

Shellshock 是一個於2014年被發現的嚴重漏洞,它主要存在於 Bash 環境變量處理的問題中,並且對許多系統和應用程式構成威脅。儘管現在不太可能在現實中遇到這個漏洞,但了解它的工作原理仍然對理解網站安全至關重要。
Shellshock 漏洞影響了許多基於 Bash 的系統,包括 CGI 腳本、DHCP 客戶端和終端命令行。這個漏洞允許攻擊者通過環境變量注入惡意指令,使系統執行這些指令。

實驗環境設置

為了演示這個漏洞,我們下載了一個專門針對 Shellshock 的虛擬機映像,並將其運行在虛擬機器中。

  1. 下載並設置虛擬機
    https://pentesterlab.com/exercises/cve-2014-6271/attachments

    • 下載名為 Shellshock 的 ISO 文件,並在虛擬機中創建一個新的 Linux 虛擬機。
    • VM的IOS配置可以選"Other Linux 3.x"
  2. 配置 Burp Suite

    • 啟動 Burp Suite 並確保代理和攔截設置正確。
    • 設置 Firefox 以通過 Burp Suite 進行流量轉發。

利用 Shellshock 漏洞

我們首先嘗試訪問 Shellshock 虛擬機上的網頁,並發現了一個 CGI 腳本。

  1. 分析 HTTP 請求
    • 使用 Burp Suite 攔截並分析了對 CGI 腳本的請求。我們觀察到 User-Agent 欄位可以被利用來注入命令。
  2. 構建攻擊命令
    • 為了利用這個漏洞,我們需要構建一個包含空函數語法的命令。這個空函數語法允許我們在 User-Agent 欄位中注入命令並讓 Bash 執行它。
  3. 發送攻擊請求
    • 我們修改 User-Agent 欄位以包含我們的惡意命令,並使用 Burp Suite 重新發送請求。
    • 在攻擊之前,我們設置了一個 Netcat 監聽器來捕獲從目標機器返回的反向連接。

使用 Metasploit 自動化攻擊

除了手動攻擊外,我們還展示了如何使用 Metasploit 框架自動化攻擊。這可以通過使用 MetasploitShellshock 模組來實現:

  1. 選擇合適的模組
    • 我們在 Metasploit 中搜尋並使用了適合 Shellshock 的模組。
  2. 配置目標參數
    • 設置了目標的 IP 地址(RHOST)及TARGETURL。

  3. 執行攻擊
    • 我們運行攻擊並成功獲得了目標機器上的 Meterpreter 會話。

上一篇
13: 資安滲透初探: Python 編程項目 2 - 後門
下一篇
14-2: 資安滲透初探: 網站應用滲透測試
系列文
從零開始:資安滲透初探27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言