本文不承擔(dān)任何由于傳播、利用本文所發(fā)布內(nèi)容而造成的任何后果及法律責(zé)任。
本文將基于ChatGPT及Glassdoor兩個(gè)實(shí)例闡發(fā)URL解析器混淆攻擊。
開始本文前,推薦閱讀:【網(wǎng)絡(luò)安全】Web緩存欺騙攻擊原理及攻防實(shí)戰(zhàn)
通配符+URL解析器混淆攻擊實(shí)現(xiàn)ChatGPT賬戶接管
ChatGPT新增了"分享"功能,該功能允許用戶與其他人公開分享聊天內(nèi)容:
ChatGPT會(huì)生成一個(gè)對(duì)話鏈接,用戶復(fù)制后發(fā)送給好友即可:
然而,存在一現(xiàn)象:ice發(fā)送對(duì)話鏈接給A后,A看到了對(duì)話內(nèi)容。ice再與ChatGPT對(duì)話,此時(shí)A訪問(wèn)對(duì)話鏈接,卻看不到新的對(duì)話內(nèi)容。
這個(gè)現(xiàn)象可能意味著:原先的對(duì)話內(nèi)容已被緩存,其在緩存條目消失前并不會(huì)更新。
對(duì)該猜測(cè)進(jìn)行驗(yàn)證:打開網(wǎng)絡(luò)標(biāo)簽頁(yè)來(lái)檢查響應(yīng)頭,看到Cf-Cache-Status: HIT,說(shuō)明請(qǐng)求的資源在Cloudflare的CDN緩存中已經(jīng)存在。
通常,只有靜態(tài)文件(如圖片、CSS、JS文件等)會(huì)被CDN緩存,但在這個(gè)情況中,一個(gè)動(dòng)態(tài)內(nèi)容的生成(即ChatGPT的對(duì)話分享)也被緩存,這反映出Cloudflare的緩存機(jī)制并不僅限于傳統(tǒng)意義上的靜態(tài)文件,而是可以根據(jù)配置規(guī)則對(duì)各種類型的內(nèi)容進(jìn)行緩存。
同時(shí)可以看到對(duì)話鏈接URL中并不存在文件擴(kuò)展名:
這意味著在處理緩存時(shí),使用的規(guī)則并不是基于請(qǐng)求的資源文件的擴(kuò)展名(如.jpg、.html、.css等)來(lái)決定是否對(duì)該資源進(jìn)行緩存。相反,它是根據(jù)URL中資源所在的路徑位置來(lái)決定的。
綜上,ChatGPT的緩存規(guī)則配置為/share/*,表示所有位于/share/路徑下的內(nèi)容都會(huì)被CDN緩存,不管這些內(nèi)容是什么類型的文件或者是否根本就不是文件(例如動(dòng)態(tài)生成的內(nèi)容)。
在實(shí)施攻擊實(shí)現(xiàn)ChatGPT賬戶接管前,先了解一下什么是URL解析器混淆攻擊。
由于歷史原因和標(biāo)準(zhǔn)實(shí)現(xiàn)的差異,不同的解析器對(duì)某些特殊字符或編碼方式的處理可能會(huì)有所不同。使用緩存的網(wǎng)站中,請(qǐng)求必須先經(jīng)過(guò)CDN,然后才到達(dá)Web服務(wù)器。如果這兩者的解析器處理不一致,利用這些差異,通過(guò)精心設(shè)計(jì)的URL來(lái)迷惑解析器,使其誤解URL的真正意圖,即可實(shí)現(xiàn)URL解析器混淆攻擊。
在此案例中,Cloudflare的CDN并不會(huì)對(duì)URL進(jìn)行解碼,也并不會(huì)規(guī)范化URL路徑,但Web解析器卻會(huì)。
當(dāng)構(gòu)造https://chat.openai.com/share/%2F..%2Fapi/auth/session?id=ice
時(shí),CDN并不會(huì)對(duì)該URL做任何處理,CDN將URL轉(zhuǎn)發(fā)后,Web解析器將其解碼并規(guī)范化后得到:https://chat.openai.com/share/api/auth/session?id=ice
,并生成響應(yīng),該響應(yīng)中含有對(duì)ice的session請(qǐng)求。
當(dāng)這個(gè)響應(yīng)返回給CDN時(shí),ice的session被緩存。這意味著,任何后續(xù)對(duì)相同URL的請(qǐng)求都將直接由CDN提供響應(yīng),即用戶A訪問(wèn)https://chat.openai.com/share/%2F..%2Fapi/auth/session?id=ice
后即可得到ice的session,進(jìn)而接管ice的ChatGPT賬戶。
通配符+URL解析器混淆攻擊實(shí)現(xiàn)Glassdoor服務(wù)器緩存XSS
Glassdoor是一個(gè)面向職業(yè)人士的在線平臺(tái),旨在提供有關(guān)公司、工作崗位、薪資、面試經(jīng)驗(yàn)和員工評(píng)價(jià)的信息。[以下附圖環(huán)境為已修復(fù)環(huán)境]
其Job頁(yè)面提供了有關(guān)職位的詳細(xì)信息:
在 https://www.glassdoor.com/Job/?xss 路徑下的頁(yè)面,所有URL參數(shù)都會(huì)在JavaScript腳本標(biāo)簽內(nèi)反映。但注入 </script>
到頁(yè)面時(shí),存在WAF:
optimizelyEndUserId cookie的值會(huì)在頁(yè)面中反映,位于URL參數(shù)之后。故可將負(fù)載分割為兩部分,通過(guò)繞過(guò)WAF來(lái)執(zhí)行任意JavaScript,然而這只是個(gè)反射型XSS。
要實(shí)現(xiàn)危害擴(kuò)大,可以考慮服務(wù)器緩存XSS。
在https://www.glassdoor.com/Job和https://www.glassdoor.com/Award/
下的頁(yè)面中打開網(wǎng)絡(luò)標(biāo)簽頁(yè)來(lái)檢查響應(yīng)頭,后者看到Cf-Cache-Status: HIT,說(shuō)明頁(yè)面被緩存。
經(jīng)測(cè)試,發(fā)現(xiàn)通配符 /…/在緩存服務(wù)器上得到規(guī)范化,但后端Web應(yīng)用程序沒有規(guī)范化。故對(duì)于路徑https://www.glassdoor.com/Job/../Award/blah?xss=<script>
,緩存服務(wù)器將其解釋為https://www.glassdoor.com/Award/blah?xss=<script>
,導(dǎo)致響應(yīng)被緩存。該過(guò)程與上一個(gè)案例相似,不再詳述。
在后續(xù)中,任意用戶訪問(wèn)https://www.glassdoor.com/Award/blah?xss=</script>
時(shí),XSS將被觸發(fā)。
經(jīng)測(cè)試,也可在https://www.glassdoor.com/mz-survey/interview/collectQuestions_input.htm/../../../Award/blah
的請(qǐng)求包標(biāo)頭和 cookie 中包含 XSS:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-829983.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-829983.html
到了這里,關(guān)于【網(wǎng)絡(luò)安全】URL解析器混淆攻擊實(shí)現(xiàn)ChatGPT賬戶接管、Glassdoor服務(wù)器XSS的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!