一、前端安全
1、什么是前端安全
首先了解什么是前端。前端從定義上來講是指一個網(wǎng)站的前臺部分,是展示給用戶看的部分。它不需要關(guān)注任何業(yè)務(wù)之間的邏輯處理,只需要安安靜靜地做好自己,老老實實的把自己最美的一面展示給用戶。
2、什么是Cookie
Cookie 是在 HTTP 協(xié)議下,服務(wù)器或腳本可以維護(hù)客戶工作站上信息的一種方式。Cookie 是由 Web 服務(wù)器保存在用戶瀏覽器(客戶端)上的小文本文件,它可以包含有關(guān)用戶的信息。無論何時用戶鏈接到服務(wù)器,Web 站點都可以訪問 Cookie 信息 。
Cookie 是臨時的或者是持續(xù)的。臨時的 Cookie 只在瀏覽器上保存一段規(guī)定的時間。
持續(xù)的 Cookie 則保存在用戶的 Cookie 文件中,下一次用戶返回時,仍然可以對它進(jìn)行調(diào)用。在 Cookie 文件中保存 Cookie,有些用戶擔(dān)心 Cookie 中的用戶信息被一些別有用心的人竊取,而造成一定的損害。其實,網(wǎng)站以外的用戶無法跨過網(wǎng)站來獲得 Cookie 信息。如果因為這種擔(dān)心而屏蔽 Cookie,肯定會因此拒絕訪問許多站點頁面。因為,當(dāng)今有許多 Web 站點開發(fā)人員使用 Cookie 技術(shù),例如 Session 對象的使用就離不開 Cookie 的支持。
3、Cookie的功能
服務(wù)器可以利用Cookies包含信息的任意性來篩選并經(jīng)常性維護(hù)這些信息,以判斷在HTTP傳輸中的狀態(tài)。Cookies最典型的應(yīng)用是判定注冊用戶是否已經(jīng)登錄網(wǎng)站,用戶可能會得到提示,是否在下一次進(jìn)入此網(wǎng)站時保留用戶信息以便簡化登錄手續(xù),這些都是Cookies的功用。另一個重要應(yīng)用場合是“購物車”之類處理。用戶可能會在一段時間內(nèi)在同一家網(wǎng)站的不同頁面中選擇不同的商品,這些信息都會寫入Cookies,以便在最后付款時提取信息。
4、Cookie的生命周期
Cookie可以保持登錄信息到用戶下次與服務(wù)器的會話,換句話說,下次訪問同一網(wǎng)站時,用戶會發(fā)現(xiàn)不必輸入用戶名和密碼就已經(jīng)登錄了(當(dāng)然,不排除用戶手工刪除Cookie)。而還有一些Cookie在用戶退出會話的時候就被刪除了,這樣可以有效保護(hù)個人隱私。
Cookie在生成時就會被指定一個Expire值,這就是Cookie的生存周期,在這個周期內(nèi)Cookie有效。
5、常用的查看cookie插件
Cookie Quick Manager
6、XSS攻擊能做什么
劫持cookie,模擬用戶操作,釣魚
二、常被利用的前端代碼
1. <script>Javascript的內(nèi)容</script>
2. 彈框函數(shù):
alert(“文本”) #只有一個確定的提示框
confirm(“文本”) #擁有確定和取消的提示框
prompt(“文本”, “默認(rèn)值”) #可以輸入文字的框
3. JavaScript中的事件
<a href=“demo.html” 事件="alert('1');">test</a>
事件:
onmouseover:鼠標(biāo)移入目標(biāo)元素上方。鼠標(biāo)移到其后代元素上時會觸發(fā)。
onmouseout:鼠標(biāo)移出目標(biāo)元素上方。
onmouseenter:鼠標(biāo)移入元素范圍內(nèi)觸發(fā),該事件不冒泡
onmouseleave:鼠標(biāo)移出元素范圍時觸發(fā),該事件不冒泡
4. <img src="" onerror=”JS代碼”/>
src:圖片的來源,必寫屬性;
當(dāng)圖片加載失敗時觸發(fā)onerror的事件;
三、JavaScript中常見的對象
Document:
document.cookie返回cookie的值
document.location.href 跳轉(zhuǎn)至某個頁面
document.write 在頁面中寫入
String:
indexOf 返回某個指定的字符串值在字符串中首次出現(xiàn)的位置
對大小寫敏感,沒有發(fā)現(xiàn)時返回-1
length 返回字符串的長度
四、XSS原理
XSS又叫CSS(Cross Site Script),跨站腳本攻擊。因為與html中的css樣式同,所以稱之為XSS。在OWASP top 10 2013年度中排第三名,在OWASP top 10 2017年度中排第7名。
屬于web應(yīng)用中計算機(jī)安全漏洞,是惡意的web訪問者將腳本植入到提供給用戶使用的頁面中,通常是使用JavaScript編寫的危險代碼,當(dāng)用戶使用瀏覽器訪問頁面時,腳本會被執(zhí)行,從而達(dá)到攻擊者目的。
XSS攻擊最終目的是在網(wǎng)頁中嵌入客戶端惡意代碼,最常用的攻擊代碼是JavaScript語言,但也會使用其他的腳本語言,例如: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危害
- 網(wǎng)站彈框(刷流量)
- 網(wǎng)站掛馬
- 會話劫持
- Cookie被盜取
- 用戶提權(quán)
- 賬號被盜
- 盡量DDOS
- 蠕蟲攻擊
六、作為一名滲透人員(黑客)如何去挖掘XSS漏洞?
- 尋找注入點,數(shù)據(jù)有交互的地方(搜索框、留言板)
- 根據(jù)測試流程首先實驗一些特殊符號的輸入。發(fā)現(xiàn)可以正常輸出,說明后臺并沒有進(jìn)行相關(guān)的過濾。例子:'<>?"&/6666
- 如果有過濾則進(jìn)行相關(guān)的繞過。
七、XSS的分類與利用
1、XSS實驗常用語句
<script>alert(1)</script>
2、反射型(非持續(xù)型)
反射型跨站腳本也稱作非持久型、參數(shù)型跨站腳本。主要用于將惡意腳本附加到URL地址的參數(shù)中。
產(chǎn)生層面:前端
漏洞特征:一次性的、前端執(zhí)行、不會儲存在后端數(shù)據(jù)庫
危害等級:中注意:在黑客眼中,這個實際上沒啥用,就是自己騙自己,影響只對自己有用,對其他人沒效果。
原理
-
構(gòu)造一個后端php文件( xss.php ):
<?php $name=$_GET['name’]; echo"welcome $name"; ?> -
前端訪問這個xss.php頁面,并使用name參數(shù)進(jìn)行數(shù)據(jù)傳遞,數(shù)據(jù)值為2。
例如在瀏覽器url欄輸入:ip地址/xss.php?name=2 -
前端識別數(shù)據(jù)執(zhí)行代碼返回頁面。
數(shù)據(jù)交互過程:用戶輸入數(shù)據(jù)->后端執(zhí)行php->返回數(shù)據(jù)給前端并執(zhí)行(回顯) -
插入一個惡意js腳本()
例如在瀏覽器url欄輸入:
ip地址/xss.php?name= -
返回的代碼并執(zhí)行了
3、存儲型(持續(xù)型)
此類XSS不需要用戶單擊特定URL就能執(zhí)行跨站腳本。
攻擊者事先將惡意JavaScript代碼上傳或存儲到漏洞服務(wù)器中。
當(dāng)受害者瀏覽包含此惡意JavaScript代碼的頁面就會執(zhí)行惡意代碼。
產(chǎn)生層面:后端
漏洞特征:持久性的、前端執(zhí)行、儲存在后端數(shù)據(jù)庫
危害等級:高
3.1、交互原理:
用戶輸入數(shù)據(jù)->后端執(zhí)行php代碼->存入數(shù)據(jù)庫某張表->返回數(shù)據(jù)給php頁面->回顯前端
3.2、數(shù)據(jù)庫查看
die() //函數(shù)輸出一條消息,并退出當(dāng)前腳本
trim() //函數(shù)從字符串的兩端刪除空白字符和其他預(yù)定義字符
stripslashes() //刪除反斜杠
mysql_real_escape_string() //轉(zhuǎn)義 SQL 語句中使用的字符串中的特殊字符
mysql_query(query) //mysql_query() 函數(shù)執(zhí)行一條 MySQL 查詢
mysql_error() //返回上一個 MySQL 操作產(chǎn)生的文本錯誤信息
use dvwa;
show tables;
select * from guestbook;
delete from guestbook where comment_id=1;
4、DOM型
XSS原理客戶端的腳本程序可以通過DOM動態(tài)地檢查和修改頁面內(nèi)容。
程序執(zhí)行不依賴于服務(wù)器端的數(shù)據(jù),從客戶端獲得DOM中的數(shù)據(jù)并在本地執(zhí)行。
瀏覽器用戶可以操縱DOM中的一些對象,例如URL、location等。
用戶在客戶端輸入的數(shù)據(jù)如果包含了惡意JavaScript腳本,而這些腳本沒有經(jīng)過適當(dāng)?shù)倪^濾和消毒,應(yīng)用程序就可能受到基于DOM的XSS攻擊。
產(chǎn)生層面:前端、特殊的反射型XSS
漏洞特征:一次性的、前端執(zhí)行、不會儲存在后端數(shù)據(jù)庫
危害等級:中文章來源:http://www.zghlxwxcb.cn/news/detail-500259.html
八、XSS漏洞繞過方法
1、XSS常見語句
1.1、常見XSS語句標(biāo)簽,<script>
1)<script>alert(1)</script>
2)<script src=http://baidu.cn/xss/xss.js></script>
3)‘><script>alert(1)</script>
1.2、常見XSS語句標(biāo)簽,<img>
1)<img src=x onerror=alert(/xss/)>
2)<img src=javascript:alert(1)>//版本,E7.0|IE6.0,才能執(zhí)行
3)<img src=# onmouseover="alert(1)">
1.3、常見XSS語句標(biāo)簽,<input>
1)<input onclick=alert(360)>
2)<input onfocus="alert('xss');">
3)<input onblur=alert("xss") autofocus><input autofocus>離開競爭焦點,從而觸發(fā)onblur事件
1.4、XSS 閉合標(biāo)簽
1)'><script>alert(1)</script>
2)</script><script>alert(1)</script>
2、XSS漏洞繞過方法
1)大小寫繞過 <ScRiPt>alert(1)</ScRiPt>
2)雙寫繞過 <sc<script>ript>alert(/xss/)</script>
3)反引號繞過 `` 繞過單雙引號的過濾
4)關(guān)閉標(biāo)簽(利用<>關(guān)閉標(biāo)簽) "> <script>alert(1)</script>
5)超鏈接標(biāo)簽 < a href= > 1 </ a>
6)圖片鏈接繞過 < img src=1 onerror=alert(1)>
7)編碼繞過(八進(jìn)制、十進(jìn)制、十六進(jìn)制編碼、html實體編碼、url編碼、base64)
8)空格、回車、換行符、tab、混淆
..................
九、XSS漏洞之防御
1、防御手段
- CSP內(nèi)容安全策略
- HttpOnly
- 輸入輸出檢查
2、防御函數(shù)(PHP)
1)trim()
//函數(shù)從字符串的兩端刪除空白字符和其他預(yù)定義字符
2)stripslashes()
//刪除反斜杠
3)substr_replace(st1,st2,n)
//str1 為原始字符串,str2為替換的字符串,n代表替換位置,第n位之后替換
4)addslashes()
//在預(yù)定義字符之前添加反斜杠的字符串
5)strip_tags()
//剝?nèi)プ址械?HTML、XML 以及 PHP 的標(biāo)簽
6)htmlspecialchars()
//把預(yù)定義的字符轉(zhuǎn)換為 HTML 實體
7)preg_replace($mode,$replacement,$str [,int limit 匹配多少次])
//查找和替換子字符串(類似str_replace)
..................
十一、具體靶場例子
鏈接: pikache靶場通關(guān)——XSS漏洞文章來源地址http://www.zghlxwxcb.cn/news/detail-500259.html
到了這里,關(guān)于網(wǎng)絡(luò)安全進(jìn)階學(xué)習(xí)第二課——XSS跨站腳本攻擊的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!