iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
自我挑戰組

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

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

  • 分享至 

  • xImage
  •  

今天的分享是網站應用程式的最後一個部分,
主要的內容有:SQL Injection、CSRF Vulnerability、Hydra Bruteforce Attack、Burpsuite Intruder
一樣會用Metasploitable當靶機,使用其中的DVWA應用

SQL Injection

SQL Injection是一種涉及數據庫的網頁應用程式漏洞。攻擊者利用這一漏洞,可以將惡意的 SQL 查詢語句注入到網頁的輸入欄位中,從而對後端數據庫進行未經授權的訪問和操作。這種攻擊可能導致數據洩露、數據庫破壞,甚至系統接管。

1. SQL Injection 概念

  • SQL注入 是一種攻擊技術,攻擊者通過向網站的用戶輸入欄位注入惡意的SQL語句,使得網站後端的數據庫執行未經授權的操作,如訪問敏感數據。
  • 通常目標欄位包括用戶名、密碼或搜尋框等與數據庫交互的欄位。

2. 基本操作示例

  • 在DVWA應用中,輸入某個ID(如1),可以看到對應用戶的名字和姓氏顯示在頁面上。
  • 透過插入一些特殊字符(如單引號 '),可以嘗試觸發SQL錯誤。若出現SQL語法錯誤提示,即表示該應用存在SQL注入漏洞。
  • 猜測這個地方的SQL應該如下

3. 探測SQL注入漏洞

  • 通過嘗試輸入 1' AND 1=1 -- 可以驗證漏洞存在與否:
    • 1=1 是一個永遠為真的條件,代表著SQL語句的一部分能夠正常執行。
    • 1=2 則是一個永遠為假的條件,檢測應用程序如何響應不同的邏輯條件。

4. 確認漏洞的存在

  • 若發現漏洞存在,可以開始更進一步的攻擊。例如,可以利用 UNION 查詢來合併結果並提取數據庫中的更多信息。
  • 利用 ORDER BY 指令,測試數據庫中的列數,這有助於構建更複雜的注入攻擊。

5. 提取數據庫信息

  • 使用 UNION SELECT 並結合內建的數據庫函數如 database()user(),可以提取當前數據庫的名稱及其用戶信息。
  • 透過查詢 information_schema,可以獲得數據庫內的所有表格名稱、列名等。

6. 提取用戶憑據

  • 使用 CONCAT 函數將多個列的數據合併,並提取特定表(如users表)中的用戶名、密碼等信息。
  • 提取到的密碼通常是哈希值(如MD5),可以通過字典攻擊或在線工具嘗試破解這些哈希值。

小結

  • SQL注入是一個複雜而強大的攻擊技術,可能需要一些時間來掌握其語法和操作邏輯。
  • 隨著不斷的練習和對SQL語法的理解,您將能夠更熟練地運用這種技術來進行安全測試。

CSRF Vulnerability

1. CSRF 概述

  • CSRF(Cross-Site Request Forgery)是一種網頁應用程式漏洞,攻擊者利用此漏洞,誘使已驗證的用戶在他們不知情的情況下執行不希望的操作。這種攻擊的目標不是網頁伺服器,而是被認證的用戶,攻擊者可以利用受害者的已登錄狀態,發送惡意請求,從而執行未經授權的操作,如更改用戶資料、執行金融交易等。

2. CSRF 攻擊的前提條件

  • 攻擊的前提是受害者必須在該網站上處於已認證的會話中,同時必須訪問攻擊者製作的惡意URL連結。

3. 實際操作示例

  • 在教學中,透過DVWA(Damn Vulnerable Web Application)展示如何利用CSRF漏洞更改用戶密碼。
  • 我們通過右鍵檢視頁面源代碼,找到了受影響的表單元素(vulnerable_code_area),並將其複製到一個本地的HTML文件中。

4. 攻擊的細節

  • 修改HTML代碼以自動填入新的密碼(例如“hacked”),並將其儲存為一個HTML文件。

  • 這個HTML文件會被託管在本地的Apache2網頁伺服器上,並且攻擊者會將這個連結發送給受害者。

5. 實現攻擊

  • 當受害者訪問這個惡意連結並點擊按鈕時,頁面會模擬一個表單提交操作,並將新密碼提交至目標網站,從而更改受害者的密碼。

6. 增加攻擊的隱蔽性

  • 為了使惡意頁面與目標網站的原始頁面外觀一致,我們將目標網站的完整HTML代碼複製到惡意頁面,並加入目標網站的CSS文件,以達到視覺上的一致性,從而降低受害者的警覺性。

7. 攻擊的效果

  • 成功更改密碼後,可以再次嘗試登錄,驗證密碼是否已被更改。

8. 小結

  • CSRF 攻擊的關鍵在於引誘受害者點擊攻擊者提供的惡意連結,並在目標網站上執行未經授權的操作。
  • 通過這種方式,攻擊者可以不僅僅更改密碼,還可以更改用戶的其他敏感信息,如電子郵件地址、個人資料等。

Hydra Bruteforce Attack

在這段講解中,我們學習了如何使用Hydra工具來暴力破解DVWA中的登錄頁面。這種攻擊方式主要依賴於猜測目標的用戶名和密碼,通過對多個憑證組合進行嘗試,直到找到正確的組合為止。

Hydra暴力破解攻擊的步驟

  1. 確認目標頁面
    • 我們使用Burp Suite來觀察目標網站的登錄頁面,確認我們要針對的頁面是否使用POST請求來提交用戶名和密碼。
    • 在此案例中,目標頁面的路徑為/dvwa/login.php
  2. 構建Hydra命令
    • 我們使用hydra命令來進行攻擊,首先需要指定目標網站的IP地址和協議類型。在此範例中,我們使用http-form-post,因為我們的登錄表單是通過POST請求提交的。
    • 接著,我們指定了表單中用戶名和密碼的字段名稱。在DVWA中,這些字段分別為usernamepassword
    • 我們還需要指定一個特徵字符串,這個字符串出現在登錄失敗時的回應中。在本範例中,特徵字符串是Login failed,這樣Hydra就知道在收到這個字符串時,登錄嘗試失敗。
  3. 生成用戶名和密碼列表
    • 我們創建了usernames.txtpasswords.txt兩個文件,這些文件包含我們要用來測試的用戶名和密碼列表。在這些列表中,我們包含了可能的用戶名和密碼,例如adminpassword


  4. 執行Hydra命令
    • 我們最終的Hydra命令如下:

      hydra -L usernames.txt -P passwords.txt 192.168.1.9 http-form-post "/dvwa/login.php:username=^USER^&password=^PASS^&Login=submit:Login failed"
      
      
    • Hydra會嘗試所有在usernames.txtpasswords.txt中的組合,並且在找到正確的憑證後停止。

  5. 檢查結果
    • Hydra會告訴我們找到的正確用戶名和密碼。在這個例子中,正確的用戶名為admin,密碼為password

注意事項

  • 暴力破解的前提:Hydra暴力破解的成功與否取決於目標系統密碼的強度以及密碼列表的全面性。如果密碼複雜或不在列表中,攻擊將無法成功。
  • 法律和道德考量:使用Hydra或其他暴力破解工具僅應在合法授權的範圍內進行。例如,測試您自己的系統或在得到明確許可的情況下對客戶系統進行測試。

Burpsuite Intruder

接下來要分享如何使用Burp Suite的Intruder工具來進行暴力破解登錄頁面。這是一個比Hydra工具更直觀、更易用的方法,特別是當您不熟悉命令行語法時。以下是這個過程的總結和步驟:

使用Burp Suite的Intruder進行暴力破解的步驟

  1. 啟動Burp Suite並攔截請求
    • 首先,我們要進入目標網站的登錄頁面(在這裡是DVWA)。輸入隨意的用戶名和密碼,如testtest,然後登錄。
    • Burp Suite會自動攔截這個請求,您可以在Target選項卡中找到這個請求。
  2. 將請求發送到Intruder
    • 右鍵點擊這個請求,選擇Send to Intruder,然後轉到Intruder選項卡。
  3. 設置攻擊參數
    • 位置(Positions)
      • Positions標籤下,您將看到Burp Suite自動選擇的字段。我們只需要選擇用戶名和密碼字段。
      • 將攻擊類型設置為Cluster bomb,以便同時暴力破解用戶名和密碼。
      • 將要進行攻擊的位置(username與password)的值分別選取並按下Add。
  4. 設置有效負載(Payloads)
    • Payload Set 1:選擇用戶名列表。
      • Payload Type設置為Simple list,然後點擊Load按鈕加載usernames.txt文件。
    • Payload Set 2:選擇密碼列表。
      • Payload Type設置為Simple list,然後點擊Load按鈕加載passwords.txt文件。
  5. 設定(setting):
    • Redirections :改為Always
  6. 開始攻擊
    • 點擊Start attack開始攻擊。
    • 社區版的Burp Suite會提示這是一個受限版本,暴力破解速度會比較慢,點擊OK繼續。
  7. 分析結果
    • 在攻擊完成後,您可以通過查看響應的Length來識別正確的用戶名和密碼組合。正確的組合通常會與其他錯誤組合的響應長度不同。
    • 如果您發現結果中出現不同的響應長度,那麼很可能這就是正確的登錄憑據。

上一篇
14-2: 資安滲透初探: 網站應用滲透測試
下一篇
15: 資安滲透初探: Python 編程項目 3 - 登錄暴力破解、目錄發現
系列文
從零開始:資安滲透初探27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言