摘要:一背景筆者最近在慕課錄制了一套跨站漏洞加強(qiáng)安全視頻教程,課程當(dāng)中有講到的挖掘方式,所以在錄制課程之前需要做大量實(shí)踐案例,最近視頻已經(jīng)錄制完成,準(zhǔn)備將這些漏洞的挖掘過(guò)程記錄下來(lái),方便自己也方便他人。
一、背景
筆者最近在慕課錄制了一套XSS跨站漏洞 加強(qiáng)Web安全視頻教程,課程當(dāng)中有講到XSS的挖掘方式,所以在錄制課程之前需要做大量實(shí)踐案例,最近視頻已經(jīng)錄制完成,準(zhǔn)備將這些XSS漏洞的挖掘過(guò)程記錄下來(lái),方便自己也方便他人。
在本篇文章當(dāng)中會(huì)一permeate生態(tài)測(cè)試系統(tǒng)為例,筆者此前寫(xiě)過(guò)一篇文章當(dāng)中筆者已經(jīng)講解如何安裝permeate滲透測(cè)試系統(tǒng),因此這里不再重復(fù)講解如何安裝此滲透測(cè)試系統(tǒng),參考文檔:利用PHP擴(kuò)展Taint找出網(wǎng)站的潛在安全漏洞實(shí)踐二、內(nèi)容概要
XSS漏洞原理
反射型挖掘
存儲(chǔ)型挖掘
三、漏洞簡(jiǎn)介在實(shí)踐漏洞之前,筆者準(zhǔn)備先簡(jiǎn)單介紹一下XSS漏洞,不過(guò)XSS的相關(guān)概念介紹并不是本文的重點(diǎn),因此不會(huì)過(guò)多細(xì)講;XSS的漏洞類(lèi)型主要分為三類(lèi):反射型、存儲(chǔ)型、DOM型
3.1 漏洞成因XSS的漏洞主要成因是后端接收參數(shù)時(shí)未經(jīng)過(guò)濾,導(dǎo)致參數(shù)改變了HTML的結(jié)構(gòu),如下圖所示
在圖中可以看到攻擊者的參數(shù)被原樣放到了HTML代碼當(dāng)中,導(dǎo)致原本的結(jié)構(gòu)被改變,當(dāng)這份代碼被瀏覽器執(zhí)行之后,將執(zhí)行alert事件。
3.2 反射型反射型XSS在筆者鬧鐘的定義是,如果URL地址當(dāng)中的惡意參數(shù)會(huì)直接被輸出到頁(yè)面中,導(dǎo)致攻擊代碼被觸發(fā),便稱(chēng)之為反射型XSS,如下圖所示
在圖中可以看到,此處原本是輸入一個(gè)名字,單實(shí)際傳遞了一個(gè)script標(biāo)簽,此標(biāo)簽也被原樣放到了HTML結(jié)構(gòu)當(dāng)中,結(jié)果script標(biāo)簽代碼中的代碼被觸發(fā)
3.3 存儲(chǔ)型存儲(chǔ)型XSS,顧名思義便是惡意參數(shù)被存儲(chǔ)起來(lái)了,通常存儲(chǔ)在后端服務(wù)器當(dāng)中,所以存儲(chǔ)型XSS在URL地址當(dāng)中不會(huì)包含惡意參數(shù),對(duì)于受害者來(lái)說(shuō),很難發(fā)現(xiàn)已經(jīng)被攻擊了,如下圖存儲(chǔ)型XSS被觸發(fā)
在圖中筆者并沒(méi)有在URL地址當(dāng)中看到script代碼,但是攻擊代碼依然被觸發(fā),說(shuō)明攻擊代碼來(lái)自于服務(wù)器,而這個(gè)攻擊代碼確實(shí)是由攻擊者傳遞到服務(wù)器當(dāng)中去的。
一般情況下,當(dāng)攻擊者將攻擊代碼通過(guò)表單傳遞到服務(wù)器當(dāng)中去,會(huì)得到一個(gè)新頁(yè)面的地址,這個(gè)地址中URL并沒(méi)有明顯異常,比如如下URL地址
http://permeate.songboy.net/article/1
但當(dāng)存在存儲(chǔ)型XSS時(shí),受害者打開(kāi)此URL,攻擊代碼將會(huì)被觸發(fā),這種情況下筆者便稱(chēng)之為存儲(chǔ)型XSS漏洞。
3.4 DOM型DOM型XSS較為特殊,筆者前面反射型XSS和存儲(chǔ)型XSS都是以傳播方式來(lái)區(qū)分的,而DOM型XSS和傳參方式無(wú)關(guān),而是當(dāng)開(kāi)發(fā)者做了一些安全防護(hù)之后,任出現(xiàn)安全問(wèn)題的一種現(xiàn)象,如下圖所示
在圖片中,可以看到參數(shù)name已經(jīng)使用函數(shù)轉(zhuǎn)義了,按理說(shuō)此時(shí)將參數(shù)傳遞到前端頁(yè)面是不會(huì)產(chǎn)生XSS漏洞的;但當(dāng)JavaScript代碼將參數(shù)進(jìn)行DOM節(jié)點(diǎn)操作之后,原本被轉(zhuǎn)義的代碼又會(huì)被還原,因此還是會(huì)被觸發(fā),如下圖所示
在圖中看到XSS代碼已經(jīng)被觸發(fā),這種DOM型XSS相對(duì)來(lái)說(shuō)更加隱蔽,所以防御XSS漏洞的不能僅僅依靠后端開(kāi)發(fā)者,前端開(kāi)發(fā)者也應(yīng)當(dāng)了解XSS漏洞。
四、反射型挖掘經(jīng)過(guò)上一節(jié)的原理介紹,筆者相信大家對(duì)XSS已經(jīng)有一些了解,現(xiàn)在筆者需要進(jìn)行手工XSS漏洞挖掘,在手工挖掘之前筆者需要先逛逛網(wǎng)站有哪些功能點(diǎn),如下圖是permeate的界面
4.1 思路分析在知道反射型XSS,是通過(guò)URL地址傳播的,那么筆者就需要思考那些地方會(huì)讓URL地址的參數(shù)在頁(yè)面中顯示;相信讀者都用過(guò)一些網(wǎng)站的站內(nèi)搜索,在站內(nèi)搜索的位置往往會(huì)將搜索的關(guān)鍵詞展示在頁(yè)面當(dāng)中,如下圖所示
而在首頁(yè)筆者也看見(jiàn)此網(wǎng)站有搜索功能,因此可以從搜索位置著手,可以在搜索位置輸入一個(gè)簡(jiǎn)單的payload,參考如下
當(dāng)點(diǎn)擊搜索后,會(huì)自動(dòng)跳轉(zhuǎn)到以下URL當(dāng)中,此時(shí)瀏覽器的URL地址已經(jīng)發(fā)生了變化,URL地址如下:
http://permeate.songboy.net/home/search.php?keywords=
搜索的表單是使用了GET傳參,滿(mǎn)足了測(cè)試反射型的第一步要求
4.2 漏洞檢驗(yàn)接下來(lái)就需要看看筆者的payload有沒(méi)有被觸發(fā),結(jié)果很意外,不但沒(méi)有被觸發(fā)還被瀏覽器所阻止了,如下圖
這里就需要跟讀者說(shuō)明一下,谷歌內(nèi)核瀏覽器自帶XSS篩選器,所以對(duì)于反射型XSS測(cè)試,盡量不使用谷歌瀏覽器,筆者建議使用火狐瀏覽器進(jìn)行測(cè)試;
4.3 結(jié)果分析現(xiàn)在筆者將上面的URL地址復(fù)制下來(lái),并粘貼到火狐瀏覽器當(dāng)中,并按下回車(chē),看到效果如下圖
此時(shí)payload已經(jīng)被觸發(fā),說(shuō)明找到了一個(gè)反射型XSS的漏洞,這種漏洞相對(duì)來(lái)說(shuō)非常初級(jí),隨著瀏覽器的XSS篩選器變得更加智能,這種漏洞也越來(lái)越少,在下面的內(nèi)容當(dāng)中筆者將會(huì)提到存儲(chǔ)型XSS挖掘與繞過(guò)。
五、存儲(chǔ)型挖掘現(xiàn)在筆者來(lái)尋找存儲(chǔ)型XSS,存儲(chǔ)型的攻擊代碼是存儲(chǔ)在服務(wù)端,因此需要找出一些會(huì)將表單內(nèi)容存儲(chǔ)到服務(wù)端的位置,筆者在之前已經(jīng)對(duì)permeate做了一番了解,因此知道permeate擁有發(fā)帖和回帖功能,這些功能正是需要將參數(shù)存儲(chǔ)起來(lái)并展示的地方。
5.1 發(fā)現(xiàn)漏洞在首頁(yè)點(diǎn)擊XSS板塊,進(jìn)入到了板塊列表當(dāng)中,如下圖
在右下角能看到有一個(gè)發(fā)帖按鈕,點(diǎn)擊發(fā)帖按鈕后,即可進(jìn)入發(fā)帖界面,如下圖
在permeate滲透測(cè)試系統(tǒng)當(dāng)中,筆者如果要發(fā)表帖子,那么就需要有賬號(hào),筆者這里隨便注冊(cè)一個(gè)賬號(hào),注冊(cè)過(guò)程筆者就不詳細(xì)講解了
5.2 檢驗(yàn)漏洞在注冊(cè)賬號(hào)完成并登陸之后,筆者再次打開(kāi)發(fā)帖頁(yè)面,并在標(biāo)題處和內(nèi)容處都填寫(xiě)payload,參考內(nèi)容如下:
在標(biāo)題處和帖子內(nèi)容中分別填寫(xiě)payload,填寫(xiě)好之后,應(yīng)和與下圖一致
填寫(xiě)好內(nèi)容之后,筆者點(diǎn)擊下方的發(fā)表按鈕,即可進(jìn)行發(fā)帖,發(fā)帖成功會(huì)彈出一個(gè)提示成功,如下圖所示
點(diǎn)擊確定之后,會(huì)跳轉(zhuǎn)到發(fā)帖列表,并彈出一個(gè)123的提示框,如下圖所示
如果看到這個(gè)彈框,說(shuō)明筆者的payload已經(jīng)被執(zhí)行,點(diǎn)擊確定就可以看到列表的內(nèi)容,如下圖所示
在列表中只顯示標(biāo)題,所以帖子內(nèi)容中的payload并沒(méi)有被執(zhí)行;
5.3 抓包繞過(guò)現(xiàn)在點(diǎn)擊標(biāo)題,進(jìn)入帖子詳情頁(yè)面,在詳情頁(yè)筆者發(fā)現(xiàn)payload也只觸發(fā)了一次,而且內(nèi)容當(dāng)中的標(biāo)簽被直接顯示了出來(lái),如下圖
當(dāng)標(biāo)簽被直接顯示出來(lái),這說(shuō)明筆者的參數(shù)被轉(zhuǎn)義了;轉(zhuǎn)義分為兩種,前端轉(zhuǎn)義和后端轉(zhuǎn)義,如果是后端轉(zhuǎn)義通常筆者會(huì)放棄測(cè)試,如果是前端轉(zhuǎn)義則可以繞過(guò)這個(gè)限制;在這里筆者發(fā)現(xiàn)標(biāo)題沒(méi)有被轉(zhuǎn)義,而內(nèi)容被轉(zhuǎn),猜測(cè)可能是前端做的轉(zhuǎn)義,因此可以通過(guò)瀏覽器的審查工具將數(shù)據(jù)包拷貝下來(lái);
首先重新打開(kāi)發(fā)帖頁(yè)面,然后在網(wǎng)頁(yè)隨便一個(gè)位置單擊鼠標(biāo)右鍵->選擇審查元素->切換到network標(biāo)簽并勾選Preserve log,打開(kāi)網(wǎng)絡(luò)并勾選Preserve log的目的是讓發(fā)表帖子之后,能在網(wǎng)絡(luò)請(qǐng)求中找到該記錄,現(xiàn)在筆者可以填寫(xiě)新的payload,如下圖
點(diǎn)擊發(fā)表按鈕之后,筆者可以在控制臺(tái)中找到剛才的post請(qǐng)求,從請(qǐng)求中可以看出,這個(gè)數(shù)據(jù)發(fā)出去就已經(jīng)被轉(zhuǎn)義了,如下圖
當(dāng)確定這個(gè)地方存在前端做了轉(zhuǎn)義處理,如果后端沒(méi)有做處理,筆者就可以繞過(guò)它,現(xiàn)在筆者將請(qǐng)求復(fù)制出來(lái),然后改變里面的數(shù)據(jù),如下圖
復(fù)制出來(lái)的數(shù)據(jù)如下
curl "http://permeate.songboy.net/home/_fatie.php?bk=6&zt=0" -H "Connection: keep-alive" -H "Cache-Control: max-age=0" -H "Origin: http://permeate.songboy.net" -H "Upgrade-Insecure-Requests: 1" -H "Content-Type: application/x-www-form-urlencoded" -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" -H "Referer: http://permeate.songboy.net/home/fatie.php?bk=6" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: zh-CN,zh;q=0.9,en;q=0.8" -H "Cookie: __cfduid=defc970ef7081e30aedd761da5762b1891532003579; UM_distinctid=1655a61a23343c-03f0904540a333-34657908-1fa400-1655a61a234323; PHPSESSID=rufhm0741qfv55cpfnc80k1g4l" --data "csrf_token=3908&bk=6&title=222%3Cscript+%3Ealert%28123%29%3C%2Fscript%3E&content=%3Cp%3E222%26lt%3Bscript+%26gt%3Balert%28123%29%26lt%3B%2Fscript%26gt%3B%3C%2Fp%3E" --compressed
筆者找到參數(shù)中的title和content參數(shù)值,將title的參數(shù)值復(fù)制下來(lái),然后替換content的參數(shù)值,替換后的內(nèi)容如下
curl "http://permeate.songboy.net/home/_fatie.php?bk=6&zt=0" -H "Connection: keep-alive" -H "Cache-Control: max-age=0" -H "Origin: http://permeate.songboy.net" -H "Upgrade-Insecure-Requests: 1" -H "Content-Type: application/x-www-form-urlencoded" -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" -H "Referer: http://permeate.songboy.net/home/fatie.php?bk=6" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: zh-CN,zh;q=0.9,en;q=0.8" -H "Cookie: __cfduid=defc970ef7081e30aedd761da5762b1891532003579; UM_distinctid=1655a61a23343c-03f0904540a333-34657908-1fa400-1655a61a234323; PHPSESSID=rufhm0741qfv55cpfnc80k1g4l" --data "csrf_token=3908&bk=6&title=222%3Cscript+%3Ealert%28123%29%3C%2Fscript%3E&content=222%3Cscript+%3Ealert%28123%29%3C%2Fscript%3E" --compressed
替換完成之后,筆者將此內(nèi)容復(fù)制到終端當(dāng)中(如果讀者用的是windows操作系統(tǒng),可以下載一個(gè)cmder),然后按下回車(chē)鍵,結(jié)果如下圖
5.5 結(jié)果分析在返回結(jié)果當(dāng)中可以看到提示發(fā)帖成功,此時(shí)就筆者已經(jīng)成功發(fā)布了一個(gè)新帖子,回到帖子列表當(dāng)中看到有三條帖子,在最后面的帖子則是筆者新發(fā)布的,如下圖
打開(kāi)詳情頁(yè),筆者被彈了兩次提示框,說(shuō)明標(biāo)題和內(nèi)容當(dāng)中的payload都被觸發(fā),并且在控制臺(tái)當(dāng)中也可以看到script變成了DOM節(jié)點(diǎn),而不是文本展現(xiàn)出來(lái),如下圖所示
看到此處說(shuō)明筆者已經(jīng)成功繞過(guò)前端XSS過(guò)濾器,晚一些在發(fā)表一篇工具盤(pán),和防御篇,大家有興趣也可以支持一下筆者的視頻教程,URL地址如下
https://coding.imooc.com/class/242.html
Thanks?(?ω?)?
作者:湯青松
微信:songboy8888
日期:2018-08-21
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/52903.html
摘要:一背景筆者最近在慕課錄制了一套跨站漏洞加強(qiáng)安全視頻教程,課程當(dāng)中有講到的挖掘方式,所以在錄制課程之前需要做大量實(shí)踐案例,最近視頻已經(jīng)錄制完成,準(zhǔn)備將這些漏洞的挖掘過(guò)程記錄下來(lái),方便自己也方便他人。 一、背景 筆者最近在慕課錄制了一套XSS跨站漏洞 加強(qiáng)Web安全視頻教程,課程當(dāng)中有講到XSS的挖掘方式,所以在錄制課程之前需要做大量實(shí)踐案例,最近視頻已經(jīng)錄制完成,準(zhǔn)備將這些XSS漏洞的挖...
摘要:一背景筆者月份在慕課網(wǎng)錄制視頻教程跨站漏洞加強(qiáng)安全里面需要講到很多實(shí)戰(zhàn)案例,在漏洞挖掘案例中分為了手工挖掘工具挖掘代碼審計(jì)三部分內(nèi)容手工挖掘篇參考地址為快速找出網(wǎng)站中可能存在的漏洞實(shí)踐一本文主要記錄利用安全工具進(jìn)行漏洞挖掘部分,分為了設(shè)置代 一、背景 筆者6月份在慕課網(wǎng)錄制視頻教程XSS跨站漏洞 加強(qiáng)Web安全,里面需要講到很多實(shí)戰(zhàn)案例,在漏洞挖掘案例中分為了手工挖掘、工具挖掘、代碼審...
摘要:一背景筆者此前錄制了一套的視頻教程,在漏洞案例一節(jié)中講解手工挖掘工具挖掘代碼審計(jì)三部分內(nèi)容準(zhǔn)備將內(nèi)容用文章的形式再次寫(xiě)一此前兩篇已經(jīng)寫(xiě)完,內(nèi)容有一些關(guān)聯(lián)性,其中手工挖掘篇地址為快速找出網(wǎng)站中可能存在的漏洞實(shí)踐一本文主要記錄通過(guò)代碼審計(jì)的方式 一、背景 筆者此前錄制了一套XSS的視頻教程,在漏洞案例一節(jié)中講解手工挖掘、工具挖掘、代碼審計(jì)三部分內(nèi)容,準(zhǔn)備將內(nèi)容用文章的形式再次寫(xiě)一此,前兩篇...
摘要:簡(jiǎn)介最近在逛碼云時(shí)候發(fā)現(xiàn)靶場(chǎng)系統(tǒng)感覺(jué)界面和業(yè)務(wù)場(chǎng)景設(shè)計(jì)的還不錯(cuò)所以過(guò)來(lái)分享一下同時(shí)也是分享一下我平時(shí)挖掘漏洞的一些思路吧這篇文章里雖然只簡(jiǎn)單介紹其中三種漏洞類(lèi)型,但也是想是一個(gè)拋轉(zhuǎn)引玉吧給安全新手提供一些挖掘思路下載地址地址國(guó)內(nèi)地址這篇文章 簡(jiǎn)介 最近在逛碼云時(shí)候發(fā)現(xiàn)permeat靶場(chǎng)系統(tǒng),感覺(jué)界面和業(yè)務(wù)場(chǎng)景設(shè)計(jì)的還不錯(cuò).所以過(guò)來(lái)分享一下. 同時(shí)也是分享一下我平時(shí)挖掘漏洞的一些思路吧,...
摘要:與攻擊相比,攻擊往往很少見(jiàn),因此對(duì)其進(jìn)行防范的資源也相當(dāng)稀少。不過(guò),這種受信任的攻擊模式更加難以防范,所以被認(rèn)為比更具危險(xiǎn)性。通過(guò)實(shí)時(shí)升級(jí)系統(tǒng)快速同步最新漏洞,避免零日攻擊。 現(xiàn)在,我們絕大多數(shù)人都會(huì)在網(wǎng)上購(gòu)物買(mǎi)東西。但是很多人都不清楚的是,很多電商網(wǎng)站會(huì)存在安全漏洞。比如烏云就通報(bào)過(guò),國(guó)內(nèi)很多家公司的網(wǎng)站都存在 CSRF 漏洞。如果某個(gè)網(wǎng)站存在這種安全漏洞的話(huà),那么我們?cè)谫?gòu)物的過(guò)程中...
閱讀 2807·2021-11-23 09:51
閱讀 3564·2021-10-08 10:17
閱讀 1298·2021-10-08 10:05
閱讀 1357·2021-09-28 09:36
閱讀 1876·2021-09-13 10:30
閱讀 2219·2021-08-17 10:12
閱讀 1704·2019-08-30 15:54
閱讀 2031·2019-08-30 15:53