這是我寫的第一篇漏洞懸賞文章,所以請對我寬容些!

所以我在Hackerone的一個程序中發現了這個XSS。而這個存儲XSS的有趣之處在於,插入的payload是在哪個頁面生效,這也是我在試著升級Self-XSS時幸運發現的。

我也不能透露這個程序名稱,因為他們要求保密,但如果你找到它,我也不會感到驚訝。

現在讓我們深入到這個漏洞站點,讓我們稱之為redacted.com

在對redacted.com研究了幾個小時並試圖在其上找到一個XSS時,我認為在這是不可能的,因為它正確地編碼了所有敏感字元。即使我最終找到了一個,也是一個Self-XSS。

這不是一個大站點,在每個輸入點都嘗試了XSS之後,我放棄了,開始尋找其他類型的漏洞。

但是,第二天,我在Hackerone讀了一篇關於AngularJS中模板注射的文章( hackerone.com/reports/2 ),我感覺突然被啟發了,貌似redacted.com也運行著AngularJS。

所以我嘗試插入了一個簡單的表達式,如{{4*4}},如果後端對其不進行編碼過濾,它將顯示16,最後我找到一個不存在安全編碼的頁面。現在,我已擁有一個有用的xss payload {{constructor.constructor(『alert(「XSS」)』)()}}。

哎呀!!!!我成功找到了XSS,但一分鐘後我意識到……該死,是個Self-XSS!!!!

現在怎麼辦?????

又經過數小時的測試,我發現了一個有趣的地方,它可以執行這個payload,並且不需要任何身份驗證。

在此這個程序的背景,它有一個功能,就是可以通過電子郵件發送報告(無論這個網站做了什麼),我們可以給這個報告自定義一個名字。這些報告是非常敏感的,只能被授權用戶查看。而我發現這個報告的名字也存在Self-XSS,並且由於這些報告只能由授權用戶查看,所以無法對其他用戶發動XSS攻擊。真的是這樣嗎????

當我使用這個功能,通過電子郵件向我的郵箱發送了一份報告時,我在郵件角落裡發現了一個小小的退訂鏈接。

打開它,BOOM!!!!它展示的頁面會出現這個報告名稱,並且無任何身份驗證。

接下來測試該頁面是否會對{{}}進行編碼

我快速地轉到我的報告頁面,將報告名稱命名為{{constructor.constructor(『alert(「XSS」)』)()}},確定保存。再次打開取消訂閱鏈接,BOOM!這就是一個存儲XSS!

現在,當任何人打開這個該取消訂閱鏈接時,這個XSS都會執行。不管受害者是否有授權,攻擊都會生效。

經驗教訓:

1)查看程序上運用了哪些技術模板,方便找到特定的漏洞。

2)當你感到無聊的時候,盡量閱讀些老的黑客報告。

3)盡量多的嘗試——我閱讀了大量的報告和記錄,但是從未看到在電子郵件退訂鏈接中存在XSS的報告。我本可以這只是一個Self-XSS,沒想到最終成了一個新的存儲XSS,我付出了更多的時間,並得到幸運女神的眷顧。

時間線:

09/10/2018-提交報告

10/10/2018-漏洞分級

11/10/2018-獎勵發放

22/10/2018-問題關閉

謝謝閱讀。

來源:從Self-XSS到一個有趣的存儲XSS|NOSEC安全訊息平台 - NOSEC.ORG

白帽匯從事信息安全,專註於安全大數據、企業威脅情報。

公司產品:FOFA-網路空間安全搜索引擎、FOEYE-網路空間檢索系統、NOSEC-安全訊息平台。

為您提供:網路空間測繪、企業資產收集、企業威脅情報、應急響應服務。


推薦閱讀:
相关文章