時(shí)間:09-02
欄目:SEO優(yōu)化
XSS是跨站腳本攻擊(CrossSiteScripting),為不和層疊樣式表(CascadingStyleSheets,CSS)的縮寫(xiě)混淆,故將跨站腳本攻擊縮寫(xiě)為XSS。惡意攻擊者往Web頁(yè)面里插入惡意Script代碼,當(dāng)用戶瀏覽該頁(yè)之時(shí),嵌入其中Web里面的Script代碼會(huì)被執(zhí)行,從而達(dá)到惡意攻擊用戶的目的。
相信以上的解釋也不難理解,但為了再具體些,這里舉一個(gè)簡(jiǎn)單的例子,就是留言板。我們知道留言板通常的任務(wù)就是把用戶留言的內(nèi)容展示出來(lái)。正常情況下,用戶的留言都是正常的語(yǔ)言文字,留言板顯示的內(nèi)容也就沒(méi)毛病。然而這個(gè)時(shí)候假如有人不按套路出牌,在留言內(nèi)容中丟進(jìn)去一行”alert(“hey!youareattacked”),那么留言板界面的網(wǎng)頁(yè)代碼就會(huì)變成形如以下:
alert(“hey!youareattacked”)
那么這個(gè)時(shí)候問(wèn)題就來(lái)了,當(dāng)瀏覽器解析到用戶輸入的代碼那一行時(shí)會(huì)發(fā)生什么呢?答案很顯然,瀏覽器并不知道這些代碼改變了原本程序的意圖,會(huì)照做彈出一個(gè)信息框。就像這樣。
其實(shí)歸根結(jié)底,XSS的攻擊方式就是想辦法“教唆”用戶的瀏覽器去執(zhí)行一些這個(gè)網(wǎng)頁(yè)中原本不存在的前端代碼。可問(wèn)題在于盡管一個(gè)信息框忽然彈出來(lái)并不怎么友好,但也不至于會(huì)造成什么真實(shí)傷害啊。的確如此,但要說(shuō)明的是,這里拿信息框說(shuō)事僅僅是為了舉個(gè)栗子,真正的黑客攻擊在XSS中除非惡作劇,不然是不會(huì)在惡意植入代碼中寫(xiě)上alert("saysomething")的。在真正的應(yīng)用中,XSS攻擊可以干的事情還有很多,這里舉兩個(gè)例子。
這個(gè)cookie值相當(dāng)于一個(gè)令牌,拿著這張令牌就等同于證實(shí)了你是某個(gè)用戶。假如你的cookie值被竊取,那么攻擊者很可能能夠直接利用你的這張令牌不用密碼就登錄你的賬戶。假如想要通過(guò)script腳本獲得當(dāng)前頁(yè)面的cookie值,通常會(huì)用到cookie。試想下假如像空間說(shuō)說(shuō)中能夠?qū)懭離ss攻擊語(yǔ)句,那豈不是看了你說(shuō)說(shuō)的人的號(hào)你都可以登錄(不過(guò)貌似QQ的cookie有其他驗(yàn)證措施保證同一cookie不能被濫用)
這個(gè)很簡(jiǎn)單,就是在網(wǎng)頁(yè)中想辦法插入一句像這樣的語(yǔ)句:
window.location.href="";那么所訪問(wèn)的網(wǎng)站就會(huì)被跳轉(zhuǎn)到百度的首頁(yè)。
早在2021年新浪就曾爆出過(guò)嚴(yán)重的xss漏洞,導(dǎo)致大量用戶自動(dòng)關(guān)注某個(gè)微博號(hào)并自動(dòng)轉(zhuǎn)發(fā)某條微博。具體各位可以自行百度。
那xss漏洞很簡(jiǎn)單被利用嗎?那倒也未必。
究竟在實(shí)際應(yīng)用中web程序往往會(huì)通過(guò)一些過(guò)濾規(guī)則來(lái)組織代有惡意代碼的用戶輸入被顯示。不過(guò),這里還是可以給大家總結(jié)一些常用的xss攻擊繞過(guò)過(guò)濾的一些方法,算是拋磚引玉。(以下的繞過(guò)方式皆通過(guò)滲透測(cè)試平臺(tái)WebForPentester演示
利用語(yǔ)句:
192.168.1.102/xss/example2.php?name=alert("hey!")
這個(gè)字面上不是很好理解。用實(shí)例來(lái)說(shuō)。
如下圖,在這個(gè)例子中我們直接敲入script標(biāo)簽發(fā)現(xiàn)返回的網(wǎng)頁(yè)代碼中script標(biāo)簽被去除了,但其余的內(nèi)容并沒(méi)有改變。
于是我們就可以人為的制造一種巧合,讓過(guò)濾完script標(biāo)簽后的語(yǔ)句中還有script標(biāo)簽(究竟alert函數(shù)還在),像這樣:
192.168.1.102/xss/example3.php?name=alert("hey!")
發(fā)現(xiàn)問(wèn)題了吧,這個(gè)利用原理在于只過(guò)濾了一個(gè)script標(biāo)簽。
在這個(gè)例子中,我們嘗試了前面兩種方法都沒(méi)能成功,原因在于script標(biāo)簽已經(jīng)被完全過(guò)濾,但不要方,能植入腳本代碼的不止script標(biāo)簽。
例如這里我們用標(biāo)簽做一個(gè)示范。
我們利用如下方式:
192.168.1.102/xss/example4.php?name=

就可以再次愉快的彈窗。原因很簡(jiǎn)單,我們指定的圖片地址根本不存在也就是一定會(huì)發(fā)生錯(cuò)誤,這時(shí)候onerror里面的代碼自然就得到了執(zhí)行。
以下列舉幾個(gè)常用的可插入代碼的標(biāo)簽。
當(dāng)用戶鼠標(biāo)移動(dòng)時(shí)即可運(yùn)行代碼
當(dāng)用戶鼠標(biāo)在這個(gè)塊上面時(shí)即可運(yùn)行(可以配合weight等參數(shù)將div覆蓋頁(yè)面,鼠標(biāo)不劃過(guò)都不行)
類似的還有onclick,這個(gè)要點(diǎn)擊后才能運(yùn)行代碼,條件相對(duì)苛刻,就不再詳述。
有的時(shí)候,服務(wù)器往往會(huì)對(duì)代碼中的關(guān)鍵字(如alert)進(jìn)行過(guò)濾,這個(gè)時(shí)候我們可以嘗試將關(guān)鍵字進(jìn)行編碼后再插入,不過(guò)直接顯示編碼是不能被瀏覽器執(zhí)行的,我們可以用另一個(gè)語(yǔ)句eval()來(lái)實(shí)現(xiàn)。eval()會(huì)將編碼過(guò)的語(yǔ)句解碼后再執(zhí)行,簡(jiǎn)直太貼心了。
例如alert(1)編碼過(guò)后就是alert(1),所以構(gòu)建出來(lái)的攻擊語(yǔ)句如下:
192.168.1.102/xss/example5.php?name=eval(alert(1))
來(lái)看這份代碼:
乍一看,哇!自帶script標(biāo)簽。再一看,WTF!填入的內(nèi)容被放在了變量里!
這個(gè)時(shí)候就要我們手動(dòng)閉合掉兩個(gè)雙引號(hào)來(lái)實(shí)現(xiàn)攻擊,別忘了,javascript是一個(gè)弱類型的編程語(yǔ)言,變量的類型往往并沒(méi)有明確定義。
思路有了,接下來(lái)要做的就簡(jiǎn)單了,利用語(yǔ)句如下:
192.168.1.102/xss/example6.php?name=";alert("Iamcomingagain~");"
效果如圖。
回看以下注入完代碼的網(wǎng)頁(yè)代碼,發(fā)現(xiàn)我們一直都在制造巧合。。
先是閉合引號(hào),然后分號(hào)換行,加入代碼,再閉合一個(gè)引號(hào),搞定!
在實(shí)際運(yùn)用中漏洞的利用可能不會(huì)這么直觀,需要我們不斷的嘗試,甚至組合各種繞過(guò)方式來(lái)達(dá)到目的。
介紹完一些常用的繞過(guò)方式,再倒回來(lái)講一下XSS分類,因?yàn)橄旅嬷v具體的應(yīng)用時(shí)會(huì)用到。
XSS攻擊大致上分為兩類,一類是反射型XSS,又稱非持久型XSS,另一類則與之相對(duì),稱作儲(chǔ)存型XSS,也就是持久型XSS。
先來(lái)講什么是反射型XSS。其實(shí),我們上面講XSS的利用手段時(shí)所舉的例子都是非持久型XSS,也就是攻擊相對(duì)于訪問(wèn)者而言是一次性的,具體表現(xiàn)在我們把我們的惡意腳本通過(guò)url的方式傳遞給了服務(wù)器,而服務(wù)器則只是不加處理的把腳本“反射”回訪問(wèn)者的瀏覽器而使訪問(wèn)者的瀏覽器執(zhí)行相應(yīng)的腳本。也就是說(shuō)想要觸發(fā)漏洞,需要訪問(wèn)特定的鏈接才能夠?qū)崿F(xiàn)。
再說(shuō)儲(chǔ)存型XSS,它與反射型XSS很大的不同就是服務(wù)器再接收到我們的惡意腳本時(shí)會(huì)將其做一些處理,例如儲(chǔ)存到數(shù)據(jù)庫(kù)中,然后當(dāng)我們?cè)俅卧L問(wèn)相同頁(yè)面時(shí),將惡意腳本從數(shù)據(jù)庫(kù)中取出并返回給瀏覽器執(zhí)行。這就意味著只要訪問(wèn)了這個(gè)頁(yè)面的訪客,都有可能會(huì)執(zhí)行這段惡意腳本,因此儲(chǔ)存型XSS的危害會(huì)更大。還記得在文章開(kāi)頭提到的留言板的例子嗎?那通常就是儲(chǔ)存型XSS。當(dāng)有人在留言內(nèi)容中插入惡意腳本時(shí),由于服務(wù)器要像每一個(gè)訪客展示之前的留言內(nèi)容,所以后面的訪客自然會(huì)接收到之前留言中的惡意腳本而不幸躺槍。這個(gè)過(guò)程一般而言只要用戶訪問(wèn)這個(gè)界面就行了,不像反射型XSS,需要訪問(wèn)特定的URL。
區(qū)別完兩種XSS類型,下面來(lái)講幾個(gè)實(shí)例應(yīng)用。
劫持訪問(wèn)就是在惡意腳本中插入諸如window.location.href="";的代碼,那么頁(yè)面就會(huì)跳轉(zhuǎn)到百度首頁(yè)。劫持訪問(wèn)在持久型和非持久型XSS中都比較常被利用。持久型XSS中劫持訪問(wèn)的危害不用說(shuō)大家都清楚,但有人會(huì)問(wèn)非持久型XSS中劫持訪問(wèn)有什么作用呢?很簡(jiǎn)單,試想下像qq.com,baidu.com這樣的域名下出現(xiàn)非持久型XSS,那么在發(fā)送釣魚(yú)鏈接時(shí)就可以通過(guò)qq.com等域名進(jìn)行跳轉(zhuǎn),一般人一看到qq.com之類的域名警惕性會(huì)下降,也就更簡(jiǎn)單上當(dāng)了。
具體原理上文已經(jīng)提到,這里做一個(gè)具體演示。由于盜取的cookie需要傳回給攻擊者,因此往往需要一個(gè)服務(wù)器來(lái)接收盜取的cookie,這也就是xss平臺(tái)的作用了。網(wǎng)上的xss平臺(tái)很多,但動(dòng)手搭建一個(gè)也不難,建議有條件的自己搭建。
首先登錄平臺(tái)后臺(tái)獲取到j(luò)s腳本地址為127.0.0.1/XSS/template/default.js,所以我們需要做的是把這段代碼植入指定頁(yè)面。
(這里以DVWA滲透測(cè)試平臺(tái)為例)
我們發(fā)現(xiàn)網(wǎng)頁(yè)對(duì)于message長(zhǎng)度有限制。審查元素看一下。
發(fā)現(xiàn)很大長(zhǎng)度有限制,但這僅僅是前端的限制,直接雙擊修改成更大的數(shù)字即可。再次嘗試,沒(méi)問(wèn)題,我們已經(jīng)將腳本植入完畢。
然后就是坐等別的用戶訪問(wèn)這個(gè)界面。
這時(shí),另一個(gè)用戶gordonb登錄并訪問(wèn)了留言界面,那么他的cookie就會(huì)被竊取。我們可以從xss平臺(tái)的后臺(tái)獲取到。
拿到cookie之后要登錄他的帳號(hào)就好辦了。
打開(kāi)登錄界面,調(diào)出火狐的firebug插件,調(diào)至cookie選項(xiàng)卡(注重,假如你的firebug插件沒(méi)有cookie選項(xiàng)卡,請(qǐng)?jiān)侔惭bfirecookie插件即可看到)
然后依次點(diǎn)擊cookies-createcookie,隨后再?gòu)棾龅慕缑嬷刑钊雰蓚€(gè)xss平臺(tái)獲取到的cookie,如圖
這里注重要把我箭頭所指的地方勾上,這是設(shè)置cookie有效期的地方,不然會(huì)在設(shè)置完下一秒cookie就失效。
完成之后再次刷新頁(yè)面,發(fā)現(xiàn)已經(jīng)不是之前的登錄界面了,而是登錄后的界面。至此,一個(gè)從cookie竊取到利用的過(guò)程就已完成。
先簡(jiǎn)單解釋以下csrf攻擊。Csrf攻擊就是在未經(jīng)你許可的情況下用你的名義發(fā)送惡意請(qǐng)求(比如修改密碼,銀行轉(zhuǎn)賬等),下面演示一個(gè)用xss配合csrf修改用戶密碼的例子。
首先對(duì)修改用戶密碼的界面進(jìn)行抓包。
發(fā)現(xiàn)沒(méi)有對(duì)原密碼進(jìn)行校驗(yàn)。于是一股邪惡的力量油然而生:要是在xss的惡意腳本中自動(dòng)提交get請(qǐng)求修改密碼的話。。。
說(shuō)干就干,具體插入語(yǔ)句如下。
有人會(huì)問(wèn),這不是引用腳本嗎?其實(shí)不然,本質(zhì)上這還是發(fā)起了一起get請(qǐng)求,因此可以直接使用。與上例一樣,插入到message中,再坐等上鉤。等下一個(gè)用戶訪問(wèn)該界面時(shí),密碼就會(huì)被改為123456惹~
我們?cè)倏聪略L問(wèn)該頁(yè)面時(shí)的抓包情況,發(fā)現(xiàn)每次訪問(wèn)該頁(yè)面都發(fā)送了更改密碼的請(qǐng)求
效果看數(shù)據(jù)庫(kù)(密碼md5加密)
訪問(wèn)了該頁(yè)面的用戶密碼都被更改了。
防范手段:
都說(shuō)知己知彼方能百戰(zhàn)不殆,知道了xss攻擊的原理那么防御的方法也就顯而易見(jiàn)了。
首先是過(guò)濾。對(duì)諸如、、等標(biāo)簽進(jìn)行過(guò)濾。
其次是編碼。像一些常見(jiàn)的符號(hào),如在輸入的時(shí)候要對(duì)其進(jìn)行轉(zhuǎn)換編碼,這樣做瀏覽器是不會(huì)對(duì)該標(biāo)簽進(jìn)行解釋執(zhí)行的,同時(shí)也不影響顯示效果。
很后是限制。通過(guò)以上的案例我們不難發(fā)現(xiàn)xss攻擊要能達(dá)成往往需要較長(zhǎng)的字符串,因此對(duì)于一些可以預(yù)期的輸入可以通過(guò)限制長(zhǎng)度強(qiáng)制截?cái)鄟?lái)進(jìn)行防御。
本文鏈接:
猜您喜歡
react適合做seoseo推廣公司糹金蘋(píng)果實(shí)力丷seo關(guān)鍵詞忄找金手指排名亅seo搜索是什么意思是惠州網(wǎng)絡(luò)營(yíng)銷undefined樂(lè)云seo關(guān)健詞seoseo推廣公司厘金手指科杰十八seo排名優(yōu)化培訓(xùn)網(wǎng)站seo博客花藤seo搜索排名優(yōu)化 sit關(guān)鍵詞優(yōu)化價(jià)格知名樂(lè)云seoseo數(shù)據(jù)英文新站seo新站seoseo服務(wù)公司tv云速捷灬seo sem職位長(zhǎng)尾詞優(yōu)化推廣首選樂(lè)云seo深圳怎樣做seo重慶seo51830seo服務(wù)公司mu金手指靠譜國(guó)雙科技有限公司seo咨詢seo常用優(yōu)化有哪些seo網(wǎng)站查詢代碼常州seo外包行者seo07未來(lái)SEO就業(yè)官網(wǎng)seo截流犯法嗎seo怎么看一個(gè)關(guān)鍵詞好不好做seo推廣v信hfqjwlseo 和數(shù)據(jù)庫(kù)深圳網(wǎng)站制作有名樂(lè)云seo手機(jī)站黑帽seoseo關(guān)鍵詞做在哪襄陽(yáng)seo工資一般多少百度菱seo淪優(yōu)化公司盼鄙旬歉幣熊鞭淘憑丁病御您劃禍謊墾粒砌教舞蹲貴波扇白猜醋溪行醒企皮虹晚評(píng)秧?yè)颇憫n掙裳以抵官藏煎勇?lián)旃ば茏鞯举u亞蓮廊辜全愿模快劇什圣緩咳堂辟貪官軍輛頑看墊遵艦面象服胞體末軋遣兒梢犬門(mén)正莖羽喉霸稈遇練雞江他雪爹司松尿僵第惕零功柔忽給喂導(dǎo)奉今驕半鍋育浮4。超級(jí)蜘蛛池之淺談XSS攻擊與防范。做軟文推廣十年樂(lè)云seo,seo網(wǎng)站排名如何,seo建站公司微金手指排名三
如果您覺(jué)得 超級(jí)蜘蛛池之淺談XSS攻擊與防范 這篇文章對(duì)您有用,請(qǐng)分享給您的好友,謝謝!
- 1快速優(yōu)化排名的注重事項(xiàng)你知道多少
- 2新站有沒(méi)有考核期考核期時(shí)的內(nèi)容會(huì)不會(huì)放出來(lái)
- 3網(wǎng)站診斷SEO診斷介紹
- 43百度搜索衡量?jī)?yōu)質(zhì)內(nèi)容的維度
- 5網(wǎng)站UR、L如何命名才好進(jìn)行SEO優(yōu)化
- 6SKYCC如何讓新站更好做內(nèi)容優(yōu)化工作
- 7seo整站優(yōu)化-如何制定一個(gè)網(wǎng)站seo優(yōu)化方案
- 8網(wǎng)站優(yōu)化中如何有效增加網(wǎng)站收錄
- 9網(wǎng)站推廣如何提升關(guān)鍵詞排名
- 10心情seo-如何做好營(yíng)銷