xss靶場之xss-labs


xss靶場之xss-labs

 靶場下載地址:https://github.com/lyshark/xss-labs

第一關

1.get請求,提交name變量test,完整的顯示在返回的頁面源代碼中

 

 

 2.get請求的name變量放入xss poc,完整的返回在html中,瀏覽器響應xss poc。

 3.后台代碼分析,通過$_GET["name"],獲取name的值,沒有過濾通過echo直接進行了輸出

 

 

第二關

1.利用name參數提交poc,查看返回的html代碼,需要構造閉合

 

 

 

 2.構造閉合,瀏覽器響應poc

 

 3.后台源代碼分析

獲取瀏覽器提交的keyword值,未進行過濾,輸出在<input name=keyword value="'.$str.'">。

如果是keyword提交的是<script>alert(xss)</script>,返回的就會是<input name=keyword value="<script>alert(1)</script>">,javascript引擎並不會執行<script>,所以需要構造閉合。

keyword提交test"><script>alert(1)</script>//,php處理后返回的html就會是<input name=keyword value="test“> <script>alert(1)</script>//">,//是注釋的作用,javascript引擎執行<script>alert(1)</script>

 

 

 

第三關

1.keyword提交"test><script>alert(1)</script>//構造閉合進行注入,根據返回的html代碼,后台對尖括號進行了過濾

 

 

2.構造標簽事件進行過濾,返回值實在input標簽中,嘗試構造onclick事件觸發xss。點擊輸入框后,觸發onclick事件,響應onclick中的javascript代碼。

 

 

 3.構造事件onmouseover,事件成功執行javascript:偽協議。

 

 5.后台源代碼分析,采用htmlspecialchars函數對獲取keyword變量進行過濾,輸出在input標簽的value中。htmlspecichars對尖括號進行了過濾。

 

 

第四關

1.keyword提交<script>poc,根據后台返回的源代碼,后台針對尖括號進行了過濾

 

 

 

2.構造事件onmouseover,構造語句閉合,成功執行javascript語句

 

 

 3.后台源代碼分析。對get請求的keyword變量,過濾掉尖括號,采用htmlspecialchars過濾后用echo直接輸出在返回的html中。

 

 

 

第五關

1.構造事件 “ oninput='alert(1)',返回的html代碼對on進行了過濾。嘗試大小寫,依然進行了過濾。嘗試編碼,不識別。

 

 

 2.嘗試POC test"><script>alert</script>//,根據返回的html,后台對script進行了過濾,但是並未對尖括號進行過濾。

 

 

 3.利用沒有過濾尖括號,構造a標簽再嘗試利用a標簽的href屬性執行javascript:偽協議,"><a href='javascript:alert(1)'>,沒有對javascript進行過濾,觸發xss

 

 

 4.后台源代碼分析,對get提交的keyword變量,script替換成scr_ipt,on替換成o_n,htmlspecialchars函數過濾后,輸出在html中

 

 

 

第六關

1.經測試替換了script,on,沒有過濾<>。構造a標簽,利用href屬性支持javascript:偽協議構造poc,后台對href關鍵字進行替換,嘗試采用大小寫混寫進行了繞過。

 

 

 2.后台源代碼分析。對get提交的keyword變量,替換<script 、on、src、data、href關鍵字,采用htmlspecialchars過濾后輸出在html中

 

 

 

第七關

1.構造poc,test" /><a href="javascript:alert(1)">a</a>//,根據返回的html,過濾了href和script。嘗試大小寫不能進行繞過。

 

 

 2.嘗試重復寫test" /><a hrhrefef="javascscriptript:alert(1)">a</a>//,可以進行繞過觸發poc

 

 3.后台源代碼分析。先將get方式提交的keyword變量通過strtolower轉換為小寫,將關鍵字script、on、src、data、href關鍵字替換成空,然后輸出在html中

 

第八關

 1.利用href屬性支持javascript:偽協議構造poc,javascript關鍵字被替換。嘗試大小寫,重復寫,無法進行繞過。

 

 2.嘗試對poc進行編碼,可繞過

 

 3.后台源代碼分析。將keyword提交的變量轉換為小寫,替換關鍵字script、on、src、data、href、",然后輸出在a標簽的href屬性中。

 

第九關

 1.采用第八關的poc,發現poc中應包含合法的url,poc中添加//http://www.baidu.com,發現可以進行繞過

 

 2.后台源代碼分析。get提交的keyword變量,替換關鍵字script、on、src、data、href、",判斷該變量有無http://

 

第十關

1.對keyword提交poc,根據返回的源代碼,過濾了尖括號,嘗試編碼不能繞過,無法構造事件觸發xss、無法利用屬性的javascript協議、無法利用css注入。

 

 2.詳細查看源代碼,可能有隱藏的表單,嘗試提交t_link、t_history、t_sort變量,t_sort變量返回在了html的value中,嘗試進行了繞過。構造poc:"type="text" onclick="alert(1)",web瀏覽器成功執行 。ps:type="text"為構造一個文本框,用來觸發onclick事件

 

 

 

 3.后台源代碼分析,獲取了get請求的keyword變量、t_sort變量,t_sort變量過濾掉了尖括號,輸出在value屬性中

 

 

 

 

第十一關

1.根據返回的html判斷refer字段為web頁面的自定義變量,可能存在xss注入點

 

 

 

2.進行測試,存在xss注入

 

 

 

3.后台源代碼分析,獲取get請求的keyword、t_sort變量和refer字段,過濾refer字段的尖括號后輸出在html代碼中

 

 

第十二關

1.根據返回的html判斷user-agent字段為web頁面的自定義變量,可能存在xss注入點

 

 

 

2.進行測試,存在xss注入

 

 

 

 3.后台源代碼分析,獲取get請求的keyword、t_sort變量和user-agent字段,過濾refer字段的尖括號后輸出在html代碼中

 

 

第十三關

1.根據返回的html判斷cookie字段為web頁面的自定義變量,可能存在xss注入點

 

 

 

2.進行測試,存在xss注入

 

 

 

 3.后台源代碼分析,獲取get請求的keyword、t_sort變量和cookie字段,過濾refer字段的尖括號后輸出在html代碼中

 

 

第十四關

本關因iframe調用的文件地址失效,無法進行測試。要考的應該是通過修改iframe調用的文件來實現xss注入

 

 

 

 

第十五關

1. 根據返回的源代碼判斷,變量src存在注入點

 

 

2.構造poc,並未觸發xss,ng-include屬性一直未生效,原來是調用的js文件中有地址被牆了,需要源代碼中修改js源文件路徑 https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js,觸發xss。

ng-include本地文件包含,調用本地有xss漏洞的文件,觸發xss

 

 

 

 3.后台源代碼分析,nginclude調用采用htmlspecialchars過濾輸入的src變量

 

 

 

第十六關

1.據返回的源代碼分析,keyword參數存在xss注入。嘗試進行注入后發現對script、/、空格進行了轉換,需要進行繞過

2.采用回車符%0a進行繞過,觸發poc。poc:<a%0atype="text"%0a"alert">

 

 3.源代碼分析,過濾了script、空格、/

 

 

第十七關

1.根據返回的代碼判斷,arg01和arg02提交的變量存在注入點

2.進行注入。ps:一直用的火狐瀏覽器沒成功,最后發現是火狐不支持swf,改成ie瀏覽器就可以了

 

 

第十八關

1.根據返回的源代碼判斷,arg01和arg02存在注入點,web服務器對"進行了過濾

2.改為onmouseover=alert(1),去掉”,觸發poc

 

 

第十九關

flash xss,涉及到反編譯,先暫時一放,研究明白了再更新。

第二十關

為flash xss,涉及到反編譯,先暫時一放,研究明白了再更新。

反射型XSS測試步驟總結:

1.檢測輸入變量,確認每個web頁面中用戶可自定義的變量,如HTTP參數、POST數據、隱藏表單字段值、預定義的radio值或選擇值

2.分別確認每個輸入變量是否存在xss漏洞。變量輸入處輸入poc,查看返回的web頁面的html中poc代碼是否被過濾,瀏覽器是否響應poc,若存在過濾,進行測試查看能否進行繞過。

xss的攻防:

1.利用<>標記,構造<script>標簽可執行javascript的xss代碼。

xss過濾函數需過濾<><script></script>等字符。

2.利用html標簽屬性支持javascript:偽協議(支持標簽屬性的有href、lowsrc、bgsound、background、value、action、dynsrc等),執行xss代碼。

xss 過濾函數需過濾JavaScript等關鍵字。

3.利用javascript在引號中只用分號分隔單詞或強制語句結束,用換行符忽略分號強制結束一個完整語句,而忽略回車、空格、tab等鍵,繞過對javascript的關鍵字的過濾。

4.利用html標簽屬性值支持ascii碼,對標簽屬性值進行轉碼進行規則庫的繞過。

xss 過濾函數需過濾&#\等字符。

5.利用事件處理函數,觸發事件,執行xss代碼。例如<img src='#' onerror=alert(/xss/)>,當瀏覽器響應頁面時,找不到圖片的地址,觸發onerror事件。

6.利用css執行javascript代碼

css代碼中利用expression觸發xss漏洞。如下所示:

<div style="width: expression(alert('xss'));>

<img src="#" style="xss:expression(alert(/xss/));">

<style>body {background-image:expression(alert("xss"));}</style>

<div style="list-style-image:url(javascript:alert('xss'))">

css代碼中利用@import觸發xss

<stytle>

@import 'javascript:alert("XSS")';

</stytle>

css代碼中使用@import和link方式導入外部含有xss代碼的樣式表文件

<link rel="stytlesheet" href="http://www.***.com/a.css">

<stytle type='text/css'>@import url(http://www.*.com/a.css);</style>

xss過濾函數需過濾style標簽、style屬性、expression、javascript、import等關鍵字。

7.利用大小寫混淆、使用單引號、不使用引號、使用/插入在img src中間、構造不同的全角字符、運用/**/混淆過濾規則來繞過過濾函數

8.利用字符編碼。javascript支持unicode、escapes、十六進制、八進制等編碼形式。


免責聲明!

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



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