iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
Security

腳本小子的滲透測試學習筆記系列 第 26

第26天:CEH第十三章入侵網頁伺服器

  • 分享至 

  • xImage
  •  

網頁伺服器操作 (Web Server Operations)

什麼是 Web Server?

Web 伺服器是一種電腦系統,用於儲存、處理和透過 HTTP 協議將網頁發送給全球客戶端。一般情況下,客戶端會透過 HTTP 請求來與 Web 伺服器進行通訊。

當客戶端需要存取任何資源(如網頁、照片、影片等)時,瀏覽器會生成一個 HTTP 請求並傳送到 Web 伺服器。根據請求內容,Web 伺服器從資料存儲(Data Storage)或應用程式伺服器(Application Server)中收集所需的資訊,並回應給客戶端。如果伺服器無法找到請求的資訊,則會生成錯誤訊息。

Web Server 的組成元件 (Components of a Web Server):

  1. Document Root (文件根目錄)
    • 存儲與網域名稱相關的 HTML 檔案,這些檔案會被伺服器回應給客戶端。
  2. Server Root (伺服器根目錄)
    • 存放伺服器的配置檔案、執行檔案及日誌檔案。
  3. Virtual Document Tree (虛擬文件樹)
    • 提供將資料存儲在不同磁碟或目錄中的功能,當原始磁碟空間已滿時可進行擴展。
  4. Virtual Hosting (虛擬主機)
    • 支援多個網域或網站在同一台伺服器上運行。
  5. Web Proxy (網頁代理伺服器)
    • 充當客戶端與 Web 伺服器之間的中介,防止 IP 封鎖並保持匿名性。

Web Server 的典型操作 (Typical Web Server Operations):

  1. 靜態數據存取 (Static Data Access)
    • 當客戶端發送 HTTP 請求給 Web 伺服器時,若請求靜態資源(如 HTML、CSS 或圖像檔案),Web 伺服器會直接從靜態資料存儲(Static Data Store)中取得對應檔案,並回應給客戶端。
  2. 應用程式數據存取 (Application Data Access)
    • 當請求需要存取動態內容(如資料庫資料、用戶登入認證等),Web 伺服器會將請求轉發至應用程式伺服器(Application Server),由應用程式伺服器來執行後端邏輯並生成回應,再透過 Web 伺服器傳回客戶端。
  3. 錯誤處理 (Error Handling)
    • 當 Web 伺服器無法找到請求的資源時,會生成一個錯誤訊息(例如 404 錯誤)並回應給客戶端。

客戶端與伺服器的互動 (Client-Server Communication in Web Server Operations):

  • 客戶端向 Web 伺服器發送靜態數據請求,伺服器檢查並回應靜態數據。
  • 若請求為動態數據,Web 伺服器會將請求轉發至應用程式伺服器,由後端服務處理並回應給 Web 伺服器,最終再由 Web 伺服器傳送回應給客戶端。

Web 伺服器典型的客戶端與伺服器互動方式:

  1. 靜態數據請求直接從靜態數據存儲(Static Data Store)中取得。
  2. 動態數據請求會經過應用程式伺服器(Application Server)處理並回應。
  3. 最終結果透過 HTTP 回應傳送回客戶端。

Web Server Security Issues (Web 伺服器安全問題)

Web 伺服器面臨的威脅

  • 攻擊者通常會針對 軟體漏洞 (software vulnerabilities)配置錯誤 (configuration errors) 來攻擊 Web 伺服器。
  • 使用防火牆 (Firewall)、入侵偵測系統 (IDS) 等正確的網路安全措施可以有效抵禦網路及作業系統層級的攻擊 (Network and OS level attacks)。然而,由於 Web 伺服器可以透過網際網路從任何地方進行存取,因此使其更容易受到攻擊 (vulnerable)。

Web 伺服器攻擊的影響 (Impact of Web Server Attacks)

  1. 用戶帳號被入侵 (Compromise of user accounts)
    • 攻擊者可能取得 Web 伺服器中的用戶帳號資訊,進而進行未經授權的操作。
  2. 網站被篡改 (Website defacement)
    • 攻擊者可能修改或破壞網站頁面內容,改變外觀或加入惡意資訊。
  3. 從網站發起的次級攻擊 (Secondary attacks from the website)
    • 攻擊者利用被入侵的網站作為跳板,對其他目標發起次級攻擊。
  4. 獲取對其他應用或伺服器的 Root 存取權 (Root access to other applications or servers)
    • 若 Web 伺服器被攻破,攻擊者可能進一步取得伺服器中其他應用程式或資料庫的 Root 存取權限。
  5. 資料篡改與資料竊取 (Data tampering and data theft)
    • 攻擊者可能竄改或竊取 Web 伺服器中的機密資料。
  6. 公司名譽受損 (Reputational damage of the company)
    • 網站被入侵會造成公司形象受損,影響客戶信任度及商業合作。

Web 伺服器的安全層級模型 (Security Layer Stack for Web Server)

  1. Stack 1: Security (安全層)
    • 包含防火牆 (Firewall)、IPS/IDS 來保護網路和伺服器免受攻擊。
  2. Stack 2: Network (網路層)
    • 透過路由器 (Router) 和交換機 (Switch) 等設備來進行網路流量控制與管理。
  3. Stack 3: Operating System (作業系統層)
    • 維護作業系統的安全性,確保 Windows、Linux、macOS 等系統中沒有漏洞可供攻擊者利用。
  4. Stack 4: Database (資料庫層)
    • 確保資料庫系統如 Oracle、MySQL、MS SQL 的安全性,防止資料被未經授權的存取。
  5. Stack 5: Web Server (Web 伺服器層)
    • 確保 Apache、Microsoft IIS 等 Web 伺服器的正確配置及安全性。
  6. Stack 6: Third-party Components (第三方元件層)
    • 使用第三方元件(如開源軟體、商業軟體)時要特別注意其安全性。
  7. Stack 7: Custom Web Applications (自定義網頁應用程式層)
    • 確保自定義的網頁應用程式無安全漏洞,如商業邏輯錯誤 (Business Logic Flaws) 等。

為什麼 Web 伺服器容易被入侵? (Why are Web Servers Compromised?)

  1. 檔案及目錄權限設定不當 (Improper file and directory permissions)
    • 檔案與目錄權限設置不當可能允許未授權的使用者存取或修改重要檔案。
  2. 使用預設設定安裝伺服器 (Server installation with default settings)
    • 預設的伺服器設定通常包含已知的漏洞,若未修改容易被攻擊者利用。
  3. 啟用不必要的服務 (Enabling of unnecessary services)
    • 包括內容管理系統、遠端管理等,這些服務可能成為入侵的途徑。
  4. 缺乏合適的安全政策 (Lack of proper security policies, procedures, and maintenance)
    • 沒有完善的安全政策及維護措施可能導致漏洞未被及時修補,增加風險。
  5. 不當的身份驗證設定 (Improper authentication with external systems)
    • 與外部系統的身份驗證機制不當,可能允許攻擊者進行未授權的存取。
  6. 預設帳戶 (Default accounts)
    • 使用預設帳戶名稱及密碼,或是帳戶沒有密碼,容易被攻擊者破解。
  7. 不必要的預設、備份或範例檔案 (Unnecessary default, backup, or sample files)
    • 預設、備份或範例檔案可能包含敏感資訊,若未刪除容易洩漏系統配置資訊。
  8. Web 伺服器、作業系統及網路配置錯誤 (Misconfigurations in web server, operating systems, and networks)
    • 配置錯誤可能使得伺服器對外開放了不該開放的服務或功能。
  9. 伺服器軟體、作業系統及 Web 應用程式中的漏洞 (Bugs in server software, OS, and web applications)
    • 任何軟體漏洞都可能被攻擊者利用,進行進一步攻擊。
  10. SSL 憑證及加密設定錯誤 (Misconfigured SSL certificates and encryption settings)
    • 錯誤的 SSL 憑證配置可能使傳輸資料易受竊聽或篡改。
  11. 啟用或可存取的管理或偵錯功能 (Administrative or debugging functions that are enabled or accessible on web servers)
    • 啟用不必要的管理或偵錯功能,可能使得攻擊者取得系統內部資訊。
  12. 使用自簽憑證及預設憑證 (Use of self-signed certificates and default certificates)
    • 自簽或預設憑證的安全性較低,容易被偽造及未經授權使用。
  13. 不使用專用伺服器來提供 Web 服務 (Not using dedicated server for web services)
    • 若 Web 服務與其他應用或資料庫共用同一伺服器,容易受到來自其他應用程式的攻擊。
  14. 不必要的安全性衝突 (Security conflicts with business ease-of-use case)
    • 有時為了提升使用方便性而犧牲安全性,例如過於寬鬆的權限設置。

每個因素都是攻擊者可能利用的漏洞來源,Web 伺服器管理者應該針對這些常見問題進行檢查和修正,以減少伺服器被入侵的風險。


DNS 伺服器劫持 (DNS Server Hijacking)

  • 攻擊者 (Attacker):攻擊者入侵 DNS 伺服器並更改 DNS 設定,將所有指向目標 Web 伺服器的請求重定向至攻擊者的惡意伺服器。
  • 步驟說明:
    1. 入侵 DNS 伺服器並更改 DNS 設定 (Compromises DNS server and changes the DNS settings)
      • 攻擊者取得 DNS 伺服器的存取權限,並更改 DNS 設定,使指向特定合法網站的請求被重定向到攻擊者控制的惡意網站。
    2. 使用者發出請求至 DNS 伺服器 (Request is sent to DNS server)
      • 當使用者輸入合法網站的網址(例如:www.legitimate-site.com),請求首先被傳送至 DNS 伺服器。
    3. DNS 伺服器檢查並返回新的對應映射 (DNS server checks the respective DNS mapping for the requested domain name)
      • DNS 伺服器檢查請求的網域名稱,並根據被修改過的設定將請求重定向到攻擊者設定的 IP 位址。
    4. 將使用者重定向到惡意網站 (Redirects user request to the malicious website)
      • 攻擊者的惡意 DNS 設定會將使用者重定向至假的惡意網站,而非合法網站,使使用者可能無法察覺地輸入敏感資訊(如帳號密碼)。
  • 結果 (Outcome)
    • 使用者認為自己正連接到合法的網站,但實際上已被重定向到惡意網站 (Fake Site)。攻擊者藉此竊取使用者的敏感資料或執行其他惡意行為,例如釣魚攻擊或安裝惡意程式。

DNS 劫持的影響

  • 資料竊取 (Data Theft):攻擊者可以竊取使用者在惡意網站上輸入的所有敏感資訊。
  • 惡意軟體散播 (Malware Distribution):攻擊者可以透過假網站向使用者散播惡意軟體,進一步入侵其系統。
  • 身份盜用 (Identity Theft):攻擊者可以取得使用者的個人資訊,進行身份冒用的犯罪行為。

防範措施

  1. 強化 DNS 伺服器的安全設定:
    • 使用強密碼及多因素驗證 (MFA) 來防止未授權的存取。
    • 定期檢查並更新 DNS 伺服器的安全性補丁。
  2. 實施 DNSSEC (DNS Security Extensions):
    • 啟用 DNSSEC 為 DNS 資料提供數位簽章驗證,以防止資料被竄改。
  3. 使用安全的 DNS 備援系統:
    • 部署多個 DNS 伺服器,並進行分區隔離及權限管理,減少單一點失效 (Single Point of Failure)。
  4. 監控與日誌分析:
    • 定期檢查 DNS 設定是否被異常更改,並即時偵測和回應可能的攻擊行為。

這樣可以減少 DNS 伺服器被劫持的風險,保護使用者的資料安全。


DNS 放大攻擊 (DNS Amplification Attack) 詳解

DNS 放大攻擊是一種分散式阻斷服務 (DDoS) 攻擊,攻擊者透過利用 DNS 伺服器的遞迴查詢機制來達到流量放大的效果。以下分為兩部分說明:


第一部分:DNS 遞迴查詢 (Recursive DNS Method)

  1. 使用者請求 IP 位址 (User's PC requests IP address)
    • 使用者的 PC 向其主要 DNS 伺服器 (Primary DNS Server) 發送查詢請求,要求查詢目標網域(例如:certifiedhacker.com)的 IP 位址。
  2. 主要 DNS 伺服器無法解析 (Primary DNS Server cannot resolve)
    • 當主要 DNS 伺服器無法直接解析該網域名稱時,它會向上級 DNS 伺服器(例如:根伺服器 Root Server)發送查詢請求。
  3. 根伺服器轉向 (Root Server points to .com Namespace)
    • 根伺服器告訴主要 DNS 伺服器:請向 .com NameSpace 查詢該網域名稱的 IP 位址。
  4. 查詢 .com 網域名稱空間 (Query .com NameSpace)
    • 主要 DNS 伺服器接著查詢 .com 網域名稱空間,請求目標網域的 IP 位址。
  5. .com NameSpace 查詢指引 (NameSpace points to Primary DNS of target)
    • .com 網域名稱空間告訴主要 DNS 伺服器,目標網域的主 DNS 伺服器具有該網域的 IP 位址。
  6. 主要 DNS 伺服器取得目標網域 IP (Primary DNS Server of target)
    • 主要 DNS 伺服器向目標網域的 DNS 伺服器發送查詢請求,獲取該網域的 IP 位址。
  7. 返回 IP 位址 (Return IP address)
    • 最終,目標網域的主 DNS 伺服器將 IP 位址返回至主要 DNS 伺服器,主要 DNS 伺服器再將 IP 位址傳回給使用者。

這種流程稱為 遞迴 DNS 查詢 (Recursive DNS Method),通常是為了方便查詢網域名稱,但卻可能被攻擊者利用。


第二部分:DNS 放大攻擊的利用

  • 攻擊者利用被感染的電腦 (Botnet compromised PCs) 來發動攻擊:
    • 攻擊者入侵大量的電腦並將其變為殭屍電腦 (Zombies),然後這些殭屍電腦會向 DNS 伺服器發送查詢請求。
  • 利用 Spoofed IP 發送請求
    • 攻擊者使用偽造的 IP 位址(通常是受害者的 IP 位址)發送 DNS 查詢請求,所有的查詢結果都會回傳至受害者的 IP 位址。
  • DNS 伺服器無法辨別這些請求的真偽
    • 當 DNS 伺服器接收到大量來自偽造 IP 位址的查詢時,會將結果回傳至該 IP 位址,導致流量被放大並指向受害者的 IP。
  • 流量放大效應 (Amplification Effect)
    • 攻擊者使用小量的查詢請求,透過遞迴查詢放大回應流量,使得受害者的網路因為大量的回應而癱瘓。

這種攻擊模式會造成以下影響:

  1. 網路阻塞 (Network Congestion)
    • 受害者的網路被大量的回應流量淹沒,導致正常用戶無法連線。
  2. 系統資源耗盡 (System Resource Exhaustion)
    • 受害者的伺服器因為無法處理大量的 DNS 回應而癱瘓或崩潰。
  3. 服務中斷 (Service Outage)
    • 網路和服務的連通性受到嚴重影響,最終可能導致服務中斷。

防範措施

  1. 限制 DNS 遞迴查詢:
    • 關閉或限制 DNS 伺服器的遞迴查詢功能,只允許特定的 IP 或網段進行遞迴查詢。
  2. 配置防火牆或 IPS/IDS 系統:
    • 使用防火牆或入侵防禦系統過濾掉來自偽造 IP 位址的請求。
  3. 啟用 DNSSEC (DNS Security Extensions):
    • 確保 DNS 資料傳輸的安全性,防止資料被偽造。
  4. 頻率限制與查詢控制:
    • 設置 DNS 查詢的頻率限制,以防止同一 IP 位址過度查詢。

目錄遍歷攻擊 (Directory Traversal Attack) 詳解

目錄遍歷攻擊(Directory Traversal Attack)是一種網路攻擊技術,攻擊者利用特定的字串(例如:../dot-dot-slash),企圖繞過系統的目錄限制,訪問超出網頁伺服器根目錄以外的目錄,從而存取到系統中不允許訪問的檔案或敏感資訊。

攻擊原理:

  • 攻擊者透過在 URL 中插入 ../ 的方式(又稱「點點斜線」),嘗試向上回溯到更高層的目錄,突破網站的根目錄限制。
  • 例如:
    • 若攻擊者嘗試從網頁伺服器根目錄「/var/www/html」向上回溯到根目錄「/」,他們可以在 URL 中插入多個 ../,直到達到系統根目錄位置為止。

    • URL 範例:

      http://server.com/scripts/../..//Windows/System32/cmd.exe?/c+dir+c:\
      
    • 上述範例中,攻擊者試圖存取 Windows 系統目錄下的 cmd.exe 程式,並執行 dir 指令來列出 C 槽的目錄結構。

攻擊過程:

  1. 攻擊者輸入 URL 中包含「../」的路徑
    • 攻擊者構建一個惡意的 URL,插入多個 ../,以便跳出網頁伺服器根目錄,嘗試訪問其他系統檔案。
  2. 試驗與錯誤法 (Trial and Error Method)
    • 攻擊者會不斷測試不同的「點點斜線」數量和路徑,以試圖獲取目標系統中具有敏感資料的檔案或執行惡意指令。
  3. 存取敏感檔案或執行命令
    • 成功跳出根目錄限制後,攻擊者可以嘗試訪問系統中的敏感檔案(如密碼檔案 /etc/passwd),或執行系統指令(如列出目錄內容)。

防範措施:

  1. 正規化輸入路徑 (Input Path Normalization)
    • 使用正規化技術來解析並過濾 URL 中的路徑,確保「../」等字串無法被成功解析。
  2. 限制目錄存取權限 (Directory Access Restriction)
    • 將網站目錄權限設置為最小化,限制應用程式只能存取必要的目錄,避免外部使用者訪問到其他敏感目錄。
  3. 使用白名單 (Whitelist) 驗證
    • 對輸入的路徑進行白名單驗證,只允許訪問合法的路徑及檔案類型,不允許任何非法路徑。
  4. 配置伺服器保護機制
    • 在 Web 伺服器層面設置防火牆 (Firewall) 和入侵偵測系統 (IDS/IPS),及時攔截並阻止目錄遍歷攻擊。
  5. 檢查與移除路徑中惡意字元
    • 實施路徑檢查機制,檢查 URL 中是否存在「../」或其他可疑字元,並在執行前移除或替換這些字元。

攻擊結果:

若攻擊者成功利用目錄遍歷攻擊,他們可能會存取到以下類型的敏感檔案:

  • 系統設定檔案 (System Configuration Files)
  • 使用者帳號資訊 (User Account Information)
  • 網站伺服器設定檔案 (Web Server Configuration Files)
  • 應用程式源碼 (Application Source Code)
  • 安全性日誌檔案 (Security Log Files)

透過防範目錄遍歷攻擊,能有效減少系統暴露於攻擊者的風險,保護網站及系統的安全性。


網站篡改 (Website Defacement) 詳解

網站篡改(Website Defacement)是指攻擊者未經授權惡意篡改網站內容,改變網頁外觀或插入不當資訊的行為。此類攻擊通常會引入挑釁性、誤導性或具有冒犯性的資料,讓訪客看到與原本網站內容不同的訊息。

網站篡改的攻擊機制:

  1. 修改網頁外觀
    • 攻擊者利用未經授權的存取權限,插入惡意程式碼或替換原本的網站內容,進而改變網站的視覺呈現。
  2. 插入不當訊息或圖片
    • 網站被篡改後,頁面可能會出現挑釁性文字、政治宣傳、誤導性資訊、或令人反感的圖片及影片。
    • 範例如圖所示,攻擊者在網站上插入「You are OWNED!!!!!」、「HACKED! Hi Master, Your website is owned by US, Hackers!」等訊息,並將頁面內容替換成不當的宣傳資料。
  3. 暴露訪客於誤導性資訊
    • 被篡改的網站可能被用來傳播虛假消息或宣傳,意圖使訪客相信不實資訊,直到網站管理員發現並修復問題為止。
  4. 利用 SQL Injection 攻擊手段
    • 攻擊者通常會使用 SQL Injection(SQL 注入)等技術來入侵網站資料庫,以獲取未授權的訪問權限,從而更改或刪除資料庫中的內容,最終達到篡改網頁的目的。

網頁伺服器錯誤配置 (Web Server Misconfiguration)

伺服器錯誤配置是指在網頁基礎架構 (Web Infrastructure) 中的配置弱點,這些弱點會被攻擊者利用來進行各種攻擊,包括目錄遍歷 (Directory Traversal)、伺服器入侵 (Server Intrusion) 和資料竊取 (Data Theft)。

常見的 Web 伺服器錯誤配置 (Web Server Misconfiguration):

  1. 冗長的除錯/錯誤訊息 (Verbose Debug/Error Messages)
    • 過多的錯誤訊息可能洩漏伺服器和應用程式的詳細資訊,幫助攻擊者識別漏洞。
  2. 匿名或預設使用者名稱/密碼 (Anonymous or Default Users/Passwords)
    • 使用預設的管理員帳號和密碼讓攻擊者容易取得伺服器的管理權限,進而進行惡意操作。
  3. 範例配置和腳本檔案 (Sample Configuration and Script Files)
    • 未刪除的範例配置檔案或腳本檔案可能暴露伺服器資訊,讓攻擊者利用其進行攻擊。
  4. 遠端管理功能 (Remote Administration Functions)
    • 啟用遠端管理功能(如 RDP、SSH)且未加以保護,會讓攻擊者更容易遠端存取伺服器。
  5. 啟用不必要的服務 (Unnecessary Services Enabled)
    • 啟用過多不必要的服務會增加被攻擊的範圍,例如啟用 FTP 或 Telnet 服務,讓攻擊者有更多途徑進行攻擊。
  6. 錯誤配置或使用預設 SSL 憑證 (Misconfigured/Default SSL Certificates)
    • 使用預設或過時的 SSL 憑證會降低加密連線的安全性,讓攻擊者容易攔截或竄改資料。

Web 伺服器錯誤配置的範例 (Web Server Misconfiguration Examples):

  1. httpd.conf 檔案設定錯誤 (Apache Server)

    • 例如,Apache 伺服器中的 httpd.conf 設定檔案允許任何人檢視伺服器狀態頁面 (Server Status Page),該頁面會顯示伺服器的當前狀態以及正在處理的主機和請求資訊:
    <Location /server-status>
       SetHandler server-status
       </Location>
    
    • 這類錯誤配置會讓攻擊者查看到伺服器正在執行的程序和連線狀態,進而找到攻擊入口。
  2. php.ini 檔案設定錯誤 (PHP Server)

    • PHP 伺服器的 php.ini 配置檔案中設置過多的錯誤日誌和訊息會洩露太多的系統和程式資訊:
    display_error = On
    log_errors = On
    error_log = /var/log/php_errors.log
    ignore_repeated_errors = Off
    
    
    • 這種配置會生成冗長的錯誤訊息 (Verbose Error Messages),讓攻擊者輕易獲取系統錯誤的詳細資訊,進而對程式碼漏洞進行利用。

如何防止 Web 伺服器錯誤配置:

  1. 停用不必要的錯誤訊息顯示和日誌記錄
    • 僅保留必要的錯誤訊息,並限制顯示錯誤訊息的權限,避免將過多資訊曝露給使用者或攻擊者。
  2. 刪除預設帳號和密碼
    • 移除或修改伺服器中的預設使用者名稱和密碼,並使用複雜的密碼來強化安全性。
  3. 刪除或停用範例配置和腳本檔案
    • 移除所有預設或範例檔案,避免洩漏伺服器資訊給潛在攻擊者。
  4. 啟用必要的管理功能並加強其保護
    • 僅開放必須的遠端管理功能,如有需要,則使用防火牆 (Firewall) 或 VPN 來限制存取權限。
  5. 定期更新 SSL 憑證
    • 使用最新版本的 SSL 憑證,並確保其配置正確,避免使用過時或不安全的加密方式。
  6. 限制訪問伺服器狀態頁面和管理頁面
    • 使用 IP 或身分驗證來限制對狀態頁面和管理頁面的存取,僅允許被授權的使用者查看。

HTTP 回應分割攻擊 (HTTP Response-Splitting Attack)

什麼是 HTTP 回應分割攻擊?

HTTP 回應分割攻擊是一種透過在輸入欄位中插入 HTTP 標頭 (Header) 資料來操控伺服器回應的攻擊方式。這類攻擊會將伺服器回應分割成兩個或多個回應,並使攻擊者能夠控制第一個回應,通常是將使用者重定向到惡意網站,而其他回應則被瀏覽器忽略。

攻擊流程:

  1. 在輸入欄位中插入標頭資料
    • 攻擊者在 HTTP 請求中注入特殊字元(如 %0d%0a,代表換行字元),來引入新的標頭資訊。
    • 這些特殊字元會被解析成新的 HTTP 標頭,使伺服器產生多個回應。
  2. 控制第一個回應
    • 攻擊者可以控制第一個 HTTP 回應,使其包含 Location 標頭來重定向使用者至惡意網站,或利用 Set-Cookie 標頭來設定攻擊者控制的 Cookie。
    • 其餘被分割的回應將被瀏覽器視為不完整或無效的回應而被忽略。

攻擊範例說明:

  • 攻擊者將輸入值設置為 JasonTheHacker\r\nHTTP/1.1 200 OK\r\n,這會引入換行字元,讓伺服器產生兩個回應:
    • 第一個回應被操控以包含惡意的 Set-CookieLocation 標頭,並進行重定向或植入惡意 Cookie。
    • 第二個回應則是正常的 HTTP 回應,但由於分割的影響,瀏覽器無法解析而忽略這些回應。

攻擊範例代碼:

伺服器程式碼如下所示:

String author = request.getParameter(AUTHOR_PARAM);
...
Cookie cookie = new Cookie("author", author);
cookie.setMaxAge(cookieExpiration);
response.addCookie(cookie);
  • 在這段程式碼中,request.getParameter() 接收來自 HTTP 請求的輸入值,若輸入值中包含惡意字元如 \r\n,則可能引發 HTTP 回應分割。

攻擊影響:

  • 攻擊者可利用 HTTP 回應分割來達成以下目標:
    • 重定向到惡意網站:將使用者引導至釣魚網站或惡意網站。
    • 注入惡意 Cookie:植入攻擊者控制的 Cookie,影響使用者瀏覽器與伺服器之間的交互行為。
    • 實施跨站腳本攻擊 (XSS):操控回應內容,引入惡意 JavaScript 代碼,進行 XSS 攻擊。

Web Cache Poisoning 攻擊

什麼是 Web Cache Poisoning 攻擊?

Web Cache Poisoning(Web 緩存中毒)攻擊是一種針對 中間 Web 緩存源(如代理伺服器、CDN 緩存) 的攻擊手法。攻擊者藉由操控 Web 緩存的內容,替換原本儲存在緩存中的合法資源,並將其變為攻擊者選定的惡意資源,這樣當用戶從緩存中請求內容時,會不知不覺地使用到被毒化的緩存內容。

攻擊過程解析:

  1. 攻擊者發送請求以清除緩存內容
    • 攻擊者首先向伺服器發送請求,目的是讓伺服器移除當前儲存的緩存頁面。這種請求可能會包含特定的清理緩存指令(例如使用 PURGE 方法)。
  2. 攻擊者發送特製的請求來中毒緩存
    • 當伺服器移除舊的緩存頁面後,攻擊者會發送一個經過特別設計的請求來生成新的緩存頁面。
    • 這個特製請求中可能包含攻擊者設定的惡意內容,或在 URL 中使用不同的參數值,以便產生不同的緩存頁面。
  3. 攻擊者重定向真實頁面到被毒化的緩存
    • 攻擊者將伺服器響應的第一個頁面設定為有效頁面(正常頁面),而將第二個響應設為惡意頁面(被毒化的緩存頁面)。
    • 當其他用戶請求相同 URL 時,會無意間從中毒的緩存中獲取被毒化的內容,而非原本合法的內容。
  4. 伺服器返回被毒化的緩存頁面
    • 當有用戶再次請求該 URL 時,伺服器會從被毒化的緩存中回應已被替換的內容,導致用戶看到被攻擊者修改過的頁面。

攻擊範例:

  • 攻擊者向伺服器發送以下初始請求:

    GET /index.html HTTP/1.1
    Host: certifiedhacker.com
    
  • 攻擊者接著發送另一個特製的請求,利用 Cache-Control 頭資訊來控制緩存行為:

    GET /index.html?user=attacker HTTP/1.1
    Host: certifiedhacker.com
    
  • 伺服器在收到這個請求後,會將其內容(可能包含惡意資訊)緩存起來,並將其視為合法的資源。

  • 當其他用戶發送類似的請求時,伺服器會從被毒化的緩存中回應他們,導致用戶不知情地被引導至惡意頁面。

攻擊影響:

  1. 內容篡改:攻擊者可藉由修改緩存內容,展示虛假的資訊或進行網頁內容篡改。
  2. 惡意重定向:攻擊者可將用戶引導至釣魚網站或植入惡意代碼的頁面,從而進行更進一步的攻擊(如跨站腳本攻擊)。
  3. 繞過安全機制:利用中毒的緩存,攻擊者可繞過 Web 應用程式的安全性檢查,直接展示未經驗證的資訊。

SSH Brute Force 攻擊

什麼是 SSH Brute Force 攻擊?

SSH Brute Force 攻擊是一種利用暴力破解技術(Brute Force)嘗試破解 SSH 服務器登入憑證的攻擊手段。攻擊者透過嘗試各種組合的使用者名稱和密碼,來取得 SSH 的登入權限,進而進入目標系統並執行各種惡意操作。SSH 協議通常用來建立加密的 SSH 隧道,在不安全的網路環境中傳輸未加密的數據。

攻擊過程解析:

  1. 建立 SSH 隧道
    • SSH 協議可用來建立加密隧道,使得兩個主機之間能夠在不安全的網路中進行安全的資料傳輸。此隧道可以用來保護傳輸中的未加密數據,防止中間人攻擊(Man-in-the-Middle Attack)。
  2. 進行暴力破解(Brute Force)
    • 攻擊者會使用暴力破解工具(如 HydraMedusa)來嘗試不同的使用者名稱與密碼組合,直到成功登入 SSH 隧道為止。
    • 一旦取得登入權限,攻擊者便能夠進行進一步的滲透活動,包含控制伺服器、植入後門程序(Backdoor)等。
  3. SSH 隧道的惡意用途
    • 攻擊者取得 SSH 隧道權限後,可以使用該隧道來進行惡意軟體傳輸(Malware Transmission),並利用 SSH 隧道掩蓋其行為,避免被防火牆或入侵偵測系統(IDS)發現。
    • SSH 隧道也可以用來轉移其他的攻擊或利用程式(Exploit),從而將攻擊擴展至其他受害者(例如企業內網中的其他伺服器)。

攻擊影響:

  1. 未授權訪問
    • 攻擊者成功取得 SSH 登入權限後,可以未授權地進入目標系統,對系統進行進一步的破壞或篡改。
  2. 惡意軟體傳輸與擴散
    • SSH 隧道可以用來傳輸惡意軟體到目標系統,或者是利用 SSH 隧道向受害者傳送其他惡意軟體,從而進行更大範圍的攻擊。
  3. 攻擊隧道化
    • SSH 隧道可用於隱匿攻擊行為,例如將攻擊流量隧道化(Tunneling)並傳送至內網的其他伺服器(如應用伺服器、文件伺服器、郵件伺服器),造成進一步擴散。

Web Server Password Cracking(Web 伺服器密碼破解)

什麼是 Web Server Password Cracking?

Web 伺服器密碼破解是指攻擊者試圖利用密碼策略的弱點來破解使用者的密碼,以取得 Web 伺服器或相關服務的訪問權限。攻擊者會透過猜測、字典攻擊(Dictionary Attack)、暴力破解(Brute Force Attack)或社交工程(Social Engineering)等多種手段來嘗試破解密碼。

攻擊者通常的破解目標:

  1. SMTP 伺服器
  2. Web shares(網頁共享服務)
  3. SSH 隧道
  4. Web 表單驗證(Web Form Authentication)
  5. FTP 伺服器

常見攻擊方法:

  • 社交工程(Social Engineering)
    攻擊者透過社交工程技巧(如冒充 IT 支援或公司管理層)來獲取目標使用者的密碼。
  • 誘騙(Spoofing)
    透過設置偽造的登入頁面,來騙取受害者的登入憑證。
  • 網絡釣魚(Phishing)
    使用網絡釣魚郵件(Phishing Emails)引誘受害者點擊偽造的連結,並要求其輸入帳號與密碼。
  • 特洛伊木馬(Trojan Horse)
    將惡意軟體(如特洛伊木馬)植入受害者系統中,該軟體會在受害者登入時記錄其密碼。
  • 鍵盤記錄(Keystroke Logging)
    使用鍵盤記錄軟體(Keylogger)來監控受害者的鍵盤輸入,從而獲取密碼。
  • 竊聽(Wiretapping)
    攻擊者透過監控網路通信來攔截未加密的密碼信息。

破解方式:

  1. 手動猜測(Manual Guessing)
    • 攻擊者根據常見的弱密碼進行手動嘗試,如:passwordrootadminguest123456 等。
  2. 字典攻擊(Dictionary Attack)
    • 利用字典檔案(Dictionary Files),逐個嘗試字典中所有可能的字詞,直至找出正確密碼。
  3. 暴力破解(Brute Force Attack)
    • 使用暴力破解工具,嘗試所有可能的字符組合(包括字母、數字、特殊符號等)來獲取密碼,通常速度較慢但最終必定會找到密碼。
  4. 混合攻擊(Hybrid Attack)
    • 結合字典攻擊與暴力破解,在字典中的單詞基礎上,加入不同的變形(如替換字符、添加數字等)進行嘗試。
  5. 自動化工具攻擊(Automated Tools)
    • 使用專門的密碼破解工具(如 THC Hydra、Ncrack),這些工具可執行自動化的密碼破解過程,大幅提升破解效率。

常見弱密碼:

攻擊者往往會先嘗試以下這些常見的弱密碼組合:

  • password
  • root
  • administrator
  • admin
  • demo
  • test
  • guest
  • 123456
  • qwerty
  • 常見寵物名、生日、簡單字母組合

剩下幾天我會把SQL injection跟Hack Web Application寫完
其他的CEH章節之後會附上網址


上一篇
第25天:CEH第十二章IDS, IPS, 防火牆跟蜜罐
下一篇
第27天:CEH第十三章入侵網頁伺服器(續)
系列文
腳本小子的滲透測試學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言