什麼是HTTP標頭注入?
HTTP標頭注入漏洞是一個Web應用程式安全性的術語,指當攻擊者誘騙web應用到插入額外的HTTP頭到合法的HTTP響應。HTTP標頭注入是一種可用於促進惡意攻擊的技術,例如跨站點指令碼、Web快取中毒等。反過來,這些可能會導致資訊洩露、您的應用程式被用於網路釣魚攻擊以及其他嚴重後果。
HTTP 標頭注入是一種更通用的攻擊類別的特定案例:CRLF注入。如果攻擊者能夠在響應中注入CRLF序列(回車和換行),他們就能夠新增各種虛假條目或更改現有資料:不僅是標題,甚至是整個響應正文。
什麼導致HTTP標頭注入漏洞?
就像大多數 Web 應用程式安全漏洞一樣,HTTP標頭注入漏洞(以及一般的CRLF注入漏洞)是過度信任使用者輸入的結果。如果 Web 應用程式的開發人員直接在 HTTP 響應中使用外部資料,則通常可以執行 HTTP 標頭注入攻擊。
例如,假設您的業務轉移到一個新域,並且為了方便起見,您希望使用者書籤仍然有效。原始域是example.com但現在您的站點可以在example.info 上找到。如果您的普通使用者訪問過時的 URL,例如,您希望 Web 伺服器自動將使用者重定向到相應的新 URL:。
為了實現上述目標,您可以在example.com構建一個簡單的 Web 應用程式,該應用程式從 HTTP 請求中獲取路徑並將其附加到。如果該應用程式的開發人員在將輸入資料附加到新的基本 URL 之前沒有從輸入資料中消除 CR 和 LF 特殊字元,則攻擊者可能會使用該應用程式執行 HTTP 標頭注入攻擊。
HTTP標頭注入攻擊剖析
HTTP 標頭注入攻擊在許多方面類似於跨站點指令碼 (XSS) 攻擊。因此,存在反射 HTTP 標頭注入攻擊和(不太常見的)儲存 HTTP 標頭注入攻擊。
反射HTTP標頭注入
假設您是example.com域的所有者,並且攻擊者想要利用上述 HTTP 標頭注入漏洞。他們準備網路釣魚活動併傳送以下 URL:
%0d%0aLocation:vulnweb.com
作為 HTTP 標頭注入的結果,CRLF 字元被插入到響應中,然後是一個新的Location:標頭。Web 瀏覽器(取決於瀏覽器型別和配置)會將使用者重定向到攻擊者的站點(此處:vulnweb.com)。
儲存的HTTP標頭注入
儲存 HTTP 標頭注入漏洞和相關攻擊非常罕見。在這種情況下,惡意使用者輸入由 Web 應用程式儲存,例如儲存在資料庫中,然後直接用於傳送給其他使用者的 HTTP 響應。
就像儲存跨站點指令碼漏洞一樣,儲存 HTTP 標頭注入更危險,因為它可能會影響訪問您的網站或使用您的 Web 應用程式的所有使用者。
HTTP 標頭注入攻擊的後果
上面描述了 HTTP 標頭注入攻擊的最簡單案例 - 攻擊者可能會直接利用 HTTP 標頭注入漏洞將您的域作為網路釣魚攻擊的基礎。
但是,HTTP 標頭注入還有更多潛在的後果。例如,攻擊者可能會使用 HTTP 標頭注入來注入新的標頭,從而放鬆同源策略安全限制,從而可以執行其他原本不可能進行的攻擊,例如CSRF。
HTTP 標頭注入攻擊的另一個潛在用途是 HTTP 響應拆分。在這種情況下,攻擊者不僅會注入新的 HTTP 響應標頭,還會注入整個響應主體。使用Content-Length標頭,他們能夠讓受害者的瀏覽器完全忽略響應的合法主體(以及剩餘的合法標頭)。
由於CRLF注入的影響通常可能很嚴重(類似於跨站點指令碼的影響),儘管OWASP Top 10 中沒有特別提到這些漏洞,但不應掉以輕心。
由於HTTP標頭注入是 CRLF 序列不正確中和的結果,因此避免此類漏洞的最佳方法是在HTTP響應中使用之前對來自使用者輸入的 CRLF 序列進行編碼。這還可以防止其他利用CRLF注入的攻擊的後果,這甚至可能導致敏感資訊洩露、日誌檔案損壞或程式碼執行。
參讀連結:
https://www.acunetix.com/blog/web-security-zone/http-header-injection/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2797253/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼是 標頭檔案
- 什麼是依賴注入依賴注入
- 什麼是控制反轉(IOC)?什麼是依賴注入?依賴注入
- C語言標頭檔案到底是什麼?C語言
- Python urllib HTTP頭注入漏洞PythonHTTP
- 通過 HTTP 頭進行 SQL 注入HTTPSQL
- HTTP協議是什麼?HTTP協議
- 什麼是命令注入?如何形成的?
- HTTP X-Forwarded-For是什麼?HTTPForward
- 什麼是智慧指標?為什麼要用智慧指標?指標
- 什麼是SQL遊標?SQL
- 專案目標是什麼
- HTTP協議是什麼?HTTP怎樣工作?-VeCloudHTTP協議Cloud
- 什麼是HTTP? HTTP 和 HTTPS 的區別?HTTP
- 什麼是http代理伺服器,有什麼作用?HTTP伺服器
- HTTP和HTTPS是什麼 二者區別是什麼HTTP
- HTTP狀態程式碼是什麼?HTTP
- HTTP速度慢是什麼原因?HTTP
- 什麼是HTTP快取機制?HTTP快取
- 什麼是資料標註,它的用途是什麼?
- 什麼是URL?協議頭,路徑和埠是什麼意思?協議
- 什麼是URL?協議頭、路徑和埠是什麼意思?協議
- 什麼是http代理,什麼是socks5代理?兩者有什麼不同?HTTP
- 什麼是特徵標準化特徵
- 什麼是軟體版本標誌
- 軟體測試的准入準出是什麼?標準是什麼?
- 什麼是 WebSocket,它與 HTTP 有何不同?WebHTTP
- 什麼是HTTP 304狀態程式碼?HTTP
- 為什麼不在標頭檔案做定義
- DevOps的目標是什麼?有什麼好處?dev
- CRM智慧招投標功能是什麼?有什麼用?
- 網際網路的盡頭是什麼?
- 解密CSRF、CORS和HTTP安全標頭 - vnaik解密CORSHTTPAI
- HTTP標頭學習總結歸納HTTP
- 關於傳送Http標頭檔案HTTP
- 【Python小知識】什麼是HTTP和HTTPS?有什麼不同?PythonHTTP
- 什麼是正、反向海外HTTP代理?兩者各有什麼用處?HTTP
- 什麼是Java Marker Interface(標記介面)Java