OWASP Top10之XSS簡(jiǎn)述

一茵肃、什么是 XSS

? ? XSS全稱(Cross Site Scripting)跨站腳本攻擊盐须,是最常見的Web應(yīng)用程序安全漏洞之一颓芭,位于OWASP top 10 2013/2017年度分別為第三名和第七名垒迂,XSS是指攻擊者在網(wǎng)頁中嵌入客戶端腳本牵舵,通常是JavaScript編寫的危險(xiǎn)代碼堂污,當(dāng)用戶使用瀏覽器瀏覽網(wǎng)頁時(shí)家肯,腳本就會(huì)在用戶的瀏覽器上執(zhí)行,從而達(dá)到攻擊者的目的盟猖。

? ? 從上面中的一段話讨衣,可以得知,XSS屬于客戶端攻擊式镐,受害者最終是用戶反镇,但特別要注意的是網(wǎng)站管理人員也屬于用戶之一。這就意味著XSS可以進(jìn)行“服務(wù)端”攻擊娘汞,因?yàn)楣芾韱T要比普通用戶的權(quán)限大得多歹茶,一般管理員都可以對(duì)網(wǎng)站進(jìn)行文件管理,數(shù)據(jù)管理等操作你弦,而攻擊者一般也是靠管理員身份作為“跳板”進(jìn)行實(shí)施攻擊惊豺。

? ? XSS攻擊最終目的是在網(wǎng)頁中嵌入客戶端惡意腳本代碼,最常用的攻擊代碼是javascript語言禽作,但也會(huì)使用其它的腳本語言尸昧,例如:ActionScript、VBscript旷偿。而如今的互聯(lián)網(wǎng)客戶端腳本基本是基于Javascript,所以如果想要深入研究XSS烹俗,必須要精通Javascript碍沐。

? ? XSS換句話說,JavaScript能做到什么效果衷蜓,XSS的胃口就有多大。這完全不是危言聳聽尘喝。javascript可以用來獲取用戶的cookie磁浇,彈出窗口,那么存在XSS漏洞的網(wǎng)站朽褪,XSS就可以用來盜取用戶Cookie,廢掉頁面置吓,導(dǎo)航到惡意網(wǎng)站!更高端的XSS代碼完全可以進(jìn)行監(jiān)控你的鍵盤操作缔赠,模仿Windows注銷界面衍锚,誘導(dǎo)你輸入開機(jī)密碼!而攻擊者需要做的僅僅是向你的代碼中注入Javascript代碼嗤堰!

二戴质、XSS漏洞出現(xiàn)的原因

? ? 程序?qū)斎牒洼敵龅目刂撇粔驀?yán)格,導(dǎo)致"精心構(gòu)造“的腳本輸入后,在輸?shù)角岸藭r(shí)被瀏覽器當(dāng)作有效代碼解析執(zhí)行從而產(chǎn)生危害.

三、XSS的危害

1踢匣、首先對(duì)于那些半年沒有更新的小企業(yè)網(wǎng)站來說告匠,發(fā)生XSS漏洞幾乎沒有什么用。一般在各類的社交平臺(tái)离唬,郵件系統(tǒng)后专,開源流行的Web應(yīng)用,BBS输莺,微博等場(chǎng)景中戚哎,造成的殺傷力卻十分強(qiáng)大。

2嫂用、劫持用戶cookie是最常見的跨站攻擊形式型凳,通過在網(wǎng)頁中寫入并執(zhí)行腳本執(zhí)行文件(多數(shù)情況下是JavaScript腳本代碼),劫持用戶瀏覽器尸折,將用戶當(dāng)前使用的sessionID信息發(fā)送至攻擊者控制的網(wǎng)站或服務(wù)器中啰脚。

3、“框架釣魚”实夹。利用JS腳本的基本功能之一:操作網(wǎng)頁中的DOM樹結(jié)構(gòu)和內(nèi)容橄浓,在網(wǎng)頁中通過JS腳本,生成虛假的頁面亮航,欺騙用戶執(zhí)行操作荸实,而用戶所有的輸入內(nèi)容都會(huì)被發(fā)送到攻擊者的服務(wù)器上。

4缴淋、掛馬(水坑攻擊)

5准给、有局限性的鍵盤記錄

四泄朴、 XSS分類

1、反射型XSS或不持久型XSS(中危)

交互的數(shù)據(jù)一般不會(huì)被存在在數(shù)據(jù)庫里面,只是簡(jiǎn)單的把用戶輸入的數(shù)據(jù)反射給瀏覽器露氮,一次性祖灰,所見即所得。

2畔规、儲(chǔ)存型XSS 或持久型 XSS(高危)

交互的數(shù)據(jù)會(huì)被存在在數(shù)據(jù)庫里面,永久性存儲(chǔ),具有很強(qiáng)的穩(wěn)定性局扶。

3、DOM XSS

不與后臺(tái)服務(wù)器產(chǎn)生數(shù)據(jù)交互,通過前端的dom節(jié)點(diǎn)形成的XSS漏洞叁扫。

什么是DOM:DOM全稱是Document Object Model三妈,也就是文檔對(duì)象模型。我們可以將DOM理解為莫绣,一個(gè)與系統(tǒng)平臺(tái)和編程語言無關(guān)的接口畴蒲,程序和腳本可以通過這個(gè)接口動(dòng)態(tài)地訪問和修改文檔內(nèi)容、結(jié)構(gòu)和樣式对室。當(dāng)創(chuàng)建好一個(gè)頁面并加載到瀏覽器時(shí)模燥,DOM就悄然而生,它會(huì)把網(wǎng)頁文檔轉(zhuǎn)換為一個(gè)文檔對(duì)象掩宜,主要功能是處理網(wǎng)頁內(nèi)容涧窒。故可以使用 Javascript 語言來操作DOM以達(dá)到網(wǎng)頁的目的。

五锭亏、XSS可能存在的地方

HTML context

Attribute Context

URL Context

Style Context

Script Context

六纠吴、XSS測(cè)試方法

1、工具掃描:APPscan慧瘤、AWVS

2戴已、手工測(cè)試:Burpsuite、firefox(hackbar)锅减、XSSER XSSF

? ? 使用手工檢測(cè)Web應(yīng)用程序是否存在XSS漏洞時(shí)糖儡,最重要的是考慮那里有輸入,輸入的數(shù)據(jù)在什么地方輸出怔匣。在進(jìn)行手工檢測(cè)XSS時(shí)握联,人畢竟不像軟件那樣不知疲憊,所以一定要選擇有特殊意義的字符每瞒,這樣可以快速測(cè)試是否存在XSS金闽。

(1)在目標(biāo)站點(diǎn)上找到輸入點(diǎn),比如查詢接口,留言板等;

(2)輸入一組"特殊字符+唯一識(shí)別字符",點(diǎn)擊提交后,查看返回的源碼,是否有做對(duì)應(yīng)的處理;

(3)通過搜索定位到唯一字符,結(jié)合唯一字符前后語法確認(rèn)是否可以構(gòu)造執(zhí)行js的條件(構(gòu)造閉合);提交構(gòu)造的腳本代碼,看是否可以成功執(zhí)行,如果成功執(zhí)行則說明存在XSS漏洞;

七、XSS繞過

? ? 大多數(shù)網(wǎng)站為了避免xss的攻擊剿骨,對(duì)于攻擊者的輸入都采取了過濾的措施代芜,導(dǎo)致攻擊者通常不能正常插入惡意代碼來達(dá)到攻擊目的。但是仍存在一些漏洞可以利用浓利,來繞過過濾措施挤庇。

? ? xss繞過的方法有許多钞速,主要取決于攻擊者的思路和對(duì)前端技術(shù)的掌握,以下介紹幾個(gè)簡(jiǎn)單的繞過方法嫡秕。

(1)對(duì)前端的限制可以嘗試進(jìn)行抓包重發(fā)或者修改前端的HTML渴语。

(2)防止后臺(tái)對(duì)輸入的內(nèi)容進(jìn)行正則匹配來過濾輸入,對(duì)于這樣的過濾可以考慮大小寫混合輸入的方法昆咽。

例:<sCRipT>alert('666')</sCrIPt>

(3)防止后臺(tái)對(duì)輸入的內(nèi)容進(jìn)行替換遵班,采用拼拼湊的輸入方法。

例:<sc<script>ript>alert('666')</scr<script>ipt>

(4)使用注釋來干擾后臺(tái)對(duì)輸入內(nèi)容的識(shí)別潮改。

例:<sc<!--test-->ript>alert('666')</scr<!--tshauie-->ipt>

(5)編碼

思路:后臺(tái)有可能會(huì)對(duì)代碼中的關(guān)鍵字進(jìn)行過濾,但我們可以嘗試將關(guān)鍵字進(jìn)行編碼后在插入腹暖,瀏覽器對(duì)改編碼進(jìn)行識(shí)別時(shí)汇在,會(huì)翻譯成正常的代碼。(注意:編碼在輸出時(shí)是否會(huì)被正常識(shí)別和翻譯才是關(guān)鍵脏答,不是所有的編碼都是可以的)

八糕殉、XSS繞過之htmlspecialchars()函數(shù)

htmlspecialchars()函數(shù)把一些預(yù)定義的字符轉(zhuǎn)換為 HTML 實(shí)體。

預(yù)定義的字符是:

& (和號(hào))成為 &amp

" (雙引號(hào))成為 &quot

’ (單引號(hào))成為&#039

< (小于)成為 &lt

>(大于)成為 &gt

該函數(shù)的語法:htmlspecialchars(string,flags,character-set,double_encode)

過濾原理:htmlspecialchars() 函數(shù)把預(yù)定義的字符轉(zhuǎn)換為 HTML 實(shí)體殖告,從而使XSS攻擊失效阿蝶。但是這個(gè)函數(shù)默認(rèn)配置不會(huì)將單引號(hào)和雙引號(hào)過濾,只有設(shè)置了quotestyle規(guī)定如何編碼單引號(hào)和雙引號(hào)才能會(huì)過濾掉單引號(hào)

可用的quotestyle類型:

ENT_COMPAT - 默認(rèn)黄绩。僅編碼雙引號(hào)

ENT_QUOTES - 編碼雙引號(hào)和單引號(hào)

ENT_NOQUOTES - 不編碼任何引號(hào)

可使用以下語句繞過:? q' onclick='alert(666)'

九羡洁、XSS常規(guī)防范

XSS防御的總體思路是:對(duì)輸入進(jìn)行過濾,對(duì)輸出進(jìn)行編碼

過濾:根據(jù)業(yè)務(wù)需求進(jìn)行過濾爽丹,比如輸出點(diǎn)要求輸入手機(jī)號(hào)筑煮,則只允許輸入手機(jī)號(hào)格式的數(shù)字。

轉(zhuǎn)義:所有輸出到前端的數(shù)據(jù)都根據(jù)輸出點(diǎn)進(jìn)行轉(zhuǎn)義粤蝎,比如輸出到html中進(jìn)行html實(shí)體轉(zhuǎn)義真仲,輸入到JS里面的進(jìn)行JS轉(zhuǎn)義

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市初澎,隨后出現(xiàn)的幾起案子秸应,更是在濱河造成了極大的恐慌,老刑警劉巖碑宴,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件软啼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡延柠,警方通過查閱死者的電腦和手機(jī)焰宣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捕仔,“玉大人匕积,你說我怎么就攤上這事盈罐。” “怎么了闪唆?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵盅粪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我悄蕾,道長(zhǎng)票顾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任帆调,我火速辦了婚禮奠骄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘番刊。我一直安慰自己含鳞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布芹务。 她就那樣靜靜地躺著蝉绷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枣抱。 梳的紋絲不亂的頭發(fā)上熔吗,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音佳晶,去河邊找鬼桅狠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛轿秧,可吹牛的內(nèi)容都是我干的垂攘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼淤刃,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼晒他!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起逸贾,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤陨仅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后铝侵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灼伤,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年咪鲜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狐赡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疟丙,死狀恐怖颖侄,靈堂內(nèi)的尸體忽然破棺而出鸟雏,到底是詐尸還是另有隱情,我是刑警寧澤览祖,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布孝鹊,位于F島的核電站,受9級(jí)特大地震影響展蒂,放射性物質(zhì)發(fā)生泄漏又活。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一锰悼、第九天 我趴在偏房一處隱蔽的房頂上張望柳骄。 院中可真熱鬧,春花似錦箕般、人聲如沸耐薯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鸠踪,卻和暖如春丙者,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背营密。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工械媒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人评汰。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓纷捞,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親被去。 傳聞我的和親對(duì)象是個(gè)殘疾皇子主儡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359