偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

突破XSS字符數(shù)量限制執(zhí)行任意JS代碼

安全 數(shù)據(jù)安全
有些XSS漏洞由于字符數(shù)量有限制而沒法有效的利用,只能彈出一個(gè)對(duì)話框來(lái)YY,本文主要討論如何突破字符數(shù)量的限制進(jìn)行有效的利用,這里對(duì)有效利用的定義是可以不受限制執(zhí)行任意JS。對(duì)于跨站師們來(lái)說(shuō),研究極端情況下XSS利用的可能性是一種樂趣;對(duì)于產(chǎn)品安全人員來(lái)說(shuō),不受限制的利用的可能是提供給開發(fā)人員最有力的證據(jù),要求他們重視并修補(bǔ)這些極端情況下的XSS漏洞。

一、綜述

有些XSS漏洞由于字符數(shù)量有限制而沒法有效的利用,只能彈出一個(gè)對(duì)話框來(lái)YY,本文主要討論如何突破字符數(shù)量的限制進(jìn)行有效的利用,這里對(duì)有效利用的定義是可以不受限制執(zhí)行任意JS。對(duì)于跨站師們來(lái)說(shuō),研究極端情況下XSS利用的可能性是一種樂趣;對(duì)于產(chǎn)品安全人員來(lái)說(shuō),不受限制的利用的可能是提供給開發(fā)人員最有力的證據(jù),要求他們重視并修補(bǔ)這些極端情況下的XSS漏洞。

突破的方法有很多種,但是突破的思想基本都一樣,那就是執(zhí)行可以控制的不受限制的數(shù)據(jù)。

二、突破方法

2.1 利用HTML上下文中其他可以控制的數(shù)據(jù)

可控的安全的數(shù)據(jù)

alert(/xss/);

由于XSS點(diǎn)有字符數(shù)量限制,所以這里只能彈框,那么我們可以把XSS的Payload通過(guò)escape編碼后作為安全的數(shù)據(jù),輸出到可控的安全數(shù)據(jù)位置,然后在XSS點(diǎn)執(zhí)行可控的安全數(shù)據(jù):

eval(unescape(x.innerHTML));

長(zhǎng)度:28 + len(id)

由于x內(nèi)部的數(shù)據(jù)沒有字符數(shù)量的限制,那么從而可以達(dá)到執(zhí)行任意JS的目的。

2.2 利用URL中的數(shù)據(jù)

長(zhǎng)度:30

limited_xss_point>eval(location.href.substr(80));

長(zhǎng)度:31

上面兩個(gè)例子對(duì)比,前一個(gè)例子更短,那么有沒有辦法更短呢?通過(guò)查閱t手冊(cè)的String的方法可以發(fā)現(xiàn),切割字符串有一個(gè)更短的函數(shù)slice,5個(gè)字符比substr還要短一個(gè)字符:

長(zhǎng)度:29

eval(location.href.slice(80));

長(zhǎng)度:30

那么還有沒有辦法更短呢?答案是YES,查閱一下MSND里的location對(duì)象的參考你會(huì)發(fā)現(xiàn)有個(gè)hash成員,獲取#之后的數(shù)據(jù),那么我們可以把要執(zhí)行的代碼放在#后面,然后通過(guò)hash獲得代碼執(zhí)行,由于獲得的數(shù)據(jù)是#開頭的,所以只需要slice一個(gè)字符就可以拿到代碼:

eval(location.hash.slice(1));

長(zhǎng)度:29

這樣比上面的例子又少了一個(gè)字符。那么還可以更短么?

2.3 JS上下文的利用

為什么我如此痛苦?那是因?yàn)镴S和DHTML的方法名和屬性名太長(zhǎng)!瞧瞧這些“糟糕”的名字:

String.fromCharCode

getElementById

getElementsByTagName

XMLHTTPRequest

...

就連開發(fā)人員也不愿意多寫一次,于是很多站點(diǎn)的前端開發(fā)工程師們封裝了各式各樣的簡(jiǎn)化函數(shù),最經(jīng)典的例子就是:

這些函數(shù)同樣可以為我們所用,用來(lái)縮短我們的Payload的長(zhǎng)度。不過(guò)上面這個(gè)例子不是最短的,IE和FF都支持直接通過(guò)ID來(lái)引用一個(gè)元素。有些函數(shù)可以直接用來(lái)加載我們的代碼:

n loads(url)

...

loads("

長(zhǎng)度:len(函數(shù)名) + len(url) + 5

當(dāng)然你的url則是越短越好哦!有些函數(shù)則會(huì)幫我們?nèi)プ鱄TTP請(qǐng)求:

n get(url)

...

return x.responseText;

eval(get("

長(zhǎng)度:len(函數(shù)名) + len(url) + 11

道哥則提出有些流行的JS的開發(fā)框架也封裝了大量功能強(qiáng)勁的庫(kù)可供調(diào)用,比如:

JQuery

YUI

...

綜上所述,我們可以通過(guò)分析JS上下文現(xiàn)有的框架、對(duì)象、類、函數(shù)來(lái)盡可能的縮短我們的代碼,進(jìn)而突破長(zhǎng)度限制執(zhí)行任意代碼。

2.4 利用瀏覽器特性在跨域的頁(yè)面之間傳遞數(shù)據(jù)

雖然有同源策略的限制,瀏覽器的功能設(shè)計(jì)上仍然保留了極少數(shù)的可以跨域傳遞數(shù)據(jù)的方法,我們可以利用這些方法來(lái)跨頁(yè)面?zhèn)鬟f數(shù)據(jù)到被XSS的域的頁(yè)面去執(zhí)行。

攻擊者可以在自己的域上構(gòu)造頁(yè)面跳轉(zhuǎn)到被XSS頁(yè)面,在自己域上的頁(yè)面的url里帶了Payload,被XSS的頁(yè)面通過(guò)referrer獲取相關(guān)代碼執(zhí)行。

這種方式利用上還有一些問題,如果使用location.href或者實(shí)現(xiàn)的自動(dòng)跳轉(zhuǎn),在IE里被攻擊頁(yè)面拿不到referrer,而FF則可以。QZ建議用表單提交的方式比較好,我測(cè)試了下,果然通用,F(xiàn)F/IE都可以成功獲取referrer:

2.4.2 剪切板clipboardData

攻擊者在自己域的頁(yè)面上通過(guò)clipboardData把Payload寫入剪切板,然后在被XSS頁(yè)面獲取并執(zhí)行該數(shù)據(jù)。

被XSS的頁(yè)面:

eval(clipboardData.getData("text"));

長(zhǎng)度:36

這種方式只適用于IE6系列,并且在IE 7及以上版本的瀏覽器會(huì)有安全提示。

這是一個(gè)很少被用到的特性,在研究同源策略時(shí)就注意過(guò)這個(gè)屬性,它是可以跨域傳遞數(shù)據(jù)的,但是這個(gè)特性本身并不是漏洞。

攻擊者構(gòu)造的頁(yè)面:

被XSS的頁(yè)面:

eval(name);

長(zhǎng)度:11

這個(gè)長(zhǎng)度可以說(shuō)是短到極致了,并且這個(gè)方法IE/FF都可以很好的支持,是個(gè)非常有意思的技巧,這個(gè)技巧的發(fā)現(xiàn)也是促成本文的直接原因。

2.5 以上的方式結(jié)合使用

以上的方式結(jié)合使用,一般情況下會(huì)使得長(zhǎng)度更長(zhǎng),但是也不排除在某些變態(tài)的過(guò)濾情況中,靈活的組合上面的方法可能會(huì)起到奇效。

三、后記

JS非常靈活,所以方法肯定不限于這些,在具體的問題的分析和研究中,可以獲得很多的樂趣,并且對(duì)JS以及瀏覽器本身有了更深的認(rèn)識(shí),如果您有巧妙的技巧或者新奇的構(gòu)思,歡迎和我交流!

感謝axis*刺*大風(fēng)*道哥、rayh4c*QZ*茄子為本文提出的寶貴意見!

本文是純粹的技術(shù)探討,請(qǐng)勿用于非法用途!

四、參考

http://msdn.microsoft.com/en-us/library/aa155073.aspx

責(zé)任編輯:佚名 來(lái)源: Webzine
相關(guān)推薦

2021-11-26 09:10:19

Linux文件命令

2009-06-02 08:44:52

微軟Windows 7操作系統(tǒng)

2017-10-12 06:42:16

Tomcat代碼漏洞

2020-12-14 10:50:13

Linux命令文件

2023-10-29 16:14:07

2010-09-26 15:16:37

MyEclipseJVM

2011-09-14 16:53:33

2025-05-15 07:40:00

2009-01-12 08:04:27

Windows 7DVD鏡像數(shù)量限制

2009-05-31 15:34:37

2021-07-29 15:57:11

任意代碼漏洞攻擊

2021-11-08 11:52:17

漏洞LinuxLinux TIPC

2024-11-11 16:21:38

2009-01-14 18:15:40

服務(wù)器虛擬化VMware

2011-09-02 14:43:22

phonegapdatabase瀏覽器

2024-01-31 13:03:00

2010-01-04 17:41:10

2024-10-08 21:22:17

2025-06-04 10:05:43

2025-02-14 23:13:14

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)