「 圖解HTTP 」 讀書(shū)筆記 第 十一 章

Web 的攻擊技術(shù)

1. 針對(duì) Web 的攻擊技術(shù)

簡(jiǎn)單的 HTTP 協(xié)議本身并不存在安全性問(wèn)題。應(yīng)用 HTTP 協(xié)議的服務(wù)器和客戶端,以及運(yùn)行在服務(wù)器上的 Web 應(yīng)用等資源才是攻擊目標(biāo)。

攻擊事件傾向.png
1.1 HTTP 不具備必要的安全功能

與最初的設(shè)計(jì)相比,現(xiàn)今幾乎所有的 Web 網(wǎng)站都會(huì)使用會(huì)話(session)管理、加密處理等安全性方面的功能,而 HTTP 協(xié)議并不具備這些功能。

整體上看,HTTP 就是一個(gè)通用的單純協(xié)議機(jī)制,因此它具備較多優(yōu)勢(shì),但是在安全性方面呈劣勢(shì)。

開(kāi)發(fā)者需自行設(shè)計(jì)并開(kāi)發(fā)認(rèn)證及會(huì)話管理功能來(lái)滿足 Web 應(yīng)用的安全,但是自行設(shè)計(jì)會(huì)出現(xiàn)各種形形色色的實(shí)現(xiàn),安全等級(jí)并不完備。

1.2 在客戶端即可篡改請(qǐng)求

在 Web 應(yīng)用中,從瀏覽器那接收到的 HTTP 請(qǐng)求的全部?jī)?nèi)容,都可以在客戶端自由的變更、篡改。所以 Web 應(yīng)用可能會(huì)接收到與預(yù)期數(shù)據(jù)不相同的內(nèi)容。

在 HTTP 請(qǐng)求報(bào)文內(nèi)加載攻擊代碼,就能發(fā)起對(duì) Web 應(yīng)用的攻擊。

對(duì) Web 應(yīng)用的攻擊.png
1.3 針對(duì) Web 應(yīng)用的攻擊模式

對(duì) Web 應(yīng)用的攻擊模式有以下兩種。

  1. 主動(dòng)攻擊

  2. 被動(dòng)攻擊

  • 以服務(wù)器為目標(biāo)的主動(dòng)攻擊

    主動(dòng)攻擊(active attack)是指攻擊者通過(guò)直接訪問(wèn) Web 應(yīng)用,把攻擊代碼傳入的攻擊模式。由于該模式是直接針對(duì)服務(wù)器上的資源進(jìn)行攻擊,因此攻擊者需要能夠訪問(wèn)到那些資源。

    主動(dòng)攻擊模式里具有代表性的攻擊是 SQL 注入攻擊和 OS 命令注入攻擊。

    主動(dòng)攻擊.png
  • 以服務(wù)器為目標(biāo)的被動(dòng)攻擊

    被動(dòng)攻擊(passive attack)是指利用圈套策略執(zhí)行攻擊代碼的攻擊模式。在被動(dòng)攻擊過(guò)程中,攻擊者不直接對(duì)目標(biāo) Web 應(yīng)用訪問(wèn)發(fā)起攻擊。

被動(dòng)攻擊通常的攻擊模式入如下:

  1. 攻擊者誘使用戶觸發(fā)已設(shè)置好的陷阱,而陷阱會(huì)啟動(dòng)發(fā)送已嵌入攻擊代碼的 HTTP 請(qǐng)求。

  2. 當(dāng)用戶不知不覺(jué)中招后,用戶的瀏覽器或郵件客戶端就會(huì)觸發(fā)這個(gè)請(qǐng)求。

  3. 中招后的用戶更瀏覽器會(huì)把含有攻擊代碼的 HTTP 請(qǐng)求發(fā)送給作為攻擊目標(biāo)的 Web 應(yīng)用,運(yùn)行攻擊代碼。

  4. 執(zhí)行完攻擊代碼,存在安全漏洞的 Web 應(yīng)用會(huì)稱為攻擊者的跳板,可能導(dǎo)致用戶所持有的 Cookie 等個(gè)人信息被竊取。

被動(dòng)攻擊模式中具有代表性的攻擊是跨站腳本攻擊和跨站點(diǎn)請(qǐng)求偽造。

被動(dòng)攻擊.png

利用被動(dòng)攻擊,可發(fā)起對(duì)原本從互聯(lián)網(wǎng)上無(wú)法直接訪問(wèn)的企業(yè)內(nèi)網(wǎng)等網(wǎng)絡(luò)的攻擊。

利用被動(dòng)攻擊對(duì)企業(yè)內(nèi)網(wǎng)發(fā)動(dòng)攻擊.png

2. 因輸出值轉(zhuǎn)義不完全引發(fā)的安全漏洞

實(shí)施 Web 應(yīng)用的安全對(duì)策可大致分為以下兩部分:

  • 客戶端的驗(yàn)證

  • Web 應(yīng)用端(服務(wù)器端)的驗(yàn)證

    • 輸入值驗(yàn)證

    • 輸出值轉(zhuǎn)義

驗(yàn)證數(shù)據(jù)的地方.png

多數(shù)情況下采用 JavaScript 在客戶端驗(yàn)證數(shù)據(jù)。保留客戶端驗(yàn)證數(shù)據(jù)只是為了盡早的辨識(shí)輸入錯(cuò)誤,起到提供 UI 的作用。

輸入值驗(yàn)證通常是指檢查是否是符合系統(tǒng)業(yè)務(wù)邏輯的數(shù)值或檢查字符編碼等預(yù)防對(duì)策。

針對(duì)輸出做值轉(zhuǎn)義處理是一項(xiàng)至關(guān)重要的安全策略。當(dāng)輸出值轉(zhuǎn)義不完全時(shí),會(huì)因觸發(fā)攻擊者傳入的攻擊代碼,而給輸出對(duì)象帶來(lái)?yè)p害。

2.1 跨站腳本攻擊

跨站腳本攻擊(Cross-Site Scripting,XSS)是指通過(guò)存在安全漏洞的 Web 網(wǎng)站注冊(cè)用戶的瀏覽器內(nèi)運(yùn)行非法的 HTML 標(biāo)簽或者 JavaScript 進(jìn)行的一種攻擊。

跨站腳本攻擊有可能造成以下影響。

  • 利用虛假輸入表單騙取用戶個(gè)人信息

  • 利用腳本竊取用戶的 Cookie 值,被害者在不知情的情況下,幫助攻擊者發(fā)送惡意請(qǐng)求

  • 顯示偽造的文章或圖片

XSS 是攻擊者利用預(yù)先設(shè)置的陷阱觸發(fā)的被動(dòng)攻擊。

跨站腳本攻擊屬于被動(dòng)攻擊模式,因此攻擊者會(huì)事先布置 好用于攻擊的陷阱。

2.2 SQL 注入攻擊

會(huì)執(zhí)行非法 SQL 的 SQL 注入攻擊。

SQL 注入(SQL Injection) 是指針對(duì) Web 應(yīng)用使用的數(shù)據(jù)庫(kù),通過(guò)運(yùn)行非法的 SQL 而產(chǎn)生的攻擊。可能會(huì)導(dǎo)致個(gè)人信息及機(jī)密信息的泄漏。

SQL 注入攻擊可能會(huì)造成以下等影響。

  • 非法查看或篡改數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)

  • 規(guī)避認(rèn)證

  • 執(zhí)行和數(shù)據(jù)庫(kù)服務(wù)器業(yè)務(wù)關(guān)聯(lián)的程序

SQL 注入是攻擊者將 SQL 語(yǔ)句改變成開(kāi)發(fā)者意想不到的形式以達(dá)到破壞結(jié)構(gòu)的攻擊。

2.3 OS 命令注入攻擊

OS 命令注入攻擊(OS Command Injection)是指通過(guò) Web 應(yīng)用,執(zhí)行非法的操作系統(tǒng)命令達(dá)到攻擊的目的。只要在能調(diào)用 Shell 函數(shù)的地方就有存在被攻擊的風(fēng)險(xiǎn)。

通過(guò) OS 注入攻擊可執(zhí)行 OS 上安裝著的各種程序。

2.4 HTTP 首部注入攻擊

HTTP 首部注入攻擊(HTTP Header Injection)是指攻擊者通過(guò)在響應(yīng)首部字段內(nèi)插入換行,添加任意響應(yīng)首部或主體的一種攻擊。屬于被動(dòng)攻擊模式。

向首部主體內(nèi)添加內(nèi)容的攻擊稱為 HTTP 響應(yīng)截?cái)喙簦℉TTP Response Splitting Attack)。

HTTP 首部注入攻擊可能會(huì)造成以下一些影響。

  • 設(shè)置任何 Cookie 信息

  • 重定向至任意 URL

  • 顯示任意的主體(HTTP 響應(yīng)截?cái)喙簦?/p>

濫用 HTTP/1.1 中匯集多響應(yīng)返回功能,會(huì)導(dǎo)致緩存服務(wù)器對(duì)任意內(nèi)容進(jìn)行緩存操作。這種攻擊稱為緩存污染。

2.5 郵件首部注入攻擊

郵件首部注入(Mail Header Injection)是指 Web 應(yīng)用中的郵件發(fā)送功能,攻擊者通過(guò)向郵件首部 TO 或 Subject 內(nèi)任意添加非法內(nèi)容發(fā)起的攻擊。利用存在安全漏洞的 Web 網(wǎng)站,可對(duì)任意郵件地址發(fā)送廣告郵件或病毒郵件。

2.6 目錄遍歷攻擊

目錄遍歷(Directory Traversal)攻擊是指對(duì)本無(wú)意公開(kāi)的文件目錄,通過(guò)非法截?cái)嗥淠夸浡窂胶?,達(dá)成訪問(wèn)的目的的一種攻擊。這種攻擊有時(shí)也稱為路徑遍歷(Path Traversal)攻擊。

2.7 遠(yuǎn)程文件包含漏洞

遠(yuǎn)程文件包含漏洞(Remote File Inclusion)是指當(dāng)部分腳本內(nèi)容需要從其他文件讀入時(shí),攻擊者利用指定外部服務(wù)器的 URL 充當(dāng)依賴文件,讓腳本讀取之后,就可運(yùn)行任意腳本的一種攻擊。

3. 因設(shè)置或設(shè)計(jì)上的缺陷引發(fā)的安全漏洞

因設(shè)置或設(shè)計(jì)上的缺陷引發(fā)的安全漏洞是指,錯(cuò)誤設(shè)置 Web 服務(wù)器,或是由設(shè)計(jì)上的一些問(wèn)題引起的安全漏洞。

3.1 強(qiáng)制瀏覽

強(qiáng)制瀏覽(Forced Browsing)安全漏洞是指,從安置在 Web 服務(wù)器的公開(kāi)目錄下的文件中,瀏覽那些原本非自愿公開(kāi)的文件。

強(qiáng)制瀏覽可能會(huì)造成以下一些影響。

  • 泄漏顧客的個(gè)人信息等重要情報(bào)

  • 泄漏原本需要具有訪問(wèn)權(quán)限的用戶才可以查閱的內(nèi)容

  • 泄漏未連到外界的文件

3.2 不正確的錯(cuò)誤消息處理

不正確的錯(cuò)誤消息處理(Error Handling Vulnerability)的安全漏洞是指,Web 應(yīng)用的錯(cuò)誤信息包含對(duì)攻擊者有用的信息。與 Web 應(yīng)用有關(guān)的主要錯(cuò)誤信息如下所示。

  • Web 應(yīng)用拋出的錯(cuò)誤信息

  • 數(shù)據(jù)庫(kù)等系統(tǒng)拋出的錯(cuò)誤信息

系統(tǒng)拋出的錯(cuò)誤主要集中在以下幾個(gè)方面。

  • PHP 或 ASP 等腳本錯(cuò)誤

  • 數(shù)據(jù)庫(kù)或中間件的錯(cuò)誤

  • Web 服務(wù)器的錯(cuò)誤

各系統(tǒng)應(yīng)對(duì)詳細(xì)的錯(cuò)誤消息進(jìn)行抑制設(shè)定,或使用自定義用戶消息,以避免某些錯(cuò)誤消息給攻擊者以啟發(fā)。

3.3 開(kāi)放重定向

開(kāi)放重定向(Open Redirect)是一種對(duì)指定的任意 URL 作重定向跳轉(zhuǎn)的功能。

可信度高的 Web 網(wǎng)站如果開(kāi)放重定向功能,則很有可能被攻擊者選中并用來(lái)作為釣魚(yú)攻擊的跳板。

4. 因會(huì)話管理疏忽引發(fā)的安全漏洞

會(huì)話管理就是用來(lái)管理用戶狀態(tài)的必備功能,但是如果在會(huì)話管理上有所疏忽,就會(huì)導(dǎo)致用戶的認(rèn)證狀態(tài)被竊取等后果。

4.1 會(huì)話劫持

會(huì)話劫持(Session Hijack)是指攻擊者通過(guò)某種手段拿到了用戶的會(huì)話 ID,并非法使用此會(huì)話 ID 偽裝成用戶,達(dá)到攻擊的目的。

會(huì)話劫持.png

具備認(rèn)證功能的 Web 應(yīng)用,使用會(huì)話 ID 的會(huì)話管理機(jī)制,作為認(rèn)證管理狀態(tài)的主流方式。會(huì)話 ID 中記錄客戶端的 Cookie 等消息,服務(wù)器會(huì)將會(huì)話 ID 與認(rèn)證狀態(tài)進(jìn)行一對(duì)一匹配管理。

攻擊者可能會(huì)獲得會(huì)話 ID 的幾種途徑如下所示。

  • 通過(guò)非正規(guī)的生成方法推測(cè)會(huì)話 ID

  • 通過(guò)竊聽(tīng)或 XSS 攻擊盜取會(huì)話 ID

  • 通過(guò)會(huì)話固定攻擊(Session Fixation)強(qiáng)行獲取會(huì)話 ID

4.2 會(huì)話固定攻擊

對(duì)以竊取目標(biāo)會(huì)話 ID 為主動(dòng)攻擊收到的會(huì)話劫持而言,會(huì)話固定攻擊(Session Fixation)攻擊會(huì)強(qiáng)制用戶使用攻擊者指定的會(huì)話 ID,屬于被動(dòng)攻擊。

4.3 跨站點(diǎn)請(qǐng)求偽造

跨站點(diǎn)請(qǐng)求偽造(Cross-Site Request Forgeries,CSRF)攻擊是指攻擊者通過(guò)設(shè)置好的陷阱,強(qiáng)制對(duì)已完成認(rèn)證的用戶進(jìn)行非預(yù)期的個(gè)人信息或設(shè)定信息等某些狀態(tài)更新,屬于被動(dòng)攻擊。

跨站點(diǎn)請(qǐng)求偽造有可能會(huì)造成以下等影響。

  • 利用已通過(guò)認(rèn)證的用戶權(quán)限更新設(shè)定信息等
  • 利用已通過(guò)認(rèn)證的用戶權(quán)限購(gòu)買商品
  • 利用已通過(guò)認(rèn)證的用戶權(quán)限在留言板上發(fā)表評(píng)論

5. 其他安全漏洞

5.1 密碼破解

密碼破解(Password Cracking)即算出密碼,突破認(rèn)證。

密碼破解有以下兩種手段。

  • 通過(guò)網(wǎng)絡(luò)的密碼試錯(cuò)

  • 對(duì)已加密密碼的破解(指攻擊者入侵系統(tǒng),已獲得加密或散列處理的密碼數(shù)據(jù)的情況)

除去突破認(rèn)證的攻擊手段,還有 SQL 注入攻擊逃避認(rèn)證,跨站腳本攻擊竊取密碼信息等方法。

通過(guò)網(wǎng)絡(luò)進(jìn)行密碼試錯(cuò)

對(duì) Web 應(yīng)用提供的認(rèn)證功能,通過(guò)網(wǎng)絡(luò)嘗試候選密碼進(jìn)行的一種攻擊。主要有以下兩種方式。

  • 窮舉法

    窮舉法(Brute-force Attack,又稱暴力破解法)是指對(duì)所有密鑰集合構(gòu)成的密鑰空間(Keyspace)進(jìn)行窮舉。用所有可行的候選密碼對(duì)目標(biāo)的密碼系統(tǒng)試錯(cuò),用以圖片驗(yàn)證的一種攻擊。

  • 字典攻擊

    字典攻擊是指利用事先收集好的候選密碼(經(jīng)過(guò)各種組合方式后存入字典),枚舉字典中的密碼,嘗試通過(guò)認(rèn)證的一種攻擊手段。

窮舉法和字典攻擊.png

對(duì)已加密密碼的破解

破解已加密的密碼.png

從加密過(guò)的數(shù)據(jù)中導(dǎo)出明文通常有以下幾種方法

  • 通過(guò)窮舉法·字典攻擊進(jìn)行類推

    針對(duì)密碼使用散列函數(shù)進(jìn)行加密處理的情況,采用和窮舉法或字典攻擊相同的手法,嘗試調(diào)用相同的散列函數(shù)加密候選密碼,然后把計(jì)算出的散列值與目標(biāo)散列值進(jìn)行匹配,類推出密碼。

    通過(guò)窮舉法·字典攻擊進(jìn)行類推.png
  • 彩虹表

    彩虹表(Rainbow Table)是由明文密碼及與之對(duì)應(yīng)的散列值構(gòu)成的一張數(shù)據(jù)庫(kù)表,是一種通過(guò)事先制作龐大的彩虹表,可在窮舉法·字典攻擊等實(shí)際破解過(guò)程中縮短消耗時(shí)間的技巧。從彩虹表內(nèi)搜索散列值就可以推導(dǎo)出對(duì)應(yīng)的明文密碼。

    彩虹表.png
  • 拿到密鑰

    使用共享密鑰加密方式對(duì)密碼數(shù)據(jù)進(jìn)行加密處理的情況下,如果通過(guò)某種手段拿到加密使用的密鑰,也就可以對(duì)密碼數(shù)據(jù)解密了。

  • 加密算法的漏洞

    考慮到加密算法本身可能存在的漏洞,利用該漏洞嘗試解密也是一種可行的方法。

5.2 點(diǎn)擊劫持

點(diǎn)擊劫持(Clickjacking)是指利用透明的按鈕或鏈接做成陷阱,覆蓋在 Web 頁(yè)面之上。然后誘使用戶在不知情的情況下,點(diǎn)擊那個(gè)鏈接訪問(wèn)內(nèi)容的一種攻擊手段。這種行為又稱界面?zhèn)窝b (UI Redressing)。

點(diǎn)擊劫持.png
5.3 Dos 攻擊

DoS 攻擊(Denial of Service attack)是一種讓運(yùn)行中的服務(wù)呈停止?fàn)顟B(tài)的攻擊。有時(shí)也叫做服務(wù)停止攻擊或拒絕服務(wù)攻擊。DoS 攻擊的對(duì)象不僅限于 Web 網(wǎng)站,還包括網(wǎng)絡(luò)設(shè)備及服務(wù)器等。

主要有以下兩種方式實(shí)現(xiàn) DoS 攻擊。

  • 集中利用訪問(wèn)請(qǐng)求造成資源過(guò)載,資源用盡的同時(shí),實(shí)際上服務(wù)也就呈現(xiàn)停止?fàn)顟B(tài)

  • 通過(guò)攻擊安全漏洞是服務(wù)停止

DoS 攻擊.png

多臺(tái)計(jì)算機(jī)發(fā)起的 DoS 攻擊稱為 DDoS 攻擊(Distuibuted Denial of Service attack)。DDoS 攻擊通常利用那些感染病毒的計(jì)算機(jī)作為攻擊者的攻擊跳板。

5.4 后門程序

后門程序(Backdoor)是指開(kāi)發(fā)設(shè)置的隱藏入口,可不按正常步驟使用受限功能,利用后門程序就能夠使用原本受限制的功能。

通常的后門程序可分為以下 3 種類型。

  • 開(kāi)發(fā)者為了自身利益植入的后門程序

  • 攻擊者通過(guò)某種方法設(shè)置的后門程序

完結(jié)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容