0×00前言
XSS又名叫CSS全程(cross site scriptting),中文名跨站腳本攻擊,目前網站的常見漏洞之一,它的危害沒有像上傳漏洞,sql注入,命令執行,這種危害性極高的漏洞一樣,但是大致xss與上面講的這些漏洞不一樣它是需要去被動式來完成攻擊的,攻擊者需要讓管理員,用戶等來配合完成攻擊,xss它有三種語言編寫,我們常見的是JavaScript ,比較少見的actionscript,VBScript,它們都是可以在html的標簽中執行的。
反射型的xss它是儲存時間很短,在html的頁面代碼中,一但攻擊者在網站植入反射型xss然后用戶訪問了就會被盜取cookie等等,存儲型的xss是比較危險的一種xss,一般存儲在網站保留用戶數據的地方,一當用戶訪問就觸發了攻擊,dom型的xss先對也是比較隱蔽的,一般常見在url的get請求,這幾種xss危害性最大的肯定就是存儲型xss。
Xss通常分為三種類型,第一種是存儲型xss,第二種是反射型xss,第三種是dom型xss。
Xss能做到的有盜取管理員,用戶的cookie,url跳轉,常用到的是盜取cookie,盜取到了管理員cookie那么我們也就可以登錄管理員的賬號了,那么這也就誇大了權限。
0×01構造攻擊
在網站中很明顯我們的JavaScript代碼已經被存進去了,但是為什么沒有彈窗呢?問題在於標簽下面對該頁面body內的標簽查看,在跟蹤情況。
這里已經將我們的JavaScript標簽的alert(“xss”)過濾了,變成了無效的語句,<script>標簽它還是亮着的,所以它是已經添加到代碼里面去了
標簽中只要<>xss<>內容不加入到標簽里面它就會解析成文本內容,那么這時候就要更具其它的標簽模仿構造,
<script href="alert(123)">xss</script>
變成這樣,href是一個超級文本引用的標簽,所以在這里這樣構造測試,主要我們的彈窗已經加入到標簽內
這次里面的內容都亮了,但是它還是不會彈窗,因為剛剛使用了href,href是一個超級文本引用標簽,彈窗語句在里面就變成一個鏈接,重新來一次構造有效負載
換成了這樣的一個code,onmouseover是鼠標移動事件 anytag任何標簽,這樣構造然后在測試
這樣一來鼠標移動到xss的位置,就自動彈出123的提示框,當然這也只能彈出自己的cookie,客服需要去點擊也才能看到cookie,這種基本就已經沒有作用了下面再來換一種方法來構造過濾問題。
0×02 過濾模擬構造攻擊
看到了我們的JavaScript語句已經給過濾了,正常的<script></script>標簽以及帶有攻擊性的都是沒辦法成功載入的,我們的目的是達到彈窗或者獲取cookie類
構造payload
結果我的class 跟 alert 都被過濾了,在一次構造,跟蹤一下它的代碼,一下是跟蹤代碼的一些問題以及它的過濾問題。
This.$obj.$chatCtnId.append(This.customHtml(This.replaceFace(This.xssWhiteList(filterXSS(question)))));
跟蹤到這里對我的payload進行了過濾,在一次最終它的過程,分析看看能找到什么有效的繞過
跟蹤到了網站對xss多種轉義過濾,我利用了多種編碼特殊字符都無法繞過,這也太強了吧!
繼續測試,多種樣式的測試,主要考慮到代碼中添加了多個名單,以及對敏感字符的過濾本接下來在一次構造payload,我多次構造,但是依然給過濾,無論是字符編碼類的都無效,心累一天,最后我構造了一條這樣的payload
<a href="#javascript:alert('xss')">xss</a>
為撒它把我的符號過濾了每次它過濾都是直接吃了我的符號,這時候我也是悶逼了然后彈了一下,但是過程的確挺麻煩的到最后發現這樣饒了
正常它的代碼中可以構造正常可用的payload
都是可以不會遭到過濾的。