4月16號(hào),國(guó)外發(fā)布了jwplayer一個(gè)未修復(fù)的XSS 0day。jwplayer是全球范圍內(nèi)今朝利用最遍及的flash播放組件,出格是國(guó)外浩繁在線愛情動(dòng)作片網(wǎng)站。此前jwplayer曾爆出過(guò)一個(gè)XSS縫隙,影響很是遍及。
按照老外的描述,此次的標(biāo)題問(wèn)題主如果因?yàn)橹耙粋€(gè)XSS縫隙沒(méi)有修復(fù)完全,導(dǎo)致bypass再操縱。原始的標(biāo)題問(wèn)題是playerReady參數(shù)值未做過(guò)濾直接進(jìn)進(jìn)ExternalInte***ce.call導(dǎo)致可以履行肆意JS代碼。在顛末官方的兩次小版本補(bǔ)丁后,這個(gè)標(biāo)題問(wèn)題最終的修復(fù)方案是避免playerReady參數(shù)值中存在{}和()符號(hào)。而這類簡(jiǎn)單的修復(fù)是可以被繞過(guò)的。
原文給出的POC:
Example 1:
This example simply uses javascript:alert(1) as the value in window.name
Click Me

這里用到了兩個(gè)特點(diǎn),一個(gè)是a標(biāo)簽target的framename,一個(gè)是window.name的跨域傳遞的特點(diǎn)。在a等其他可利用的target屬性的標(biāo)簽中我們常常利用的是_blank,_parent,_self,_top四個(gè)值,而framename我們很罕用到。framename相當(dāng)于指定一個(gè)窗口的名稱并將文檔重定向到該窗口中進(jìn)行措置,是以framename就相當(dāng)于window.name。
這個(gè)POC就在a標(biāo)簽頂用javascript:alert(1)偽和談作為了framename,縫隙URL指定location為window.name也就觸發(fā)了url。我們一樣可以用form等其他撐持target屬性的標(biāo)簽來(lái)機(jī)關(guān)poc:
登錄
但這類POC是需要交互的,就比較雞肋了,其實(shí)我們可以改進(jìn)成不需要用戶交互的情勢(shì)。既然framename是窗口的名稱,那我們可以直接利用iframe并指定name為javascript:alert(1)。
如許我們的POC便可以主動(dòng)觸發(fā)了。