XSS注入


XSS簡介

XSS攻擊通常指的是通過利用網頁開發時留下的漏洞,通過巧妙的方法注入惡意指令代碼到網頁,使用戶加載並執行攻擊者惡意制造的網頁程序。這些惡意網頁程序通常是JavaScript,但實際上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻擊成功后,攻擊者可能得到包括但不限於更高的權限(如執行一些操作)、私密網頁內容、會話和cookie等各種內容。

XSS注入

<script>alert(1)</script>

通過這段js代碼,彈個框來證明存在xss漏洞。
彈框只是為了證明存在此漏洞。而此漏洞的利用方式由很多種。
比如,可以使用xss平台:
平台地址
平台使用教程

當某人進入帶有腳本的頁面時,js腳本會獲取他的cookie並發往xss平台。

你只需要登錄xss平台等待即可,拿到cookie后,可以不需要密碼登錄他的賬號。

對於存儲型xss漏洞的表現形式,比較經典的是留言板。但是我們都是遵紀守法的好學生,不能對外面的網站進行測試,所以我拿了我自己的web項目做了一波操作。
發現存在xss注入,雖然Java的預處理查詢有着防御sql注入的功能,但是針對於xss注入,還需要做很多防范措施。

選擇平台生成的一些腳本注入之后,接收到了cookie,ip等相關信息

同理任何訪問被xss注入后的用戶都會被收集信息。
其實在注入成功之后,你會發現留言內容和留言者的部分都為空,因為插入的js代碼已經被瀏覽器解析執行了!

這時我們按F12,打開瀏覽器的開發者工具,就能發現嵌入的js腳本。

XSS攻防

作為一個開發,我們要保證項目的抗壓能力。

如何防范xss?

	在input標簽里面加上maxlength屬性
	
	<input type="text" name="nickname" placeholder="留言者昵稱" maxlength="10"> 
	至於原理,就是因為js腳本的形式為<script></script>長度為17,所以只要我們在前端對長度進行限制,就可以阻止黑客進行xss攻擊了
	
	可是!開發可沒這么好做!
	
	作為攻擊者,我們同樣可以修改前端代碼,具體的操作是使用瀏覽器的F12(開發者工具)我們可以直接進行長度的修改。
	
	另外,還可以用抓包的方法,在包里面直接寫,也是不受長度限制的。
	所以這種方式只能針對"腳本小子",並不切合實際
      2.
	對關鍵字script進行過濾

	很容易發現,要想進行xss攻擊,必須插入一段js腳本,而js腳本的特征是很明顯的,腳本中包含script關鍵字,那么我們只需要進行script過濾即可。
	
	但是js腳本是一種弱類型語言,不區分大小寫,所以只需要對某一字母大小寫切換,就可以實現繞過屏蔽。
	
	例:
	<sCrIPt>alert(1)</ScripT> 
	這時候你可能會說,那把大小寫一起屏蔽了不久行了?
	其實不然,因為語言特性,可以使用雙寫script的方式再次進行繞過  
	例:
	<Sscriptcript>alert(1)</Sscriptcript> 
	原因,前面的S和后面的cript組合在一起,構成了新的Script關鍵字。
      3.
	使用正則表達式過濾

	攻擊者如何再一次繞過?
	
	答案是:用img標簽的oneerror屬性
	
	<img src=x onerror=alert(1)> 
      4.
	過濾alert關鍵字
	
	那么,攻擊者該怎么辦呢?

	答案是:編碼繞過
	
	<a href=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;>a</a> 
	這種編碼方式為字符編碼

	字符編碼:十進制、十六進制ASCII碼或unicode 字符編碼,樣式為“&#數值;”, 例如“j”可以編碼為“&#106;”或“&#x6a;”
	
	上述代碼解碼之后如下:
	
	<a href=javascript:alert(1)>a</a> 
	你能明顯感覺到限制:由於使用到了a標簽,所以只有點擊時,才會彈框。
	
	能不能讓所有進入這個頁面的人都彈框?

	當然可以了:用iframe標簽編碼
	<iframe src=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;> 
	這種寫法,同樣既沒有script關鍵字,又沒有alert關鍵字。
	由於使用了iframe標簽,留言板的樣式會發生變形。實戰中盡量不要用。```

    ### 小結
其實關於xss的注入方法數不勝數,學習的道路坎坎坷坷,只能一步一個坑的慢慢填。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM