一個跨域請求的XSS漏洞再續


    上回提到,由於需要使用代理頁面解決POST請求的跨域請求,需要在代理頁面上執行傳遞的函數。所以我們做了白名單只有我們認可的回調函數才能在頁面上執行,防止執行非法的JS方法,做腳本攻擊。

 

    我們所采用的方式是,把白名單以及過濾方法單獨提出作為單獨的文件引入頁面,然后進行使用(這就為新的漏洞提供了機會)。 

 

    本次漏洞出現的原因有兩個:

 

  • 屏蔽了白名單的JS文件
  • 當前頁面如果檢測不到這個方法就直接不過濾了(為什么這么處理呢?防止白名單失敗之后,由於某些原因,導致某種請求失敗,導致流程不通。真是因為這個原因,給漏洞提供了機會。) 

 

    如何輕松的控制這個白名單?該漏洞利用的是:瀏覽器的xss filter特性。當URL中檢測到xss攻擊時,瀏覽器會自動過濾頁面上的這個JS內容。就是利用這個原理,禁用了頁面的白名單過濾函數,加上沒有限制,導致可以直接繞過過濾函數,在頁面上執行了攻擊代碼。

 

    經查,瀏覽器為了防止XSS攻擊,過濾了URL中存在的JS地址就行過濾。訪問下面的地址:

https://www.baidu.com/?xss=%3Cscript%20type%3D%22text%2Fjavascript%22%20src%3D%22https%3A%2F%2Fss1.bdstatic.com%2F5eN1bjq8AAUYm2zgoY3K%2Fr%2Fwww%2Fcache%2Fstatic%2Fprotocol%2Fhttps%2Fjquery%2Fjquery-1.10.2.min_f2fb5194.js%22%3E%3C%2Fscript%3E

   

  會發現這樣的報錯:

 The XSS Auditor refused to execute a script in 'https://www.baidu.com/?xss=%3Cscript%20type%3D%22text%2Fjavascript%22%20src…ocol%2Fhttps%2Fjquery%2Fjquery-1.10.2.min_f2fb5194.js%22%3E%3C%2Fscript%3E' because its source code was found within the request. The auditor was enabled as the server sent neither an 'X-XSS-Protection' nor 'Content-Security-Policy' header.

    導致頁面無法加載jquery的JS,認為這個JS是一個XSS攻擊。

 

    這里面查到http協議頭里有這么一個字段可以控制是否開啟瀏覽器的XSS過濾功能。那就是:X-XSS-Protection。 

 

    那什么是X-XSS-Protection呢?這個是為了防范XSS的。可以通過設置他的值來開啟和關閉是否過濾XSS,當然最好是開啟這個功能,這里講到的就是為了了解和學習http協議中的這個字段。那應該怎么配置呢?  

0 – 關閉對瀏覽器的xss防護  

1 – 開啟xss防護  

1; mode=block – 開啟xss防護並通知瀏覽器阻止而不是過濾用戶注入的腳本。  

1; report=http://site.com/report – 這個只有chrome和webkit內核的瀏覽器支持,這種模式告訴瀏覽器當發現疑似xss攻擊的時候就將這部分數據post到指定地址。

   

  當開啟XSS防護之后,瀏覽器會隱藏對反射性XSS的輸出。

   

  在這里,我的解決方案有兩個:

  • 將過濾方法放在頁面內,不采用外聯的形式;
  • 或者檢測不到這個檢測方法的時,直接阻止流程繼續。 

    XSS的戰斗不止。

 

 

參考資料:

https://www.imququ.com/post/web-security-and-response-header.html

http://drops.wooyun.org/tips/1166

http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx

http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header.aspx

https://msdn.microsoft.com/en-us/library/dd565647(v=vs.85).aspx

http://www.secpulse.com/archives/5688.html

 

 


免責聲明!

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



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