Web緩存投毒對多個HTTP頭結合攻擊實踐

Web緩存投毒對多個HTTP頭結合攻擊實踐

某些網站容易受到簡單的Web緩存中毒攻擊。但是,有一些其他網站需要攻擊者使用更復雜的攻擊,並且僅在攻擊者能夠操縱多個 unkeyed 輸入的請求時才變得脆弱。

例如,假設一個網站要求使用HTTPS進行安全通信。爲了強制執行此操作,如果收到使用其他協議的請求,則網站會動態生成一個使用HTTPS的自身重定向:

GET /random HTTP/1.1
Host: innocent-site.com
X-Forwarded-Proto: http

HTTP/1.1 301 moved permanently
Location: https://innocent-site.com/random

就其本身而言,這種行爲並不一定很容易受到攻擊。但是,通過將此與我們先前瞭解的有關動態生成的URL中的漏洞的知識相結合,攻擊者可能利用此行爲來生成可緩存的響應,該響應將用戶重定向到惡意URL。

攻擊步驟

第一步還是老樣子,打開bp,設置好瀏覽器代理,訪問首頁,然後看bp的 http history
在這裏插入圖片描述

今天需要關注下面兩個請求:
在這裏插入圖片描述

我們把這兩個請求發送到bp的repeater模塊進行觀察。

直接把第二個對js的請求重發一次觀察到返回結果如下,響應正常:
在這裏插入圖片描述

然後我們試着在請求包頭中加入一個我們之前加入過的http頭 X-Forwarded-Host ,值隨便填一個域名,例如: listone.site (我的博客域名,好久沒更新了,可以忽略),我們再次觀察返回結果:
在這裏插入圖片描述

好像結果並沒有什麼改變,先把這個 X-Forwarded-Host 頭刪掉,添加一個 X-Forwarded-Scheme 頭,值爲 nohttps ,這時我們就可以觀察到響應爲一個302重定向,但是它指向的還是原來網站的js文件,好像還是沒辦法利用,彆着急,下面我們再次添加上 X-Forwarded-Host 頭再觀察一下:

在這裏插入圖片描述

我們再次把 X-Forwarded-Host 頭加上,值還爲 listone.site 然後我們再次觀察返回結果,會有不一樣的驚喜哦:
在這裏插入圖片描述

我們可以看到,我們加上 X-Forwarded-Host 頭後,返回結果會將我們重定向到 https://listone.site/resources/js/tracking.js 這個js文件上,如果這個請求被緩存,並且我們把js文件變成攻擊腳本,那所有訪問主頁的用戶都會被攻擊,下面我們把漏洞利用服務器上的js腳本改成攻擊腳本 alert(document.cookie) ,把X-Forwarded-Host 的值改成我們漏洞利用服務器的網址 ac831f411f6a57f3801b053a014b0078.web-security-academy.net ,然後觀察返回結果:
在這裏插入圖片描述

返回結果就會把用戶瀏覽器重定向到我們攻擊腳本上。

在這裏插入圖片描述

然後我們去再次訪問首頁:

就可看到攻擊效果了,瀏覽器會執行我們的攻擊腳本,彈出一個框,顯示腳本執行的內容了。
在這裏插入圖片描述

這個攻擊需要多個http頭進行配合才能進行有效的攻擊,所以這個攻擊成本比起之前的要高一些。

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