XSS漏洞的危害
- 盜取使用者的cookie
- 跳轉的釣魚網站
- 蠕蟲
- 檢視浏覽器資訊
1.反射型XSS
非持久性XSS,也叫反射性XSS,通過GET和POST方法,向股務器端輸入資料。用
戶輸入的資料通常被放置在URL的 query string中,或者是form資料中,如果服務
器端對輸入的資料不進行過濾,驗證或編碼,就直接将使用者輸入的資訊直接星瑙給
客戶,則可能會造成反射型XSS
反射型XS是比校昔遍的XSS,其危害程度遹常被認為較小,但是某些反射型
XSS造成的後果會很嚴重,如在輸入框的name中輸入metahttp
equI’ refresh’ content="5’/>,殷務器不加處理,将name的值直接送到浏
器,則浏岚器會每5秒自動新一次嚴重者會導緻伺服器崩潰
-
測試
代碼
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>測試XSS測試</title> </head> <body> <h1>請輸入</h1> <form action="" method="post"> <input type="text" name="fname"> <input type="submit" value="送出"> <?php if(isset($_POST['fname'])){ $a=$_POST['fname']; echo "<br/>"."你輸入的是:".$a; }else{ } ?> </body> </html>
輸入什麼他就傳回什麼,沒有進行過濾
我們輸入
可以看到在web頁面上被執行了<script>alert('a')</script>
-
閉合xss
代碼
代碼介紹<?php $a=$_GET['a']; ?> <script> var xss='<?php echo $a; ?>'; document.write(xss); </script>
标簽用于定義用戶端腳本,比如 JavaScript,上面就是js代碼<script>
是定義一個xss變量,裡面是’<?php echo $a; ?>’var
write()
方法可向文檔寫入 HTML 表達式或 JavaScript 代碼,上面的就是叫輸出出來
上面這個其實存在xss漏洞的
URL
URL介紹
s使用來閉合前面的</script>
就可以執行了<script>alert('a')</script>
存儲型XSS
持久型,也叫存儲型XSS。通常是因為伺服器端将使用者輸入的惡意腳本沒有通過
驗證就直接存儲在資料庫,并且毎次通過調用資料庫的方式,将資料呈現在浏覽器
上。則該XSS跨站腳本攻擊将一直存在。若其他使用者通路該頁面,則惡意腳本就會
被觸發,用于盜取其他使用者的私人資訊。
-
測試
代碼
寫入資料庫
檔案
a.php
存儲的内容如下 檢視一下資料庫已經存入到資料庫裡面了<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>登陸</title> </head> <body> <form action="" method="post"> 請輸入ID:<input type="text" name="id"><br/> 要儲存的内容:<input type="text" name="user"><br/> <input type="submit" value="點選"/> </form> <?php if(isset($_POST['id'])&&isset($_POST['user'])){ $id=$_POST['id']; $user=$_POST['user']; $s = "127.0.0.1"; $u= "root"; $p = "123456"; // 建立連接配接 $conn = mysqli_connect($s, $u, $p); // 檢測連接配接 if (!$conn) { die("連接配接失敗: " . mysqli_connect_error()); } mysqli_select_db($conn,'xss'); $a="INSERT INTO user VALUES ($id,$user)"; if(mysqli_query($conn,$a)){ echo "建立成功".'<br/>'; }else{ echo "建立失敗"."<br/>"; } mysqli_close($conn); echo "關閉成功"; }else{ } ?> </body> </html>
- 輸出資料庫
可以看到直接就執行js代碼了<?php $s = "127.0.0.1"; $u= "root"; $p = "123456"; // 建立連接配接 $conn = mysqli_connect($s, $u, $p); // 檢測連接配接 if (!$conn) { die("連接配接失敗: " . mysqli_connect_error()); } echo "連接配接成功"."<br/>"; mysqli_select_db($conn,'xss'); $a="SELECT * FROM user"; $b=mysqli_query($conn,$a); echo "目前資料庫有"."<br/>"; while ($DuQu=mysqli_fetch_assoc($b)) { echo "\"".$DuQu['id']."\"".$DuQu['user']."<br/>"; } mysqli_close($conn); echo "關閉成功"; ?>
MOD型XSS
DOM,全稱 Document Object Model,是一個平台和語言都中立的
接口,可以使程式和腳本能夠動态通路和更新文檔的内容、結構以及
樣式。
DOM型ⅩSS其實是一種特殊類型的SS,它是基于DOM文檔對象模
型的一種漏洞。