OWASP靶機解題筆記_WebGoat_General篇

一、如何訪問General

通過瀏覽器訪問http://IP,然後在web頁面點擊進入OWASP WebGoat
在這裏插入圖片描述
點擊後需輸入OWASP靶機賬號密碼授權root/owaspbwa
在這裏插入圖片描述
在這裏插入圖片描述
點擊Start WebGoat 開始你的學習之旅吧!

二、General內容介紹及解題

本次學習過程,使用Burp Suite工具代替WebScarab工具進行HTTP數據包的攔截,Burp Suite工具的使用可自行上網學習,B站也有大量的教學視頻。

1、Http Basics

第一關只是爲了讓你熟悉WebGoat的操作,通過發送HTTP請求來查看HTTP請求包的基本信息。
在這裏插入圖片描述
在輸入框輸入,Burp Suite開啓攔截,便可獲得HTTP請求包數據。
在這裏插入圖片描述
及其HTTP響應包信息
在這裏插入圖片描述

2、HTTP Splitting

本題分爲兩個階段。第1階段教您如何進行HTTP拆分攻擊,而第2階段則在此基礎上教您如何將HTTP拆分提升爲緩存中毒。

HTTP響應拆分攻擊原理:

通常情況下,http協議一個請求對應一個響應。HTTP響應頭攻擊把代碼嵌入到用戶信息中並放在HTTP頭部,也發生在把用戶信息和代碼嵌入到重定向到的URL中,或者把腳本嵌入到cookie值或者name裏。在第一條響應中,重定向的URL是HTTP響應頭的一部分,第二條響應是確定cookie,cookie中的name/value是響應頭中set-cookie的一部分。

關於CR/LF的字符編碼:CR = %0d = /r;LF = %0a = /n

HTTP響應拆分攻擊的應對措施:

◆響應拆分攻擊:使用服務器端驗證機制,並禁止全部用戶在任何與響應頭有關的輸入請求中使用回車換行符(即CR/LF)。
◆XSS攻擊:引入白名單、黑名單過濾機制(輸入驗證)以及Escape HTML(輸出驗證)。
◆CSRF攻擊:使用AntiCsrf語言符號,這樣攻擊者就無法準確預測目標結構,自然也不能對其加以僞造了。

HTTP響應拆分攻擊的總結:

響應拆分式攻擊只能在多個用戶使用相同代理服務器連接不同網站時奏效。代理服務器的緩存一旦受到感染,用戶就會在從代理服務器緩存中讀取該頁面時遭到攻擊。 不過請注意,並非所有代理服務器都在響應拆分方面存在漏洞,雖然這算是句題外話。如果大家有興趣進一步瞭解這種攻擊,我強烈建議大家閱讀由Amit Klein撰寫的精彩論文。

關於HTTP響應拆分攻擊詳細講解可參考一下鏈接:
https://www.cnblogs.com/milantgh/p/3755276.html
https://blog.csdn.net/rainzuoshao/article/details/9088575

解題方法

在輸入框輸入後提交,通過Burp Suite抓包,能發現302響應重新指向的結果可由用戶控制,用戶可將該值設置爲任何想要的內容,這特徵爲HTTP拆分攻擊提供了可能。
在這裏插入圖片描述
在這裏插入圖片描述
因此,我們可以通過內容構建第二個響應內容:

en
Content-Length: 0

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 31
<html>Hello word</html>

通過URL Encode編碼可得到·:

en%0AContent-Length%3A%200%0A%0AHTTP%2F1.1%20200%20OK%0AContent-Type%3A%20text%2Fhtml%0AContent-Length%3A%2031%0A%3Chtml%3EHello%20word%3C%2Fhtml%3E

在輸入框內輸入內容,便實現了HTTP拆分攻擊,通過抓包,能發現第二次響應的包。
在這裏插入圖片描述
在這裏插入圖片描述
返回刷新webgoat頁面,出現下圖內容,該題便通過了。
在這裏插入圖片描述
根據HTTP拆分攻擊,可以嘗試更加深入的測試,比如通過響應拆分實現跨站點腳本:

en
Content-Length: 0

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 31
<html><script>alert('Hello word')</script></html>

通過URL Encode編碼後,寫入輸入框,發現可在拆分攻擊的基礎上實現XSS攻擊。

在這裏插入圖片描述

3、 Cache Poisoning

該題爲在HTTP拆分攻擊的基礎上進行緩存中毒。
Web緩存投毒的目的是發送導致有害響應的請求,將該響應將保存在緩存服務中並提供給其他用戶。
它的攻擊方式是通過X-Forwarded-Host頭,發送導致有害響應的請求,該響應將保存在緩存中並提供給其他用戶,其他用戶訪問到此頁面時將不是正常頁面,而是被攻擊者“中毒”之後的的頁面,產生的危害通常是XSS,也可能導致信息泄露。除了使用這個HTTP頭來破壞緩存,還可以使用HTTP響應拆分(CRLF)和請求走私(RequestSmuggling)來完成攻擊。
關於緩存中毒的詳細講解可參考:
https://www.anquanke.com/post/id/156356
https://cloud.tencent.com/developer/article/1516385

因此可在第二個響應可嘗試修改標頭實現效果:
– Last-Modified (通過If-Modified-Since標頭進行檢查)
– ETag (通過If-None-Match標頭進行檢查)

解題方法

在HTTP拆分的基礎上,將Last-Modified修改成未來時間:

en
Content-Length: 0

HTTP/1.1 200 OK
Content-Type: text/html
Last-Modified: Mon, 27 Oct 2025 14:50:18 GMT
Content-Length: 31
<html>Hello word</html>

將內容進行URL Encode編碼,得到:

en%0AContent-Length%3A%200%0A%0AHTTP%2F1.1%20200%20OK%0AContent-Type%3A%20text%2Fhtml%0ALast-Modified%3A%20Mon%2C%2027%20Oct%202025%2014%3A50%3A18%20GMT%0AContent-Length%3A%2031%0A%3Chtml%3EHello%20word%3C%2Fhtml%3E

注意:在該題中,需要將所有的%0A替換成%0D%0A

en%0D%0AContent-Length%3A%200%0D%0A%0D%0AHTTP%2F1.1%20200%20OK%0D%0AContent-Type%3A%20text%2Fhtml%0D%0ALast-Modified%3A%20Mon%2C%2027%20Oct%202025%2014%3A50%3A18%20GMT%0D%0AContent-Length%3A%2031%0D%0A%3Chtml%3EHello%20word%3C%2Fhtml%3E

填入輸入框,提交,出現下圖情況,則解題成功。
在這裏插入圖片描述

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