摘要:持久型相當(dāng)于存儲(chǔ)型跨站腳本。這玩意兒涉及到一點(diǎn)和瀏覽器引擎解析的問(wèn)題。說(shuō)正事,是支持碼形式的。的調(diào)用有幾個(gè)概念我們先來(lái)了解一下。本來(lái)說(shuō)的只用天完成的,沒(méi)想到各種事兒拖了兩天,。
前些時(shí)間準(zhǔn)備面試的時(shí)候一直會(huì)遇到這個(gè)XSS,寥寥幾句話好像很簡(jiǎn)單,后來(lái)看到同學(xué)的《XSS跨站腳本攻擊剖析與防御》這本書(shū),稍微翻看了一下,其中的學(xué)問(wèn)還是挺多的。這系列的文章就當(dāng)做讀書(shū)筆記吧。
什么是XSS聽(tīng)過(guò)很多道理,當(dāng)然很多人都已經(jīng)知道XSS是個(gè)啥,跨站腳本(Cross-Site Scripting),由于它前面有個(gè)老大哥CSS擺在那兒,就只能叫XSS了。官方是這么說(shuō)的"A cross-site scripting vulnerability may be used by attackers to bypass access controls such as the same-origin policy."“一種可能會(huì)被攻擊者用來(lái) 通過(guò) 比如同源策略 來(lái)獲取用戶權(quán)限的跨站腳本?!?br>通俗點(diǎn)來(lái)說(shuō),比如你在瀏覽百度的時(shí)候,假設(shè)百度沒(méi)做任何安全策略(當(dāng)然這是不可能的),攻擊者對(duì)百度的登陸按鈕做了點(diǎn)修改,你登陸的時(shí)候,它把你登陸的信息都發(fā)送到攻擊者那兒去了,GG,2個(gè)T的學(xué)習(xí)資料沒(méi)了。這還算好的,給你的花旗銀行網(wǎng)站來(lái)個(gè)這玩意,2個(gè)億沒(méi)了。
XSS的分類 反射型XSS也叫做非持久性、參數(shù)性跨站腳本,顧名思義,攻擊者制作了一個(gè)含有惡意代碼的url,比如
http://www.test.com/search.ph...=">
(這個(gè)算惡意比較小的,要是在里面獲取你的cookie
然后攻擊者給你發(fā)了個(gè)鏈接,“大胸妹妹正在直播,邀請(qǐng)您觀看?!?br>
大家可以搭個(gè)DVWA自己玩一下嘛,別的漏洞也有,就是別用太高級(jí)的瀏覽器,這時(shí)候深惡痛絕的IE就該上場(chǎng)了,時(shí)候表演真正的技術(shù)了。
“我不服,就這URL我還不一眼就看出來(lái)有毛?。俊?br>“http%3A//www.test.com/search.php%3Fkey%3D%22%3Cscript%3Ealert%28%22xss%22%29%3C/script%3E%22,繼續(xù)裝逼?!?/p>
持久型XSS
相當(dāng)于存儲(chǔ)型跨站腳本。
來(lái)看看有什么效果(想想還有點(diǎn)小激動(dòng)呢)
當(dāng)然了這不是你的鍋,但如果這個(gè)網(wǎng)站是你搭的,那你等著GG吧。如果這個(gè)玩意兒一直沒(méi)有被搞掉,而攻擊者給你來(lái)了10000個(gè)這樣的評(píng)論,每一次刷新后都會(huì)來(lái)10000下,想想會(huì)發(fā)生什么吧。
XSS構(gòu)造剖析 繞過(guò)XSS-Filter當(dāng)然大部分的程序員兒是不會(huì)像我這么挫的,正常情況下基本都會(huì)在Web應(yīng)用中設(shè)計(jì)一個(gè)XSS Filter,一些白名單、黑名單什么的來(lái)過(guò)濾掉大胸妹。那有沒(méi)有能過(guò)濾掉所有大胸妹的Filter呢?
我們有很多繞過(guò)Filter的方法:
1)利用<>標(biāo)記注射代碼前面我們寫(xiě)的大胸妹,哦不是,代碼都是這樣的,不多說(shuō)了。
2)利用HTML標(biāo)簽屬性執(zhí)行XSS這玩意兒呢對(duì)我們這些使用Canary、Nighty的人來(lái)說(shuō)是沒(méi)有任何威脅的?,當(dāng)然對(duì)一些非功能需要還在使用IE6的山頂洞人還是有點(diǎn)威脅的。
3)空格回車Tab加入你在你的黑名單里加了"javascript",然后說(shuō)這下沒(méi)辦法來(lái)寫(xiě)腳本了吧。對(duì)不起,沒(méi)用。
再次GG。這玩意兒涉及到一點(diǎn)js和瀏覽器引擎解析的問(wèn)題。我們知道
var a = daxiongmei var b = "kan na ge daxiongmei"
這樣雖然沒(méi)有分號(hào)不像我們這些規(guī)范的程序員的編程習(xí)慣,但它是沒(méi)毛病的而且很Geek,那這樣呢?
var a = "kan na ge daxiongmei; alert(a);
也是可以的!因?yàn)橐娌⒉粫?huì)把換行符看成一個(gè)完整語(yǔ)句的終點(diǎn)(上面的可以是因?yàn)橐嬉呀?jīng)意識(shí)到一個(gè)完整的語(yǔ)句了),它會(huì)繼續(xù)處理后面發(fā)現(xiàn)的內(nèi)容,知道一個(gè)分號(hào)出現(xiàn)或者這個(gè)語(yǔ)句變成一個(gè)完整的語(yǔ)句。
4)對(duì)標(biāo)簽屬性值轉(zhuǎn)碼那我處理輸入的時(shí)候.split(" ").join("")行了吧,對(duì)不起還是不行。
還記得大寫(xiě)字母A的ASCII碼是多少嗎,不記得先向你的老師說(shuō)聲對(duì)不起又還給您了。
說(shuō)正事,HTML是支持ASCII碼形式的。我們把上面的代碼換成這樣。
;
GG
所以最好把這些字符也給過(guò)濾了吧。
這個(gè)和上面的第二點(diǎn)有點(diǎn)類似,只不過(guò)這次把屬性換成事件,像這樣:
onerror換成onclick,onblur什么都是可以的。
6)利用CSS跨站CSS也可以用來(lái)跨站,想的起來(lái)是什么嗎?方式還挺多的
或者用@important引入,引入文件寫(xiě)個(gè)xss,就是這么簡(jiǎn)單。你說(shuō)我們名字簡(jiǎn)寫(xiě)都一樣的,相煎何太急呢。
利用字符串編碼其實(shí)之前我們已經(jīng)幾次提到了用字符串編碼來(lái)繞過(guò)Filter的方法,由于js支持Unicode、escapes、十六進(jìn)制、八進(jìn)制等編碼,還有很多加密編碼,防止XSS變得很麻煩,心累。
拆分跨站法可能有的同學(xué)要想好事兒了,你每次攻擊我都要寫(xiě)那么長(zhǎng)的代碼,我限制你個(gè)字符輸入字?jǐn)?shù)為比如30個(gè)不就行了嗎,你寫(xiě)兩個(gè)script標(biāo)簽都要17個(gè)字符了。Naive
...
GG
Shellcode的調(diào)用有幾個(gè)概念我們先來(lái)了解一下。
【Shellcode】
這玩意兒呢一開(kāi)始是指溢出程序和蠕蟲(chóng)病毒的核心,其實(shí)看單詞就能看出來(lái)了,就是一個(gè)利用漏洞執(zhí)行時(shí)的代碼。在咱么這兒呢,就是指XSS利用代碼。
【Exploit】
翻譯:利用。這玩意我我不知道怎么解釋,“通常表示完整編寫(xiě)好的漏洞利用工具”,總之記住Exploit往往包含了Shellcode。
payload、shellcode、exp、poc怎么區(qū)別?
【POC】
Proof of Concept,是一段證明漏洞存在的程序代碼片段。
其實(shí)這和JSONP有點(diǎn)類似,在url后面跟個(gè)script標(biāo)簽,標(biāo)簽里引入遠(yuǎn)程的js文件,這文件不是個(gè)好東西,恩差不多就是這樣。
使用window.location.hash知道location.hash獲取什么嗎?比如我們有個(gè)url:http://domain/#admin, location.hash獲取的就是"#"后面的東西,這里就是admin。那location.hash怎么用到我們的XSS里面呢?
http://www.bug.com/veiw.php?sort=">#alert("xss")"
應(yīng)該都能看懂我就不多說(shuō)了啊。
XSS Downloader介紹另外一種存儲(chǔ)和調(diào)用Shellcode的方法,把它存儲(chǔ)到網(wǎng)站的數(shù)據(jù)庫(kù)中個(gè),然后再把它下載下來(lái)執(zhí)行。簡(jiǎn)單說(shuō)呢,就是我們寫(xiě)了個(gè)XSS的下載器,把這個(gè)下載器放在網(wǎng)站的某個(gè)頁(yè)面,再用Ajax什么的來(lái)向這個(gè)網(wǎng)站發(fā)送請(qǐng)求,執(zhí)行了返回的數(shù)據(jù),返回的是啥?Shellcode。
備選存儲(chǔ)技術(shù)瀏覽器的存儲(chǔ)技術(shù)有哪些?相信經(jīng)過(guò)校招的同學(xué)都應(yīng)該不陌生。Cookie、Flash、UserData、localStorage等。既然這些玩意兒都能存儲(chǔ)數(shù)據(jù),那Shellcode呢,當(dāng)然也可以。
好了第一章就到此結(jié)束了。本來(lái)說(shuō)的只用1天完成的,沒(méi)想到各種事兒拖了兩天,enjoy。當(dāng)然肯定大部分都不enjoy的,歡迎提意見(jiàn)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/80825.html
摘要:網(wǎng)絡(luò)黑白一書(shū)所抄襲的文章列表這本書(shū)實(shí)在是垃圾,一是因?yàn)樗幕ヂ?lián)網(wǎng)上的文章拼湊而成的,二是因?yàn)槠礈愃教?,連表述都一模一樣,還抄得前言不搭后語(yǔ),三是因?yàn)閮?nèi)容全都是大量的科普,不涉及技術(shù)也沒(méi)有干貨。 《網(wǎng)絡(luò)黑白》一書(shū)所抄襲的文章列表 這本書(shū)實(shí)在是垃圾,一是因?yàn)樗幕ヂ?lián)網(wǎng)上的文章拼湊而成的,二是因?yàn)槠礈愃教?,連表述都一模一樣,還抄得前言不搭后語(yǔ),三是因?yàn)閮?nèi)容全都是大量的科普,不涉及技術(shù)...
摘要:三輪技術(shù)面上一輪發(fā)揮感覺(jué)沒(méi)前兩輪發(fā)揮好,所以還是有點(diǎn)不自信的,沒(méi)想到第三天后,就來(lái)電話了,通知我去阿里園區(qū)面試。 一般阿里社招都是招3-5年的P6+高級(jí)工程師,當(dāng)初自己一年經(jīng)驗(yàn)也沒(méi)有想過(guò)有這個(gè)面試機(jī)會(huì)。 雖然沒(méi)想著換工作,但是經(jīng)常關(guān)注一些招聘網(wǎng)站的信息,某一天,在某boss上有個(gè)人找我,叫我發(fā)一下簡(jiǎn)歷,我一看是阿里的某技術(shù)專家,雖然之前也有阿里的在某boss上給我要簡(jiǎn)歷,但是我深知自己...
閱讀 1308·2021-11-23 09:51
閱讀 3426·2021-09-06 15:00
閱讀 1000·2021-08-16 10:57
閱讀 1385·2019-08-30 12:46
閱讀 948·2019-08-29 12:22
閱讀 1617·2019-08-29 11:07
閱讀 3162·2019-08-26 11:23
閱讀 2993·2019-08-23 15:14