web安全面經

同淋雪發表於2024-07-08

web安全面經

1、poc與exp

  • Poc:漏洞驗證程式
  • Exp:漏洞利用程式

2、通用型漏洞

有一定使用量或使用者量的第三方框架、軟體、應用、系統等對應的漏洞,拿web層應用來說需要滿足:1、 兩個站點以上使用了該應用,可參考cnvd(國家資訊保安漏洞共享平臺)的漏洞;2、 路徑固定、引數固定。

3、Poc編寫流程

  1. 發現漏洞;
  2. 尋找線上目標或搭建漏洞環境復現;
  3. 理解漏洞的出發點,判斷是否為漏洞;
  4. 編寫poc;
  5. poc測試,通用漏洞,找到足夠多的URL證明這個是通用可用的poc

4、Web常見漏洞

  • 敏感資訊洩露:配置資訊洩露、日誌洩露、路徑洩漏
  • 未授權訪問:未經授權和認證可直接訪問
  • 預設密碼:例如經典的admin/admin
  • SQL隱碼攻擊:提交惡意的資料可以被資料庫解析執行
  • Xss:跨站指令碼攻擊
  • 目錄穿越:未設定訪問邊界,使用者可以越界訪問到不該提供的檔案
  • 檔案下載:對檔案下載沒有做限制,攻擊者惡意利用這種方式下載伺服器敏感檔案
  • 檔案包含:為了使用程式碼的重用性,透過檔案包含函式將程式碼檔案包含進來,從而使用裡面的程式碼。檔案包含在php開發中很常見。當檔案包含函式的檔案引數可控時,檔案引數又未進行校驗或者校驗被繞過,就會產生檔案包含漏洞,導致讀取檔案、程式碼執行。
  • 檔案上傳:當上傳功能沒有限制校驗或者限制被繞過時,攻擊者會上傳惡意指令碼,且惡意指令碼被web伺服器解析成指令碼檔案,就會導致程式碼執行。
  • 遠端程式碼執行:為了方便傳輸、提高效能,web專案中可能會使用到序列化。序列化是將物件的狀態資訊轉換為可以儲存或者傳輸的形式的過程,反序列化為相反的過程。當不可信資料做了反序列化處理,那麼攻擊者就可以透過構造惡意輸入,讓反序列化產生非預期的物件,非預期物件在產生過程中就有可能導致任意程式碼執行。例如,專案中使用的一些元件可能會支援一些表示式,當安全策略被繞過時,攻擊者就可以透過構造特定資料代入表示式造成遠端程式碼執行。
  • 遠端命令執行:常見的web應用呼叫伺服器程式,引數被直接帶入程式中命令或過濾被繞過時,就可能會出現命令注入漏洞,導致遠端命令被執行。例如,支援ping命令的web程式引數IP,使用管道符|進行拼接惡意命令,就可能會導致遠端命令執行。
  • URL跳轉:跳轉的URL可控或者過濾被繞過時,就會導致任意URL連結跳轉。

5、SQL隱碼攻擊

SQL隱碼攻擊是比較常見的網路攻擊方式之一。攻擊者透過在應用程式的輸入欄位中插入惡意的SQL程式碼,來操縱應用程式執行未預期的SQL語句,從而獲取、修改或刪除資料庫中的資料。SQL隱碼攻擊可以對系統的安全性和資料的完整性造成嚴重威脅。

原理

利用應用程式對使用者輸入的資料缺乏有效的驗證和過濾,使得惡意的SQL語句可以直接傳遞給資料庫執行。例如,在一個登入系統中,如果使用者輸入的使用者名稱和密碼直接被拼接到SQL查詢語句中而未進行適當的處理,攻擊者可以透過構造特定的輸入,繞過身份驗證。

分類

按照回顯效果分:

  • 有回顯:聯合注入和報錯注入。
  • 無回顯:時間盲注、布林盲注。

聯合注入:使用UNION關鍵字將惡意的查詢結果與正常查詢結果合併,返回額外的資料。

報錯注入:透過故意觸發SQL錯誤,攻擊者可以從資料庫返回的錯誤訊息中獲取有用的資訊。

時間盲注:透過使用延遲函式(如SLEEP),觀察應用程式的響應時間來獲取資料庫中的資訊。

布林盲注:透過構造條件語句並觀察應用程式的響應(如頁面是否載入正常),來推斷資料庫中的資訊。

示例

假設一個應用程式的登入功能程式碼如下:

username = input("Enter username:")
password = input("Enter password:")
query = "SELECT * FROM users WHERE username = '{}' AND password = '{}';".format(username, password)

如果攻擊者輸入以下內容:

username: admin
password: ' OR '1'='1

最終的SQL查詢語句將變成:

SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1';

由於'1'='1'始終為真,這個查詢將返回資料庫中所有使用者的資訊,允許攻擊者繞過身份驗證

防禦SQL隱碼攻擊的方法

  1. 使用引數化查詢:確保使用者輸入的資料作為引數傳遞給SQL查詢,而不是直接拼接到SQL字串中
  2. 使用ORM工具(如Django ORM):生成安全的SQL查詢,避免手動構造SQL語句
  3. 輸入驗證和過濾: 嚴格驗證和過濾使用者輸入,避免將惡意內容傳遞給資料庫
  4. 最小許可權原則: 資料庫賬戶應僅授予必要的許可權,避免使用具有管理員許可權的賬戶執行應用程式的SQL查詢
  5. 資料庫錯誤訊息隱藏: 配置伺服器不向使用者顯示詳細的資料庫錯誤訊息,防止攻擊者利用錯誤資訊進行進一步的攻擊

6、XSS(跨站指令碼攻擊)

跨站指令碼攻擊是一種常見的安全漏洞,攻擊者透過在網頁中注入惡意的指令碼程式碼,利用瀏覽器執行這些程式碼,從而盜取使用者的敏感資訊、劫持會話、篡改內容或進行其他惡意操作。XSS攻擊主要利用了Web應用對使用者輸入的資料缺乏充分的驗證和過濾。

分類

  1. 反射型:攻擊者準備攻擊連結, 需要受害者訪問連結觸發XSS程式碼,一般容易出現在搜尋頁面。
  2. 儲存型:XSS程式碼存在伺服器中的,如在發表文章的時候插入payload,如果沒有過濾或過濾不嚴payload儲存在伺服器中,當有使用者訪問插入payload的文章連結之後觸發XSS程式碼執行。
  3. Dom型:基於Dom(DocumentObjeet Model基於文件物件模型)的漏洞,DOM中有很多物件,其中一些是使用者可以操縱的,如location等。客戶端的指令碼不依賴於提交資料到伺服器端,如果沒有將DOM中傳入的資料做嚴格的過濾,將其限制在可控範圍內,就會產生DOM XSS。

XSS攻擊的危害

  • 竊取使用者資訊:如cookie、會話令牌、登入憑證等。
  • 劫持使用者會話:冒充使用者進行操作。
  • 篡改網頁內容:展示虛假資訊、釣魚頁面等。
  • 惡意操作:例如,利用使用者的許可權在網站上進行惡意操作。

XSS的防禦方法

  • 輸入驗證和輸出編碼
  • 使用安全的框架和庫
  • 內容安全策略
  • HTTPOnly和Secure標誌
  • 定期安全測試

7、0day漏洞

0day漏洞,也稱為零日漏洞或零時差漏洞,是指那些尚未被公眾發現、官方尚未釋出補丁的安全漏洞。攻擊者利用這些未公開的漏洞,可以在目標系統或應用中執行惡意程式碼,獲取敏感資訊,甚至完全控制目標系統。由於0day漏洞的隱蔽性和利用的高效性,它往往成為駭客進行高階持續性威脅(APT)攻擊的首選手段。

當前“零日”現在已經不再侷限於漏洞被公開的時間長短。“零日”不一定是真的剛剛發現,駭客完全有可能在很久之前發現了漏洞,但是一直未被發現公開。那麼對於外界來說,漏洞公開的那一刻才能稱為零日漏洞。所以,“0day”往往可以理解為“軟體供應商和公眾未知”,但是“攻擊者已知”。

防範零日攻擊的基本措施

  • 使用最新的安全補丁
  • 使用防病毒軟體
  • 使用防火牆
  • 使用雙因素身份驗證 (2FA)。2FA要求提供除密碼之外的其他資訊(例如,傳送到手機的程式碼)
  • 啟用瀏覽器安全功能
  • 小心電子郵件和連結

8、滲透測試常用的工具

AWVS、SQLMAP、NMAP、APPSCAN、BURPSUITE、中國菜刀等

9、WAF是什麼?

Web應用程式防火牆(Web Application Firewall,WAF)是一種用於保護Web應用程式的安全裝置。

WAF可以透過對Web應用程式的流量進行過濾和監控,識別並阻止潛在的安全威脅。WAF可以檢測Web應用程式中的各種攻擊,例如SQL隱碼攻擊、跨站點指令碼攻擊(XSS)、跨站請求偽造(CSRF)等,並採取相應的措施。

WAF的工作原理通常包括以下幾個步驟:

  1. 流量識別:WAF識別來自客戶端的請求,並對請求進行分析。WAF可以檢查請求頭、請求體、Cookie、URL引數等資訊,並識別其中的攻擊。
  2. 攻擊檢測:WAF對識別的請求進行攻擊檢測。WAF可以使用多種技術來檢測攻擊,例如正規表示式、特徵匹配、行為分析等。WAF可以檢測多種攻擊,包括SQL隱碼攻擊、XSS、CSRF、命令注入等。
  3. 攻擊響應:WAF根據檢測結果採取相應的措施,例如攔截請求、阻止訪問、記錄事件等。WAF可以使用多種技術來響應攻擊,例如重定向、報錯、攔截等。
  4. 日誌記錄:WAF記錄所有請求和響應的詳細資訊,包括請求頭、請求體、響應頭、響應體等。WAF可以將日誌傳送給中央日誌管理系統,以便進行分析和審計。

10、什麼是CSRF?

CSRF (Cross-site request forgery,跨站請求偽造)也被稱為One Click Attack或者Session Riding,是一種對網站的惡意利用。與XSS非常不同,XSS利用站點內的信任使用者,而CSRF則透過偽裝成受信任使用者請求受信任的網站。

簡單的說,是攻擊者透過一些技術手段欺騙使用者的瀏覽器去訪問一個自己以前認證過的站點並執行一些操作(如發郵件,發訊息,甚至財產操作(如轉賬和購買商品))。因為瀏覽器之前認證過,所以被訪問的站點會覺得這是真正的使用者操作而去執行。

image-20240707224203722

CSRF漏洞挖掘

  • 抓取一個正常請求的資料包,如果沒有Referer欄位和token,那麼極有可能存在CSRF漏洞。
  • 如果有Referer欄位,但是去掉Referer欄位後再重新提交,如果該提交還有效,那麼基本上可以確定存在CSRF漏洞。
  • 隨著對CSRF漏洞研究的不斷深入,不斷湧現出一些專門針對CSRF漏洞進行檢測的工具,如CSRFTester,CSRF Request Builder等。

CSRF漏洞的防禦

  • 驗證碼
  • 在請求地址中新增 token 並驗證
  • 在 HTTP 頭中自定義屬性並驗證
  • 驗證 HTTP Referer 欄位

11、在 Django 專案中,如果頁面從資料庫中取資料遲遲得不到響應,一直處於等待狀態,應該怎麼處理?

  • 增加超時設定:為資料庫連線增加超時設定,防止查詢時間過長。如果查詢時間超過設定的超時時間,資料庫會丟擲異常,你可以捕獲並處理這個異常。使用 try...except 語句捕獲 DatabaseError 異常。如果捕獲到異常,使用 logger.error 記錄錯誤日誌,包含錯誤資訊 e。返回 JSON 響應,提示使用者資料庫請求超時,並設定 HTTP 狀態碼為 500(伺服器內部錯誤)。在前端顯示一個友好的錯誤提示,告知使用者查詢超時。
  • 非同步處理:Django 3.1 及以後版本支援非同步檢視。可以用非同步檢視處理長時間執行的任務,避免阻塞主執行緒。
  • 監控和除錯:使用工具如 Django Debug Toolbar, New Relic, Sentry 等來監控和分析資料庫查詢效能,識別和解決效能瓶頸。Django Debug Toolbar:可以顯示每個頁面的 SQL 查詢,幫助你發現慢查詢。New Relic:效能監控工具,可以幫助你追蹤應用的效能瓶頸。Sentry:錯誤跟蹤工具,可以幫助你捕獲和分析應用中的錯誤。

12、在 Django 中,如何防禦跨站請求偽造(CSRF)攻擊?

Django 提供了一套內建的機制來防禦 CSRF 攻擊。以下是一些具體措施:

  • 啟用 CSRF 中介軟體:預設情況下,Django 啟用了 django.middleware.csrf.CsrfViewMiddleware 中介軟體。
  • 在表單中使用 CSRF Token:在 Django 模板中,使用 {% csrf_token %} 標籤來生成 CSRF 令牌。
  • 在 AJAX 請求中傳遞 CSRF Token:在傳送 AJAX 請求時,確保在請求頭中包含 CSRF 令牌

13、常見的空間搜尋引擎

什麼叫空間搜尋引擎?

空間搜尋引擎用於搜尋和分析網際網路上的裝置和服務,幫助識別潛在的安全威脅。

1、Shodan

  • 簡介: Shodan 是最著名的空間搜尋引擎之一,被稱為“網際網路的眼睛”。

  • 功能: 搜尋網際網路上的裝置,包括伺服器、路由器、攝像頭等。提供裝置的開放埠、服務、版本資訊。發現暴露在網際網路上的漏洞裝置。

  • 應用: 安全研究人員用於發現暴露在網際網路的未授權裝置。企業用於評估網路安全狀況。

2、Fofa

  • 簡介: Fofa 是另一款由中國公司開發的空間搜尋引擎,功能強大且使用方便。
  • 功能: 掃描和索引網際網路上的裝置和服務。提供詳細的裝置資訊和漏洞報告。支援高階搜尋語法和多種過濾條件。
  • 應用: 安全研究人員用於發現和分析網際網路暴露的裝置。企業用於監控和評估自身的網路安全狀況。

3、Censys

  • 簡介:Censys是一個提供網際網路裝置和服務搜尋的搜尋引擎。它能對整個網際網路進行掃描,並提供詳細的裝置和服務資訊。
  • 功能:網際網路掃描、裝置識別、安全分析、資料視覺化等。

14、請簡要說明常見的 Web 安全漏洞及其防護措施

SQL 注入

  • 描述: 攻擊者透過輸入惡意的 SQL 語句來執行資料庫操作。

  • 防護措施: 使用引數化查詢或 ORM 框架、驗證和清理使用者輸入、最小化資料庫許可權。

跨站指令碼(XSS)

  • 描述: 攻擊者向網頁注入惡意指令碼,竊取使用者資料或執行其他惡意操作。
  • 防護措施: 對使用者輸入進行編碼和轉義、使用 Content Security Policy(CSP)、驗證和清理使用者輸入。

跨站請求偽造(CSRF)

  • 描述: 攻擊者誘導使用者在已認證的網站上執行未授權的操作。
  • 防護措施: 使用 CSRF 令牌、驗證請求來源、對敏感操作進行二次驗證。

檔案上傳漏洞

  • 描述: 攻擊者上傳惡意檔案並透過訪問該檔案執行惡意程式碼。
  • 防護措施: 驗證檔案型別、限制檔案大小、儲存上傳檔案在隔離目錄、對檔案進行掃描。

15、請描述如何編寫一個簡單的 PoC 來驗證某個 Web 應用存在 SQL 注入漏洞

1、確定目標 URL 和引數: 找到接受使用者輸入的 URL 和引數,例如

 http://example.com/search?q=

2、構造惡意輸入: 使用單引號閉合 SQL 語句並注入 SQL 程式碼,例如

 http://example.com/search?q=test' OR '1'='1

3、傳送請求: 使用 Python 的 requests 庫傳送請求並檢查響應內容。

16、在Django中如何實現使用者登入功能?

  1. 配置 URL
  2. 建立檢視函式
  3. 建立模板 (login.html)

17、請簡述如何使用 Nessus 掃描一個目標網路

  1. 安裝 Nessus: 從 Tenable 官網下載並安裝 Nessus。
  2. 配置 Nessus: 開啟 Nessus 控制檯,建立使用者並登入。
  3. 新增新掃描任務:輸入目標網路或 IP 地址。
  4. 選擇掃描模板: 根據需要選擇合適的掃描模板(如基礎網路掃描、Web 應用掃描)。
  5. 啟動掃描: 配置掃描引數並啟動掃描。
  6. 分析報告: 掃描完成後檢視生成的報告,分析發現的漏洞和風險,並採取相應的修復措施。

18、什麼是 Pocsuite?它有哪些主要功能?

Pocsuite 是由 360 網路安全研究團隊開發的開源 PoC 框架,用於批次漏洞驗證和利用。

主要功能

  • PoC 管理: 支援載入和管理多個 PoC(漏洞驗證程式碼)。
  • 批次掃描: 支援批次目標掃描,快速驗證大量目標的漏洞情況。
  • 自動化測試: 提供自動化漏洞驗證和利用功能,提高測試效率。
  • 擴充套件性: 支援自定義 PoC 編寫和整合其他工具。

Pocsuite框架支援哪些漏洞利用模式?

  1. 攻擊模式(attack):用於實際的漏洞利用。
  2. 驗證模式(verify):用於驗證漏洞的存在性。
  3. 指令碼模式(shell):允許使用者編寫自定義指令碼進行復雜的操作。

Pocsuite框架如何管理和執行漏洞利用指令碼(POC)?

Pocsuite框架透過其核心元件管理和執行漏洞利用指令碼(POC)。使用者可以編寫和載入自定義的POC指令碼,框架會處理與目標系統的互動,執行POC指令碼中的利用邏輯,並記錄和報告測試結果。POC指令碼使用Python編寫,並需要實現特定的介面和方法,如_verify_attack

Pocsuite如何幫助進行批次漏洞利用測試?

Pocsuite支援批次漏洞利用測試,允許使用者對多個目標進行同時測試。使用者可以透過配置檔案命令列引數指定多個目標地址,Pocsuite會依次對這些目標執行指定的漏洞利用指令碼(POC),並記錄每個目標的測試結果。這種方式可以大大提高漏洞掃描和利用的效率,特別適用於大規模的滲透測試和安全評估。

在使用Pocsuite進行漏洞利用測試時,如何保證測試過程中的合法性和道德規範?

在使用Pocsuite進行漏洞利用測試時,必須遵守以下原則以保證合法性和道德規範:

  1. 獲得授權:在對目標系統進行測試前,必須獲得系統所有者的明確授權。
  2. 遵守法律:所有測試活動必須遵守相關法律法規,不得進行任何非法操作。
  3. 保護隱私:避免在測試過程中洩露或濫用目標系統中的敏感資訊和個人資料。
  4. 負責任地披露:發現漏洞後,應遵循負責任的披露原則,及時通知系統所有者,並在對方修復漏洞前不公開相關細節。

19、什麼叫滲透測試?滲透測試的型別

滲透測試是一種模擬網路攻擊的安全評估方法,旨在發現並修復系統、網路和應用中的安全漏洞。透過模擬真實攻擊者的行為,滲透測試能夠幫助組織識別潛在的安全威脅,評估其防禦能力,並提供改進建議。

滲透測試的目標

  1. 識別漏洞:發現系統、網路和應用中的已知或未知漏洞。
  2. 評估影響:評估這些漏洞可能帶來的安全影響。
  3. 驗證防禦措施:測試現有的安全防禦措施的有效性。
  4. 改進安全策略:提供改進建議,幫助組織加強安全防護。

滲透測試的型別

  1. 黑盒測試(Black Box Testing)
    • 描述:測試人員沒有目標系統的內部資訊,僅透過外部測試發現漏洞。
    • 優點:模擬真實的外部攻擊者視角。
    • 缺點:測試範圍有限,可能遺漏內部漏洞。
  2. 白盒測試(White Box Testing)
    • 描述:測試人員擁有目標系統的全部內部資訊,如原始碼、架構設計等。
    • 優點:全面深入地分析系統內部的安全性。
    • 缺點:需要更多的時間和資源。
  3. 灰盒測試(Gray Box Testing)
    • 描述:測試人員擁有部分目標系統的內部資訊,如使用者賬戶、部分程式碼等。
    • 優點:平衡黑盒和白盒測試的優缺點,既有外部視角又有部分內部視角。
    • 缺點:測試效果依賴於所提供的資訊質量。

滲透測試的步驟

  1. 資訊收集(Reconnaissance)
    • 描述:收集目標系統的相關資訊,如域名、IP地址、網路拓撲、作業系統版本、開放埠、服務等。
    • 工具:Nmap、Whois、DNS查詢工具、Google Hacking等。
  2. 掃描和列舉(Scanning and Enumeration)
    • 描述:對目標系統進行埠掃描、服務探測、漏洞掃描等,以確定潛在的攻擊點。
    • 工具:Nmap、Nessus、OpenVAS、Nikto等。
  3. 漏洞分析(Vulnerability Analysis)
    • 描述:分析掃描結果,確定存在的漏洞並評估其嚴重性。
    • 工具:Nessus、OpenVAS、Metasploit等。
  4. 漏洞利用(Exploitation)
    • 描述:利用發現的漏洞進行實際攻擊,驗證漏洞的存在並評估其影響。
    • 工具:Metasploit、Pocsuite、ExploitDB等。
  5. 許可權提升(Privilege Escalation)
    • 描述:在目標系統中獲得初始訪問許可權後,嘗試提升許可權以獲取更高的訪問級別。
    • 工具:Linux和Windows本地提權漏洞利用工具、Metasploit等。
  6. 持續性和資料收集(Post-Exploitation)
    • 描述:保持對目標系統的訪問,並收集有價值的資料,如敏感資訊、配置檔案等。
    • 工具:Meterpreter、Empire、Cobalt Strike等。
  7. 報告(Reporting)
    • 描述:編寫滲透測試報告,詳細描述發現的漏洞、利用過程、影響評估及修復建議。
    • 工具:報告模板、自動化報告生成工具等。

滲透測試的工具

  1. Nmap:網路掃描和發現工具,用於埠掃描和服務探測。
  2. Metasploit:漏洞利用框架,用於漏洞利用和後滲透階段。
  3. Burp Suite:用於Web應用滲透測試的綜合工具包。
  4. Nessus:廣泛使用的漏洞掃描工具。
  5. Wireshark:網路分析和嗅探工具,用於分析網路流量。
  6. John the Ripper:密碼破解工具,用於測試密碼的強度。

20、什麼是payload

payload(有效載荷)是指攻擊者注入到目標系統中的惡意程式碼或資料。payload 的目的是利用系統或應用程式的漏洞或弱點,執行惡意操作,例如獲取敏感資訊、獲取系統訪問許可權、篡改資料等。payload 可以是各種形式的惡意輸入,如惡意指令碼、SQL 查詢、命令注入等,具體取決於攻擊的型別和目標系統的特性。

21、什麼是OSI模型

OSI(Open Systems Interconnection)模型是一個描述網路通訊的框架用於標準化和指導不同網路系統之間的互操作性。OSI 模型由國際標準化組織(ISO)制定,分為七個層次,每一層次都有特定的功能和協議。

OSI模型的七個層次

1、物理層(Physical Layer):

功能: 負責傳輸原始的位元流(0 和 1)到物理媒體(如電纜、光纖)。

裝置: 集線器、網線、光纖、電纜。

協議和標準: 例如,IEEE 802.3(乙太網)、RS-232(序列通訊)。

2、資料鏈路層(Data Link Layer):

功能: 提供節點到節點的可靠資料傳輸,負責幀的傳輸和錯誤檢測與校正。

子層: 邏輯鏈路控制(LLC)和媒體訪問控制(MAC)。

裝置: 交換機、網橋。

協議和標準: 例如,Ethernet(乙太網)、PPP(點對點協議)。

3、網路層(Network Layer):

功能: 負責資料包的路徑選擇(路由)和轉發,實現網路間通訊。

裝置: 路由器。

協議和標準: 例如,IP(網際網路協議)、ICMP(Internet 控制報文協議)。

4、傳輸層(Transport Layer):

功能: 提供端到端的傳輸服務,確保資料的完整性和順序。

裝置: 防火牆(部分功能在傳輸層)。

協議和標準: 例如,TCP(傳輸控制協議)、UDP(使用者資料包協議)。

5、會話層(Session Layer):

功能: 負責建立、管理和終止會話,實現應用程式之間的通訊控制。

協議和標準: 例如,RPC(遠端過程呼叫)、NetBIOS。

6、表示層(Presentation Layer):

功能: 負責資料的格式化、加密和解密,確保資料在應用層之間的相容性。

協議和標準: 例如,SSL/TLS(安全套接字層/傳輸層安全協議)、MIME(多用途網際網路郵件擴充套件)。

7、應用層(Application Layer):

功能: 提供網路服務和應用程式介面,直接面向使用者。

協議和標準: 例如,HTTP(超文字傳輸協議)、FTP(檔案傳輸協議)、SMTP(簡單郵件傳輸協議)。

22、什麼是TCP/IP模型

TCP/IP 模型是網際網路協議套件的描述性框架,用於指導和標準化網路通訊。TCP/IP 模型常被簡化為五層模型,這五層分別是物理層、資料鏈路層、網路層、傳輸層和應用層。每一層都對應特定的功能和協議。

  • 物理層(Physical Layer):
功能: 負責在物理媒體上傳輸位元流。

裝置: 集線器、網線、光纖、電纜。

協議和標準: 例如,乙太網(Ethernet)物理層標準,IEEE 802.3。
  • 資料鏈路層(Data Link Layer):
功能: 提供節點到節點的資料傳輸,處理實體地址(MAC 地址)的識別和資料幀的傳輸。

裝置: 交換機、網橋。

協議和標準: 例如,乙太網(Ethernet)、PPP(點對點協議)、ARP(地址解析協議)。
  • 網路層(Network Layer):
功能: 負責資料包的路由和轉發,實現不同網路之間的通訊。

裝置: 路由器。

協議和標準: 例如,IP(網際網路協議)、ICMP(Internet 控制報文協議)、IGMP(Internet 組管理協議)。
  • 傳輸層(Transport Layer):
功能: 提供端到端的通訊控制和資料傳輸完整性,確保資料的順序和無差錯傳輸。

協議和標準: 例如,TCP(傳輸控制協議)、UDP(使用者資料包協議)。
  • 應用層(Application Layer):
功能: 提供網路服務和應用程式介面,直接支援使用者應用程式。

協議和標準: 例如,HTTP(超文字傳輸協議)、FTP(檔案傳輸協議)、SMTP(簡單郵件傳輸協議)、DNS(域名系統)。

23、HTTPS協議

在 HTTPS(HyperText Transfer Protocol Secure)中,使用了多種加密技術來確保資料在客戶端和伺服器之間傳輸時的安全性。

以下是 HTTPS 中使用的主要加密技術:

  1. 非對稱加密

    用途: 在握手過程中用於交換金鑰和身份驗證。
    演算法: RSA、ECDHE(橢圓曲線 Diffie-Hellman 臨時金鑰交換)。
    過程:
    客戶端向伺服器傳送連線請求。
    伺服器傳送數字證書,證書中包含伺服器的公鑰。
    客戶端驗證伺服器證書的有效性(由受信任的證書頒發機構 CA 簽名)。
    客戶端生成一個隨機的對稱金鑰,並用伺服器的公鑰加密該金鑰,然後傳送給伺服器。
    伺服器用自己的私鑰解密出對稱金鑰。
    
  2. 對稱加密

    用途: 在資料傳輸過程中用於加密實際的資料。
    演算法: AES(高階加密標準)、ChaCha20。
    過程: 一旦握手完成,客戶端和伺服器將使用對稱金鑰進行資料加密和解密。這種方式速度快,適合大資料量的加密。
    
  3. 雜湊演算法

    用途: 用於資料完整性驗證,確保資料在傳輸過程中未被篡改。
    演算法: SHA(安全雜湊演算法)系列,如 SHA-256。
    過程: 在傳輸資料前,對資料進行雜湊計算,並將雜湊值附加在資料上。接收方接收資料後,對資料進行相同的雜湊計算並比對雜湊值,確保資料完整性。
    
  4. 數字證書

用途: 驗證伺服器的身份,確保客戶端連線到合法的伺服器。
頒發機構: 證書由受信任的證書頒發機構(CA)簽發。
內容: 證書包含伺服器的公鑰、證書頒發機構的簽名、有效期等資訊。

24、MD5加密

MD5(Message Digest Algorithm 5)是一種常用的雜湊函式,主要用於生成資料的固定長度的雜湊值或訊息摘要。MD5 在密碼學中的主要用途是驗證資料的完整性。雖然 MD5 已被認為是不安全的(特別是用於密碼學目的),但瞭解其底層實現原理仍然是理解雜湊函式工作機制的一個有用示例。

為什麼MD5不安全

  1. 碰撞攻擊(Collision Attack)

描述:碰撞攻擊是指找到兩組不同的輸入資料,使得它們的MD5雜湊值相同。MD5由於設計上的缺陷,使得找到碰撞變得相對容易。

影響:碰撞攻擊會導致數字簽名、資料完整性驗證等依賴雜湊值唯一性的應用失效。例如,攻擊者可以建立兩個不同的檔案,具有相同的MD5雜湊值,從而繞過簽名驗證或完整性檢查。

示例:2004年,研究人員首次展示了實際可行的MD5碰撞攻擊,隨後更多的研究進一步降低了找到碰撞的計算複雜度。

2. 預對映攻擊(Preimage Attack)

描述:預對映攻擊是指找到一個給定雜湊值的輸入資料。這種攻擊雖然在理論上針對MD5仍然非常難,但在實踐中MD5的脆弱性使得該攻擊的難度大大降低。

影響:預對映攻擊會威脅密碼儲存的安全性。攻擊者可以透過彩虹表(預計算雜湊值表)快速找到與儲存的MD5雜湊值對應的明文密碼。

3. 快速計算

描述:MD5的計算速度非常快,這在一定程度上成為了它的弱點。攻擊者可以利用這種快速計算的特性,透過暴力破解的方法嘗試大量不同的輸入資料來找到匹配的雜湊值。

影響:對於密碼雜湊,快速計算會降低其安全性,因為攻擊者可以更快地進行暴力破解。現代安全雜湊演算法如bcrypt、scrypt等引入計算延遲,增加了破解的難度。

4. 雜湊長度

描述:MD5生成的雜湊值長度為128位,這對於現代安全需求來說顯得不夠長。較短的雜湊值增加了發生碰撞的機率,降低了安全性。

影響:較短的雜湊值使得攻擊者更容易找到碰撞,增加了攻擊成功的可能性。

5. 已知漏洞和廣泛的攻擊工具

描述:由於MD5的廣泛使用和其已知的安全漏洞,許多攻擊工具和技術已經發展得非常成熟,能夠輕鬆地進行MD5碰撞和預對映攻擊。

影響:使用MD5的系統和應用更容易受到攻擊,因為攻擊者可以利用現有工具進行有效攻擊。

相關文章