你聽過Web Cache,那Web Cache Poison呢?
Cache就是將內容留存一份在Cache Server/Service中,讓有同樣需求的用戶可以直接取用,達到降低Web Server loading和延遲的效果
然而,若是沒有妥善的處理Cache的操作和行為的話,可能就能讓攻擊者能夠透過一些手段,對Cache投毒(Poison),使其他使用到Cache的普通用戶受到威脅。
這種技術通常不是直接性的攻擊,而常與其他Attack Vector結合,甚至可以將依些低影響的漏洞變得更加危險,例如攻擊者在網頁上找到一個R-XSS,若透過Cache Poison的方式,就可以將R-XSS簡單的擴大影響範圍,導致用戶的cookie被竊取。
或是透過Open redirect將普通用戶route到攻擊者架設的web service中,並攜帶原網站的各種資訊(cookie)傳送到攻擊者的惡意web service中,達到大規模帳戶接管。
能做到Web Cache Poison的方法有很多,例如[Day4]的HTTP Request Smuggling和[Day8]的HTTP Response Splitting和下面Case Study中的unkey header都可以做到。
在2018年portswigger的研究中,利用了unkeyed inputs來做到Poison Cache,像是X-Forwarded-Host和X-Original-URL。
red hat的homepage就被發現了這個問題,在X-Forwarded-Host中插入XSS的惡意內容,並確定其被加入Cache中。這就導致了在Cache還存在的時間段內,普通用戶只要瀏覽到該網頁,就會收到XSS的攻擊,而且無法做出好的防範。更多內容可以參考PortSwigger