怎么綜合利用Self-XSS和OAuth錯誤配置實現(xiàn)Stored-XSS

怎么綜合利用Self-XSS和OAuth錯誤配置實現(xiàn)Stored-XSS,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)科技有限公司專業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供四川雅安電信機房高防主機,成都IDC機房托管,成都主機托管等互聯(lián)網(wǎng)服務(wù)。

下面是對Self-XSS和OAuth錯誤配置兩個低危漏洞的組合利用,形成Stored XSS的一個梳理過程,僅當思路拓展。由于測試保密原因,目標測試網(wǎng)站用redacted.com來代替描述。

漏洞發(fā)現(xiàn)

在HackerOne平臺參與的一個邀請測試項目中,我發(fā)現(xiàn)了一個AngularJS 客戶端模板的Self XSS漏洞和一個OAuth實現(xiàn)的錯誤配置漏洞,單獨來看,這兩個漏洞都屬于低風險漏洞,形成不了嚴重的隱患影響。但經(jīng)過我對它們的組合利用,就可以形成一個完美的Stored XSS !

目標測試網(wǎng)站redacted.com,它主要提供文件存儲服務(wù),有點像Google Drive 和 DropBox的樣子,用戶通過注冊使用這個平臺,可以實現(xiàn)文件的上傳、下載和分享。

存在XSS的地方位于待上傳文件的文件名處,如果把待上傳文件的文件名改為{{constructor.constructor(‘a(chǎn)lert(1)’)()}}.jpg這種樣式,就會在上傳文件管理面板中導致XSS,啊,可它卻是一個Self XSS。

后經(jīng)測試,有一種簡單的方法可以讓這個Self XSS轉(zhuǎn)變?yōu)镾tored XSS,那就是向其它用戶共享文件的上傳鏈接,當文件被以相同的文件名從上傳面板中導入時,就會導致Stored XSS。但在這里,我還要展示另外一種轉(zhuǎn)變?yōu)镾tored XSS的有趣方式。

OAuth錯誤配置

在設(shè)置菜單中,我發(fā)現(xiàn)了一個可以從DropBox導入文件的功能,使用這個功能,用戶需要在OAuth機制下,把redacted.com的應(yīng)用和Dropbox賬戶相關(guān)聯(lián)。這里,來簡單地介紹一下redacted.com應(yīng)用的大致OAuth機制:

1、首先,用戶點擊Dropbox關(guān)聯(lián)按鈕,然后會產(chǎn)生一個GET發(fā)起請求:

https://dropbox.com/oauth3/authorize?client_id=***********&response_type=code&state=****************&redirect_uri=https%3A%2F%2Fwww.redacted.com%2Faccount%2Fsettings%2Fdropbox-callback

2、接下來,當前redacted.com應(yīng)用的用戶會跳轉(zhuǎn)到Dropbox,進行一個相應(yīng)的Dropbox登錄和允許按鈕點擊:

怎么綜合利用Self-XSS和OAuth錯誤配置實現(xiàn)Stored-XSS3、點擊允許Allow后,會產(chǎn)生一個發(fā)往redacted.com且包含 state 參數(shù)和驗證碼auth_code的GET請求,如下紅框所示:

怎么綜合利用Self-XSS和OAuth錯誤配置實現(xiàn)Stored-XSS4、redacted.com后端接收并處理這個GET請求后,用戶的Dropbox賬戶就能與當前redacted.com應(yīng)用同步了,所有Dropbox相關(guān)的文檔都可導入到redacted.com應(yīng)用中來;

我在測試這個OAuth機制的過程中,目的在于發(fā)現(xiàn)能否把我的Dropbox賬戶關(guān)聯(lián)到其它redacted.com應(yīng)用上,但卻沒什么發(fā)現(xiàn)。

其中涉及的redirect_uri是白名單化的,state參數(shù)方式也都合理,auth_code不能兩次復用,等等,而且我還測試了state參數(shù),也即redacted.com應(yīng)用是否用當前用戶會話對其進行驗證,結(jié)果都沒什么問題。

所以,基于以上這些測試來看,我肯定不能用來自Dropbox的鏈接 https://www.redacted.com/account/settings/dropbox-callback?state=********code=**********,去關(guān)聯(lián)其他的redacted.com用戶賬戶。

出于好奇,我刪除了https://www.redacted.com/account/settings/dropbox-callback?state=********code=**********鏈接中的state參數(shù),變成了https://www.redacted.com/account/settings/dropbox-callback?code=**********,并把它放到了redacted.com的其他用戶賬戶中,驚喜的是,之后我的Dropbox賬戶就和其他用戶賬戶關(guān)聯(lián)起來了。

也就是說,只需要用一個GET請求,我就可以把我的Dropbox賬戶和其他任何人的redacted.com賬戶相關(guān)聯(lián)。在這里,你可能會有疑問,我不用Dropbox賬戶來登錄redacted.com應(yīng)用,這就不能發(fā)生賬號劫持了。但如前所述,在待上傳文件的文件名處存在XSS,那么我們就可以考慮來充分利用利用它。

漏洞利用場景

1、在Dropbox中,上傳一個名為{{constructor.constructor(‘a(chǎn)lert(1)’)()}}.jpg的惡意文件,這是Dropbox允許的;

2、把Dropbox驗證redacted.com應(yīng)用且不包含state參數(shù)的最終OAuth鏈接https://www.redacted.com/account/settings/dropbox-callback?code=**********,發(fā)送給目標受害者;

3、當受害者的redacted.com應(yīng)用和我們的Dropbox賬戶關(guān)聯(lián)后,一旦他向redacted.com應(yīng)用中導入那個惡意文件時,我們文件名方式的XSS payload就會執(zhí)行。

這里的問題在于,盡管redacted.com后端用當前的session會話對用戶的state參數(shù)進行了驗證,但卻沒驗證它的存在性。redacted.com后端的驗證邏輯大概是這樣的:

if(isset($_GET['state'])){
    if($_GET['state'] != current_user_state)
        ACCESS DENIED
        exit()
}
ACCESS GRANTED

所以,利用低危的OAuth錯誤配置和Self XSS,最終實現(xiàn)了具有危害性的Stored XSS。

看完上述內(nèi)容,你們掌握怎么綜合利用Self-XSS和OAuth錯誤配置實現(xiàn)Stored-XSS的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)頁題目:怎么綜合利用Self-XSS和OAuth錯誤配置實現(xiàn)Stored-XSS
當前路徑:http://www.muchs.cn/article8/jiojop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、搜索引擎優(yōu)化、品牌網(wǎng)站建設(shè)網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)