跨站脚本(XSS)漏洞 (一)
跨站腳本(XSS)漏洞
跨站腳本漏洞概述
Cross-Site Scripting 簡稱為“CSS”,為避免與前端疊成樣式表的縮寫"CSS"沖突,故又稱XSS。一般XSS可以分為如下幾種常見類型:
1.反射性XSS;
2.存儲(chǔ)型XSS;
3.DOM型XSS;
XSS漏洞一直被評(píng)估為web漏洞中危害比較大的漏洞,在OWASP TOP10的排名中一直屬于前三的江湖地位。
XSS是一種發(fā)生在Web前端的漏洞,所以其危害的對(duì)象也主要是前端用戶。
形成XSS漏洞的主要原因是程序?qū)斎牒洼敵鰶]有做合適的處理,導(dǎo)致“精心構(gòu)造”的字符輸出在前端時(shí)被瀏覽器當(dāng)作有效代碼解析執(zhí)行從而產(chǎn)生危害。
因此在XSS漏洞的防范上,一般會(huì)采用“對(duì)輸入進(jìn)行過濾”和“輸出進(jìn)行轉(zhuǎn)義”的方式進(jìn)行處理:
輸入過濾:對(duì)輸入進(jìn)行過濾,不允許可能導(dǎo)致XSS攻擊的字符輸入;
輸出轉(zhuǎn)義:根據(jù)輸出點(diǎn)的位置對(duì)輸出到前端的內(nèi)容進(jìn)行適當(dāng)轉(zhuǎn)義;
XSS漏洞可以用來進(jìn)行釣魚攻擊、前端js挖礦、用戶cookie獲取。甚至可以結(jié)合瀏覽器自身的漏洞對(duì)用戶主機(jī)進(jìn)行遠(yuǎn)程控制等。
跨站腳本漏洞概述-XSS(竊取cookie)攻擊流程
跨站腳本漏洞常見類型
危害:存儲(chǔ)型>反射型>DOM型
反射型
交互的數(shù)據(jù)一般不會(huì)被存在數(shù)據(jù)庫里面,一次性,所見即所得,一般出現(xiàn)在查詢類頁面等。
存儲(chǔ)型
交互的數(shù)據(jù)會(huì)被存在數(shù)據(jù)庫里面,永久性存儲(chǔ),一般出現(xiàn)在留言板,注冊(cè)等頁面。造成持久性損害
DOM型
不與后臺(tái)服務(wù)器產(chǎn)生數(shù)據(jù)交互,是一種通過DOM操作前端代碼輸出的時(shí)候參生的問題,一次性也屬于 反射型。
XSS漏洞形成原因
跨站腳本漏洞測試流程
當(dāng)我們?nèi)フ乙粋€(gè)目標(biāo)站點(diǎn)上面是否存在xss漏洞的時(shí)候,我們一般會(huì)按照什么思路去進(jìn)行xss漏洞的手動(dòng)挖掘?
① 在目標(biāo)站點(diǎn)上找到輸入點(diǎn),比如查詢接口,留言板等;
②輸入一組“特殊字符(比如尖括號(hào)、單引號(hào)雙引號(hào)等)+唯一識(shí)別字符”,點(diǎn)擊提交后,查看返回的源碼,是否有做對(duì)應(yīng)的處理;
③通過搜索定位到唯一字符,結(jié)合唯一字符前后語法確認(rèn)是否可以構(gòu)造執(zhí)行js的條件(構(gòu)造閉合);
④提交構(gòu)造的腳本代碼(以及各種繞過姿勢),看是否可以成功執(zhí)行,如果成功執(zhí)行則說明存在XSS漏洞;
TIPS:
①一般查詢接口容易出現(xiàn)反射型XSS,留言板容易出現(xiàn)存儲(chǔ)型XSS;
②由于后臺(tái)可能存在過濾措施,構(gòu)造的script可能會(huì)被過濾掉,而無法生效,或者環(huán)境限制了執(zhí)行(瀏覽器);
③通過變化不同的script,嘗試?yán)@過后臺(tái)過濾機(jī)制;
XSS實(shí)驗(yàn)演示
實(shí)驗(yàn)環(huán)境:
測試目標(biāo):pikachu–xss
測試工具:Firefox+瀏覽器開發(fā)者工具(Chrome安全措施比較嚴(yán)格)
從一個(gè)反射型的XSS(get)彈窗開始認(rèn)識(shí)XSS漏洞
按照剛剛的思路,去查看一下頁面源代碼:
然后ctrl+F輸入6666,可以找到輸出點(diǎn),可以看到’"<>6666被輸出在p標(biāo)簽里面,也就意味 著,我們輸入的特殊字符又原封不動(dòng)的輸出到p標(biāo)簽,是不是意味著,我們?cè)谡覀€(gè)地方輸入一些正確的js代碼,它也會(huì)原封不動(dòng)的返回回來呢?
當(dāng)在輸入框輸不了那么長的字符,可以通過F12——》選擇元素進(jìn)行修改
因?yàn)槭欠瓷湫偷膞ss,按照剛剛的邏輯,刷新過后源碼中的alert就沒了,不會(huì)彈窗。
反射型跨站腳本漏洞之get&post
GET方式的XSS漏洞更加容易被利用,一般利用的方式是將帶有跨站腳本的URL偽裝后發(fā)送給目標(biāo)而POST方式由于是以表單方式提交,無法直接使用URL方式進(jìn)行攻擊,如何利用?
GET和POST典型區(qū)別:
GET是以u(píng)rl方式提交數(shù)據(jù);
POST是以表單方式在請(qǐng)求體里面提交。
存儲(chǔ)型xss和DOM型XSS的解析
存儲(chǔ)型XSS漏洞
存儲(chǔ)型XSS漏洞跟反射型形成的原因一樣,不同的是存儲(chǔ)型xss下攻擊者可以將腳本注入到后臺(tái)存儲(chǔ)起來,構(gòu)成更加持久的危害。因此存儲(chǔ)型XSS也稱為“永久型”XSS。
存儲(chǔ)型XSS漏洞演示
輸入’"<>?&66666試試看
查看網(wǎng)頁源代碼
在留言板上輸入
每次刷新的時(shí)候都會(huì)彈出彈框,因?yàn)閯倓傔@個(gè)留言已經(jīng)被存到數(shù)據(jù)庫里面了,每次去訪問這個(gè)頁面的時(shí)候,都會(huì)從數(shù)據(jù)庫里面把這個(gè)留言加載出來觸發(fā)js腳本的運(yùn)行。
DOM型XSS
HTML DOM教程:https://www.w3school.com.cn/htmldom/index.asp
DOM型XSS漏洞演示
DOM是純前端的
通過構(gòu)造閉合,去執(zhí)行我們預(yù)期的代碼。
構(gòu)造了一個(gè)payload:
#'onclick="alert(111)">
構(gòu)造閉合
構(gòu)造了一個(gè)payload:
#'onclick="alert(111)">
這其實(shí)跟反射型xss一樣,只需要把下面這段URL發(fā)送給需要攻擊的用戶,它只要打開這個(gè)鏈接,我們構(gòu)造的js代碼就會(huì)被插入到用戶的頁面里面去
總結(jié)
以上是生活随笔為你收集整理的跨站脚本(XSS)漏洞 (一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pikachu皮卡丘靶机系统安装~
- 下一篇: Hadoop下水环境模拟集群运算模式