(二)XSS实例
Reflected XSS
Reflected XSS into HTML context with nothing encoded
構造攻擊腳本:<script>alert(1)</script>
將該腳本輸入到搜索框中
Reflected XSS into HTML context with most tags and attributes blocked
在搜索功能中包含反射型跨站點腳本漏洞,但是使用了Web應用程序防火墻(WAF)來防御常見的XSS向量。
構造payload:<img src=1 onerror=alert(document.cookie)>
輸入到搜索框,返回"Tag is not allowed",此payload被阻塞了。
接下來我們將測試哪些標簽和屬性被阻塞了。
將包發送到intruder模塊,然后將尖括號里的內容刪除:img+src%3D1+onerror%3Dalert%28document.cookie%29,在尖括號中間點擊兩次Add§,以創建有效負載位置則search=%3C§§%3E,則開始測試。
查看結果,發現除body,custom tags有效負載導致200響應之外,所有有效負載均導致HTTP 400響應。
返回positions頁面,修改search=%3Cbody%20=§§1%3E,開始測試。
查看結果,發現除onresize有效負載導致200響應之外,所有有效負載均導致HTTP 400響應。
到此可以構造攻擊payload:<iframe src="https://ac981f721e8b39ea804614cf008b00ba.web-security-academy.net/?search=%22%3E%3Cbody%20onresize=alert(document.cookie)%3E" onload=this.style.width='100px'>
攻擊完成。
Reflected XSS into HTML context with all tags blocked except custom ones
阻止所有HTML標記(自定義標記除外
構造payload:
該注入將創建一個ID為的自定義標簽x,其中包含一個onfocus觸發該alert函數的事件處理程序。加載頁面后,URL末尾的哈希將重點放在此元素上,從而導致alert有效負載被調用。
Reflected XSS with event handlers and href attributes blocked
包含一個反映了XSS漏洞的白名單標簽,但是所有事件和錨點href屬性均被阻止
因此我們會注入一個矢量,單擊該矢量,即可調用該alert函數。例如:<a href="">Click me</a>
Reflected XSS with some SVG markup allowed
阻止了常見標簽,但錯過了一些SVG標簽和事件
注:SVG 即 Scalable Vector Graphics,是一種用來繪制矢量圖的 HTML5 標簽
輸入標準的xss腳本:<img src=1 onerror=alert(1)>,提示"Tag is not allowed"
在intruder中構造search=<§§>,利用標簽集
觀察到所有的有效載荷造成的HTTP響應400,除了使用的那些<svg>,<animatetransform>,<title>,和<image>標簽接收到200響應。
返回position,將search修改為search=<svg><animatetransform%20§§=1>,利用事件集。
除onbegin有效負載導致200響應之外,所有有效負載均導致HTTP 400響應。
因此構造攻擊payload:
search=%22%3E%3Csvg%3E%3Canimatetransform%20onbegin=alert(1)%3E
攻擊完成。
Reflected XSS into attribute with angle brackets HTML-encoded
存在XSS漏洞,但經過了HTML編碼
以轉義引用的屬性并注入事件處理程序:"onmouseover="alert(1),將鼠標移到注入的元素上時,它將觸發警報。
Reflected XSS in canonical link tag
將用戶輸入反映在規范的鏈接標簽中,并轉義了尖括號。/post?postId=1
要解決此問題,攻擊將注入調用該alert函數的屬性。
構造payload:https://your/?%27accesskey=%27x%27onclick=%27alert(1)
這會將X密鑰設置為整個頁面的訪問密鑰。當用戶按下訪問鍵時,將alert調用該功能。
Reflected XSS into a JavaScript string with single quote and backslash escaped
攻擊發生在帶有單引號和反斜杠轉義的JavaScript字符串內。
要求會突破JavaScript字符串并調用該alert函數。
因此我們可以構造payload:search=</script><script>alert(1)</script>
采用重寫繞過js編碼檢測。
總結
- 上一篇: 走嵌入式方向,一定要软硬件都懂吗?
- 下一篇: 揭秘,嵌入式OTA技术,到底有多复杂?