1. 程式人生 > >XSS跨站指令碼攻擊(一)----XSS攻擊的三種類型

XSS跨站指令碼攻擊(一)----XSS攻擊的三種類型

一、簡介

什麼是XSS?

百度百科的解釋: XSS又叫CSS  (Cross Site Script) ,跨站指令碼攻擊。它指的是惡意攻擊者往Web頁面裡插入惡意html程式碼,當用戶瀏覽該頁之時,嵌入其中Web裡面的html程式碼會被執行,從而達到惡意使用者的特殊目的。


它與SQL注入攻擊類似,SQL注入攻擊中以SQL語句作為使用者輸入,從而達到查詢/修改/刪除資料的目的,而在xss攻擊中,通過插入惡意指令碼,實現對使用者遊覽器的控制,獲取使用者的一些資訊。

二、分類

xss攻擊可以分成兩種型別:

1.非持久型攻擊
2.持久型攻擊

非持久型xss攻擊:顧名思義,非持久型xss攻擊是一次性的,僅對當次的頁面訪問產生影響。非持久型xss攻擊要求使用者訪問一個被攻擊者篡改後的連結,使用者訪問該連結時,被植入的攻擊指令碼被使用者遊覽器執行,從而達到攻擊目的。

持久型xss攻擊:持久型xss,會把攻擊者的資料儲存在伺服器端,攻擊行為將伴隨著攻擊資料一直存在。

也可以分成三類:

反射型:經過後端,不經過資料庫

儲存型:經過後端,經過資料庫

DOM:不經過後端,DOM—based XSS漏洞是基於文件物件模型Document Objeet Model,DOM)的一種漏洞,dom - xss是通過url傳入引數去控制觸發的。

三、原理

1.反射型

新建一個xss.php檔案並加入以下程式碼:

\\XSS反射演示
<form action="" method="get">
    <input type="text" name="xss"/>
    <input type="submit" value="test"/>
</form>
<?php
$xss = @$_GET['xss'];
if($xss!==null){
    echo $xss;
}

這段程式碼中首先包含一個表單,用於向頁面自己傳送 GET 請求,帶一個名為xss的引數。 然後 PHP 會讀取該引數,如果不為空,則直接打印出來,這裡不存在任何過濾。也就是說,如果xss中存在 HTML 結構性的內容,列印之後會直接解釋為 HTML 元素。

部署好這個檔案,訪問http://localhost/xss.php,直接輸入一個js程式碼,比如<script>alert('hack')</script>,


之後點選test:


我們輸入的HTML程式碼被執行了。用Firebug檢視,我們輸出的內容直接插入到了頁面中,解釋為<script>標籤。


反射型 XSS 的資料流向是:瀏覽器 -> 後端 -> 瀏覽器。

2.儲存型

把xss.php內容改為(同時資料庫中需要配置相應的表):

\\儲存XSS演示
<form action="" method="post">
    <input type="text" name="xss"/>
    <input type="submit" value="test"/>
</form>
<?php
[email protected]$_POST['xss'];
mysql_connect("localhost","root","123");
mysql_select_db("xss");
if($xss!==null){
    $sql="insert into temp(id,payload) values('1','$xss')";
    $result=mysql_query($sql);
    echo $result;
}


使用者輸入的內容還是沒有過濾,但是不直接顯示在頁面中,而是插入到了資料庫。

新建show.php,內容為:

mysql_connect("localhost","root","root");
mysql_select_db("xss");
$sql="select payload from temp where id=1";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)){
   echo $row['payload'];
}

該程式碼從資料庫讀取了之前插入的內容,並將其顯示出來。

先建立一個數據庫xss,建立temp表


然後訪問xss.php,像之前一樣輸入 HTML 程式碼


點選test,點選之後卻發現沒有任何動靜,但事實上,我們的資料已經插入到了資料庫中。


當我們訪問show.php查詢這個值的時候,程式碼就會被執行。


儲存型 XSS 的執行位置通常不同於輸入位置。我們可以看出,儲存行 XSS 的資料流向是:

瀏覽器 -> 後端 -> 資料庫 -> 後端 -> 瀏覽器。

3.dom-xss

把xss.php內容改為

<?php
error_reporting(0); //禁用錯誤報告
$name = $_GET["name"];
?>
<input id="text" type="text" value="<?php echo $name;?>" />
<div id="print"></div>
<script type="text/javascript">
var text = document.getElementById("text"); 
var print = document.getElementById("print");
print.innerHTML = text.value; // 獲取 text的值,並且輸出在print內。這裡是導致xss的主要原因。
</script>



DOM-XSS 的資料流向是:URL-->瀏覽器 

總結: 在易用上,儲存型XSS > DOM - XSS > 反射型 XSS。

注:反射型xss和dom-xss都需要在url加入js程式碼才能夠觸發。

四、利用

通過 XSS 來獲得使用者 Cookie 或其他有用資訊,利用平臺負責接收並儲存這些資訊。XSS利用平臺有很多種如XSS Shell, BeEF, Anehta, CAL9000。這裡使用xsser.me、搭建過程可參考這:http://blog.csdn.net/u011781521/article/details/53895363

進入搭建好的xsser.me平臺首頁輸入使用者名稱與密碼進行登入


成功之後會顯示主介面,左邊是模組列表,右邊是專案列表: 


我們點選左邊“我的專案”旁邊的“建立”按鈕:


名稱和描述可以隨便取,不影響使用。輸入時候點選“下一步”按鈕。之後會出現“配置程式碼”介面:



點選下一步、就會看到這個專案的一些資訊


點選完成。然後我們會在首頁看到我們的新專案,點選這個專案:


之後點選專案,進入一個頁面再點選右上方的檢視程式碼


就可以看到使用方法:


下面就演示下怎麼利用

把<script src="..."></script>注入到反射型 XSS 的演示頁面中。


上面的src="xxxx"是我另外建立的一個專案的地址,把你建立好的那個專案,提供的那個地址放進去,就可以了,雖然這個頁面沒反應,但是xsser.me那個專案就收到訊息了。


相關推薦

XSS 指令碼攻擊 學習筆記 () 概念與簡單XSS構造

XSS是個啥? ### XSS 跨站指令碼攻擊。通過HTML注入篡改網頁,插入惡意指令碼。 啥是XSS? 首先我們寫了一個PHP <?php $input = $_GET["id"]; echo "<div>".$input."&l

XSS指令碼攻擊()----XSS攻擊種類

一、簡介 什麼是XSS? 百度百科的解釋: XSS又叫CSS  (Cross Site Script) ,跨站指令碼攻擊。它指的是惡意攻擊者往Web頁面裡插入惡意html程式碼,當用戶瀏覽該頁之時

XSS指令碼攻擊以及解決辦法

來源:https://www.cnblogs.com/insaneXs/p/7465014.html XSS,全稱為Cross Site Script,跨站指令碼攻擊,是WEB程式中一種常見的漏洞。其主要的攻擊手段是在在利用網站上的可由使用者輸入資訊的地方,惡意注入含有攻擊性的指令碼,達到攻擊網

XSS指令碼攻擊----XSS攻擊種類

一、簡介 什麼是XSS? 百度百科的解釋: XSS又叫CSS  (Cross Site Script) ,跨站指令碼攻擊。它指的是惡意攻擊者往Web頁面裡插入惡意html程式碼,當用戶瀏覽該頁之時,嵌入其中Web裡面的html程式碼會被執行,從而達到惡意使用者的特殊目的。

XSS指令碼攻擊

閱讀目錄 1、簡介 2、原因解析 3、XSS攻擊分類   3.1、反射型xss攻擊   3.2、存貯型xss攻擊   3.3、DOMBasedXSS(基於dom的跨站點指令碼攻擊) 4、XSS攻擊例項分析   例1、簡單XSS攻擊   例2、盜取cookie 5

PHP漏洞全解(四)-xss指令碼攻擊【轉】

轉自:https://www.cnblogs.com/pingliangren/p/5586977.html XSS(Cross Site Scripting),意為跨網站指令碼攻擊,為了和樣式表css(Cascading Style  Sheet)區別,縮寫為XSS 跨站指令碼主

JAVA WEB中處理防SQL注入|防XSS指令碼攻擊(咋個辦呢 zgbn)

JAVA WEB中處理防SQL注入|防XSS跨站指令碼 在java web專案中,必然會涉及到從客戶端向服務端提交資料,那麼由於服務端對資料的處理等動作,會因為字串拼接和使用的特殊性,存在一些漏洞被人利用。 這篇文章,主要介紹一下在java web專案中,程

【安全測試】Web應用安全之XSS指令碼攻擊漏洞相關

閱讀目錄 歡迎轉載,也請註明出處 :http://www.cnblogs.com/Detector/p/8811216.html 謝謝!前言 以前都只是在各類文件中見到過XSS,也進行過相關的學習,但是都是一知半解,過了一段時間就忘了。 前幾天我們收到了了一份標題為《XX賬號暱稱引數中存在儲存XSS漏洞

XSS 指令碼攻擊

跨站指令碼攻擊(Cross Site Scripting),為了不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站指令碼攻擊縮寫為XSS。惡意攻擊者往Web頁面裡插入惡意Script程式碼,當用戶瀏覽該頁之時,嵌入

【安全測試】Web應用安全之XSS指令碼攻擊漏洞

前言 以前都只是在各類文件中見到過XSS,也進行過相關的學習,但是都是一知半解,過了一段時間就忘了。 前幾天我們收到了了一份標題為《XX賬號暱稱引數中存在儲存XSS漏洞》的報告文件,來源是一個叫漏洞盒子的機構,看它的官方介紹,是一個網際網路安全測試眾測平臺。 第一次在實際工作中遇到相關的問題,所以決定再系統的

PHP漏洞全解()-xss指令碼攻擊

本文主要介紹針對PHP網站的xss跨站指令碼攻擊。 跨站指令碼攻擊是通過在網頁中加入惡意程式碼,當訪問者瀏覽網頁時惡意程式碼會被執行或者通過給管理員發信息 的方式誘使管理員瀏覽,從而獲得管理員許可權,控制整個網站。 攻擊者利用跨站請求偽造能夠輕鬆地強迫使用者

什麼是XSS指令碼攻擊

跨站指令碼攻擊(Cross-site scripting,通常簡稱為XSS)是一種網站應用程式的安全漏洞攻擊,允許惡意使用者將程式碼注入到網頁上,其他使用者在觀看網頁時就會受到影響。這類攻擊通常包含了HTML以及使用者端指令碼語言。一般而言,跨站指令碼攻擊漏洞常見於網頁允許

XSS指令碼攻擊讀書筆記

0x00測試環境 1、firefox瀏覽器、firebug外掛。 2、Apache伺服器,php環境。 3、背景知識:跨站指令碼攻擊XSS,(cross site script)縮寫是CSS,但是為了和層疊樣式表(cascading style sheet ,css)區別,

XSS指令碼攻擊入門例項--DVWA

一、竊取Cookie       對於跨站的攻擊方法,使用最多的莫過於cookie竊取了,獲取cookie後直接藉助“Live http headers、Tamper Data、Gressmonkey (Cookie injector)、Fiddler”等等工具將cookie修改為獲取的cookie,這樣即可

XSS指令碼攻擊)-- 結合Spring MVC框架

1.web.xml中 <filter> <filter-name>xssFilter</filter-name> <filter-class>com.xxx.web.filter.XSSFilter</filte

ASP.NET 下 XSS 指令碼攻擊的過濾方法

做 WEB 開發當然要防止跨站指令碼攻擊了,尤其是開發BLOG、論壇、購物平臺等可以讓使用者新增自定義內容的網站。 有些開發者選擇了將所有Html內容都過濾掉,但是這些不適合有些需要將自定義內容開放給使用者的網站,比如淘寶、cnblogs、CSDN這樣的網站。 在 .net

XSS指令碼攻擊原理及防護方法

其次,通過使cookie和系統ip繫結來降低cookie洩露後的危險。這樣攻擊者得到的cookie沒有實際價值,不可能拿來重放。 3.儘量採用POST而非GET提交表單 POST操作不可能繞開javascript的使用,這會給攻擊者增加難度,減少可利用的跨站漏洞。 4.嚴格檢查refer檢查http refe

淺談XSS指令碼攻擊

 淺談 跨站指令碼攻擊(XSS) 一、概述 1、什麼是跨站指令碼攻擊 跨站指令碼攻擊(Cross Site Scripting),簡稱XSS,  是指:由於網站程式對使用者輸入過濾不足,致使攻擊者利用輸入可以顯示在頁面上對其他使用者造成影響的程式碼來盜取使用者資料、利用

詳解XSS指令碼攻擊原理及防禦

比較常見的一種場景就是,黑客寫下一篇包含有惡意JavaScript程式碼的部落格文章,文章發表後,所有訪問該部落格文章的使用者,都會在他們的瀏覽器中執行這段惡意的Javascript程式碼。黑客把惡意的指令碼儲存到伺服器端,所以這種XSS攻擊叫做“儲存型XSS”。也叫做“持久型XSS”,因為從效果上來說,它存

XSS指令碼攻擊過程的講解

跨站指令碼攻擊(也稱為XSS)指利用網站漏洞從使用者那裡惡意盜取資訊。以下為能夠演示器原理的完整樣例: 1.角色分配 有XSS漏洞的網站 受害訪問者。也就是瀏覽器 黑客的資料接受網站 2.