91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么利用CSS注入竊取CSRF令牌

發布時間:2021-08-09 11:03:39 來源:億速云 閱讀:218 作者:chen 欄目:網絡管理

這篇文章主要講解了“怎么利用CSS注入竊取CSRF令牌”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么利用CSS注入竊取CSRF令牌”吧!

CSS相信大家不會陌生,在百度百科中它的解釋是一種用來表現HTML(標準通用標記語言的一個應用)或XML(標準通用標記語言的一個子集)等文件樣式的計算機語言。那么,它僅僅只是一種用來表示樣式的語言嗎?當然不是!其實早在幾年前,CSS就已被安全研究人員運用于滲透測試當中。這里有一篇文章就為我們詳細介紹了一種,使用屬性選擇器和iFrame,并通過CSS注入來竊取敏感數據的方法。但由于該方法需要iFrame,而大多數主流站點都不允許該操作,因此這種攻擊方法并不實用。

這里我將為大家詳細介紹一種不需要iframe且只需10秒,就能為我們有效地竊取CSRF token的方法

一旦用戶的CSRF token被竊取,由于受害者已經在攻擊者的網站上,因此攻擊者可以繼續攻擊并完成對用戶的CSRF攻擊操作。

背景

正如原文所描述的那樣,CSS屬性選擇器開發者可以根據屬性標簽的值匹配子字符串來選擇元素。 這些屬性值選擇器可以做以下操作:

  • 如果字符串以子字符串開頭,則匹配

  • 如果字符串以子字符串結尾,則匹配

  • 如果字符串在任何地方包含子字符串,則匹配

屬性選擇器能讓開發人員查詢單個屬性的頁面HTML標記,并且匹配它們的值。一個實際的用例是將以“https://example.com”開頭的所有href屬性變為某種特定的顏色。

而在實際環境中,一些敏感信息會被存放在HTML標簽內。在大多數情況下CSRF token都是以這種方式被存儲的:即隱藏表單的屬性值中。

這使得我們可以將CSS選擇器與表單中的屬性進行匹配,并根據表單是否與起始字符串匹配,加載一個外部資源,例如背景圖片,來嘗試猜測屬性的起始字母。

通過這種方式,攻擊者可以進行逐字猜解并最終獲取到完整的敏感數值。

想要解決這個問題受害者可以在其服務器實施內容安全策略(CSP),防止攻擊者從外部加載CSS代碼。

無iFrames

要做到無iFrame,我將使用一種類似于之前我討論過的方法:我將創建一個彈窗,然后在設置計時器后更改彈出窗口的位置。

使用這種方法,我仍然可以加載受害者的CSS,但我不再依賴于受害者是否允許iFrame。因為最初的彈出是通過用戶事件觸發的,所以我并沒有被瀏覽器阻止。

為了強制重載,我在CSS注入間彈出一個虛擬窗口,如下:

var win2 = window.open('https://security.love/anything', 'f', "top=100000,left=100000,menubar=1,resizable=1,width=1,height=1")
var win2 = window.open(`https://security.love/cssInjection/victim.html?injection=${css}`, 'f', "top=100000,left=100000,menubar=1,resizable=1,width=1,height=1")

沒有后端服務器

在CureSec的文章中描述了將數據傳輸到后端服務器,但由于CSRF是針對客戶端的攻擊,因此如果我們能想出一種不需要服務器的方法,那么就可以為我們節省大量的開銷和簡化我們的操作。

為了接收受害者客戶端加載資源,我們可以利用Service Workers來攔截和讀取請求數據。Service Workers目前只適用于同源請求,在我的演示中受害者和攻擊者頁面已處于同一源上。

不過不久后,chrome很可能會合并這個實驗性的功能,允許Service Workers攔截跨域請求。

這樣,就可以確保我們在客戶端的攻擊100%的執行,并強制用戶在10秒內點擊鏈接執行CSRF攻擊,演示如下:

Demo

如上所述,因為我并不想運行一個web服務器,所以我使用service workers攔截和模擬服務器端組件。目前,該演示只適用于Chrome瀏覽器。

首先,我創建了一個易受攻擊的目標,它存在一個基于DOM的CSS注入漏洞,并在頁面放置了一個敏感token。我還對腳本標簽添加了一些保護措施,對左尖括號和右尖括號進行了編碼。

<form action="https://security.love" id="sensitiveForm"><input type="hidden" id="secret" name="secret" value="dJ7cwON4BMyQi3Nrq26i">
</form>
<script src="mockingTheBackend.js"></script>
<script>var fragment = decodeURIComponent(window.location.href.split("?injection=")[1]);
    var htmlEncode = fragment.replace(/</g,"&amplt;").replace(/>/g,"&ampgt;");
    document.write("<style>" + htmlEncode + "</style>");
</script>

接下來,我們將強制加載受害者的CSS,并且使用上述方法,可一次竊取(猜解)一個敏感字符。

在接收端,我已經定義了一個攔截請求的service worker,并通過post-message將它們發送回域,然后我們將token存儲在本地存儲中以供后續使用。你也可以想象一個后端Web服務器,通過Web套接字或輪詢將CSRF token回發給攻擊者域。

目前該測試僅支持CHROME:

demo

如果你的瀏覽器支持的話,只需點擊打開頁面任意位置,你將看到CSRF token將逐一被猜解出來。

結語

有趣的是,反射型CSS注入實際上比存儲型CSS注入更致命,因為存儲型CSS注入需要一個服務器在受害者渲染之前來更新CSS。

一段時間以來,CSS注入在嚴重程度上來回變化。過去IE瀏覽器是允許用戶在CSS中執行Javascript代碼的。這個演示也從某種程度上表明了CSS注入,以及在你的域上渲染不受信任的CSS仍會導致嚴重的安全問題。

感謝各位的閱讀,以上就是“怎么利用CSS注入竊取CSRF令牌”的內容了,經過本文的學習后,相信大家對怎么利用CSS注入竊取CSRF令牌這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

虎林市| 怀宁县| 黄陵县| 陆川县| 神农架林区| 满洲里市| 新乡市| 社会| 新兴县| 石门县| 利辛县| 长乐市| 方正县| 北京市| 图片| 随州市| 安国市| 庆云县| 梨树县| 广西| 黎川县| 巫山县| 洛南县| 顺昌县| 剑阁县| 湟源县| 凌海市| 农安县| 九龙坡区| 青铜峡市| 阿巴嘎旗| 东辽县| 无棣县| 金堂县| 申扎县| 仁布县| 合江县| 竹溪县| 苏尼特右旗| 凌海市| 桦甸市|