一項新的研究確定了四種針對HTTP請求走私攻擊的新變種,它們可以針對各種商用Web服務器和HTTP代理服務器。
在今天的黑帽安全會議上,SafeBreach的安全研究副總裁Amit Klein展示了這一發現,他說,這些攻擊突出表明,web服務器和HTTP代理服務器容易受到HTTP請求走私攻擊的影響,據記錄首次發現至今已有15年的歷史。
什么是HTTP請求走私?
HTTP請求走私(或HTTP異步)是一種用于干擾網站處理、從一個或多個用戶接收的HTTP請求序列的方式的技術。
當前端服務器(負載平衡器或代理)和后端服務器以不同的方式處理HTTP請求的邊界時,通常會出現與HTTP請求走私有關的漏洞,從而使不良行為者發送優先于下一個合法用戶請求歧義請求。
不同步的請求可被利用來劫持憑據,向用戶注入響應;甚至從受害者的請求中竊取數據,將信息泄露給攻擊者控制的服務器。
這項技術是由Watchfire的一組研究人員于2005 年首次證明的,這些研究人員包括Klein,Chaim Linhart,Ronen Heled和Steve Orrin。
但是在過去的十幾年中,在攻擊面也隨之進行了擴展,例如:將請求拼接成其他請求,獲得對內部API的最大權限訪問;污染Web緩存;破壞流行應用程序的登錄頁面。
什么是新的?
Klein公開的新變體涉及使用各種代理服務器組合,包括在Web服務器模式下的Aprelium的Abyss,Microsoft IIS,Apache和Tomcat,以及在HTTP代理模式下的Nginx,Squid,HAProxy,Caddy和Traefik。
所有四個新變體的列表如下,最后添加包括一個由研究人員在實驗中成功利用的舊變體。
變體1:“標頭SP / CR垃圾郵件:……”
變式2 –“等待”
變體3 – HTTP / 1.2繞過類似于mod_security的防御
變式4 –一個簡單的解決方案
變式5 –“ CR標頭”
例如,在處理包含兩個Content-Length標頭字段的HTTP請求時,發現Abyss接受第二個標頭為有效,而Squid使用第一個Content-Length標頭,從而導致兩個服務器以不同的方式解釋請求并實現請求走私。
在Abyss收到長度小于指定的Content-Length值的主體的HTTP請求的情況下,它將等待30秒以完成該請求,但不會忽略該請求的其余主體。
Klein發現,這也導致Squid與Abyss之間存在差異,后者會將HTTP請求的部分解釋為第二個請求。
攻擊的第三種形式使用HTTP / 1.2來規避OWASP ModSecurity中定義的WAF防御用于防止HTTP請求走私攻擊的核心規則集(CRS)會生成觸發該行為的惡意有效負載。
最后,克萊因(Klein)發現使用“ Content-Type:text / plain”標頭字段足以繞過CRS中指定的級別檢查,并產生HTTP請求走私漏洞。
有哪些可能的防御措施?
在將發現披露給Aprelium,Squid和OWASP CRS之后,問題已在Abyss X1 v2.14,Squid版本4.12和5.0.3和CRS v3.3.0中修復。
呼吁規范來自代理服務器的出站HTTP請求,Klein強調了對開源、應用要求硬核的Web應用程序防火墻解決方案的需求,該解決方案能夠處理HTTP請求走私攻擊。
Klein指出:“ ModSecurity(與CRS結合使用)確實是一個開源項目,但是就通用性而言,Mod Security具有多個缺點。” “它不能提供針對HTTP請求走私的全面保護,并且僅可用于Apache,IIS和nginx。”
為此,Klein發布了一個基于C++的庫,通過嚴格遵守HTTP標頭格式和請求行格式來確保所有傳入的HTTP請求是完全合規且明確的。可以從GitHub訪問它。
-
服務器
+關注
關注
12文章
9203瀏覽量
85527 -
網絡安全
+關注
關注
10文章
3172瀏覽量
59841 -
HTTP
+關注
關注
0文章
510瀏覽量
31289
發布評論請先 登錄
相關推薦
評論