XSS攻擊 [轉(zhuǎn)]
一、什么是XSS攻擊
XSS又叫CSS (Cross Site Script) ,跨站腳本攻擊。它指的是惡意攻擊者往Web頁(yè)面里插入惡意html代碼,當(dāng)用戶瀏覽該頁(yè)之時(shí),嵌入其中Web里面的html代碼會(huì)被執(zhí)行,從而達(dá)到惡意用戶的特殊目的。XSS屬于被動(dòng)式的攻擊,因?yàn)槠浔粍?dòng)且不好利用,所以許多人常呼略其危害性。而本文主要講的是利用XSS得到目標(biāo)服務(wù)器的shell。技術(shù)雖然是老技術(shù),但是其思路希望對(duì)大家有幫助。
如何尋找XSS漏洞
就個(gè)人而言,我把XSS攻擊分成兩類,一類是來(lái)自內(nèi)部的攻擊,主要指的是利用程序自身的漏洞,構(gòu)造跨站語(yǔ)句,如:dvbbs的showerror.asp存在的跨站漏洞。另一類則是來(lái)來(lái)自外部的攻擊,主要指的自己構(gòu)造XSS跨站漏洞網(wǎng)頁(yè)或者尋找非目標(biāo)機(jī)以外的有跨站漏洞的網(wǎng)頁(yè)。如當(dāng)我們要滲透一個(gè)站點(diǎn),我們自己構(gòu)造一個(gè)有跨站漏洞的網(wǎng)頁(yè),然后構(gòu)造跨站語(yǔ)句,通過(guò)結(jié)合其它技術(shù),如社會(huì)工程學(xué)等,欺騙目標(biāo)服務(wù)器的管理員打開(kāi)。
然后利用下面的技術(shù)得到一個(gè)shell.
如何利用
傳統(tǒng)的跨站利用方式一般都是攻擊者先構(gòu)造一個(gè)跨站網(wǎng)頁(yè),然后在另一空間里放一個(gè)收集cookie的頁(yè)面,接著結(jié)合其它技術(shù)讓用戶打開(kāi)跨站頁(yè)面以盜取用戶的cookie,以便進(jìn)一步的攻擊。個(gè)人認(rèn)為這種方式太過(guò)于落后,對(duì)于弊端大家可能都知道,因?yàn)榧幢隳闶占搅薱ookie你也未必能進(jìn)一步滲透進(jìn)去,多數(shù)的cookie里面的密碼都是經(jīng)過(guò)加密的,如果想要cookie欺騙的話,同樣也要受到其它的條件的限約。而本文提出的另一種思路,則從一定程度上解決上述的問(wèn)題。對(duì)于個(gè)人而言,比較成熟的方法是通過(guò)跨站構(gòu)造一個(gè)表單,表單的內(nèi)容則為利用程序的備份功能或者加管理員等功能得到一個(gè)高權(quán)限。下面我將詳細(xì)的介紹這種技術(shù)。
二、來(lái)自內(nèi)部的跨站攻擊
尋找跨站漏洞
如果有代碼的話比較好辦,我們主要看代碼里對(duì)用戶輸入的地方和變量有沒(méi)有做長(zhǎng)度和對(duì)”<”,”>”,”;”,”’”等字符是否做過(guò)濾。還有要注意的是對(duì)于標(biāo)簽的閉合,像測(cè)試QQ群跨站漏洞的時(shí)候,你在標(biāo)題處輸入 ,代碼是不會(huì)被執(zhí)行的,因?yàn)樵谠创a里,有其它的標(biāo)簽未閉合,如少了一個(gè),這個(gè)時(shí)候,你只要閉合一個(gè),代碼就會(huì)執(zhí)行,如:你在標(biāo)題處輸入 ,這樣就可以彈出一個(gè)test的框。
如何利用
我先以BBSXP為例,過(guò)程已做成動(dòng)畫,詳情可見(jiàn)光盤中的動(dòng)畫。我舉BBSXP中其中兩個(gè)比較好用的跨站漏洞點(diǎn)為例.
a.先注冊(cè)一個(gè)普通用戶,我這里注冊(cè)的用戶是linzi.然后我們?cè)趥€(gè)人簽名里寫入:
c.然后發(fā)個(gè)貼子,可以結(jié)合其它技術(shù)欺騙管理員瀏覽發(fā)的貼子。
d.因?yàn)槭菧y(cè)試,所以我們以管理員身份登陸,然后打開(kāi)貼子,我們會(huì)發(fā)現(xiàn),linzi已經(jīng)變成了社區(qū)區(qū)長(zhǎng)工,
除此之外我們只要在個(gè)人簽名里輸入
同樣發(fā)個(gè)貼子等,只要管理員打開(kāi)了,就會(huì)加了一個(gè)擴(kuò)展名為asp (有空格)的上傳擴(kuò)展,這個(gè)時(shí)候,你只要上傳一個(gè)newmm.asp (有空格)就可以得到一個(gè)shell.
在開(kāi)始讀該篇文章的時(shí)候,請(qǐng)大家首先了解一下關(guān)于本文所提及到相關(guān)知識(shí)以及原理.
(跨站腳本攻擊的詳細(xì)解釋)
跨站腳本攻擊又名CSS/XSS,就是利用ASP等等的文件設(shè)置和編寫時(shí)的錯(cuò)誤或者疏忽不當(dāng),攻擊者就可以利用這些來(lái)達(dá)到自己攻擊目的,如果一個(gè)服務(wù)器存在這些漏洞,那么它的淪陷也是時(shí)間的問(wèn)題!
這些文本文件一般都是要結(jié)合數(shù)據(jù)庫(kù)來(lái)使用的,這些數(shù)據(jù)庫(kù)有ACCESS、MSSQL、MYSQL、Oracle等!腳本攻擊就是針對(duì)這些數(shù)據(jù)庫(kù)來(lái)配合腳本對(duì)一些變量的過(guò)濾不嚴(yán)的問(wèn)題來(lái)達(dá)到得到用戶密碼等敏感信息,修改數(shù)據(jù)庫(kù)等目的!
在現(xiàn)在的形式來(lái)說(shuō),CSS攻擊已經(jīng)成為網(wǎng)絡(luò)釣魚以及低劣手段的常用手法,利用程序過(guò)濾不嚴(yán)的漏洞鑲?cè)霅阂獯a,致使用戶訪問(wèn)漏洞頁(yè)面的時(shí)候,被盜取用戶自身的敏感信息,或者指向含有木馬以及廣告軟件的網(wǎng)站,導(dǎo)致用戶在不知不覺(jué)中安裝了惡意文件.
(統(tǒng)計(jì)系統(tǒng)的工作原理)
就是利用統(tǒng)計(jì)系統(tǒng)的頁(yè)面嵌入到使用網(wǎng)站的頁(yè)面,從而記錄網(wǎng)站的用戶瀏覽數(shù)據(jù)以及動(dòng)作,例如: <script src="mystat.asp">嵌入到訪問(wèn)網(wǎng)站的頁(yè)面,當(dāng)用戶訪問(wèn)的時(shí)候,用戶的IP等等的數(shù)據(jù)就會(huì)經(jīng)過(guò)mystat.asp提交到接收頁(yè)面,從而接收頁(yè)面就會(huì)利用內(nèi)部對(duì)象將訪問(wèn)用戶的IP以及動(dòng)作一一的記錄到統(tǒng)計(jì)系統(tǒng)當(dāng)中,當(dāng)管理員查看系統(tǒng)的時(shí)候,就會(huì)出現(xiàn)一個(gè)很詳細(xì)的列表.
漏洞解釋;
因?yàn)榻y(tǒng)計(jì)系統(tǒng)只是作為一個(gè)第三方程序而存在,所以在程序的安全方面都會(huì)比較疏忽,通常他們都會(huì)避免網(wǎng)站收到不必要的攻擊,會(huì)過(guò)濾好每個(gè)頁(yè)面的參數(shù),避免Sql注入攻擊的存在.而我們作為網(wǎng)站管理員也不會(huì)注意到統(tǒng)計(jì)系統(tǒng)在入侵方面可以作為入侵的一種,就是因?yàn)檫@樣子的心態(tài),所以致使國(guó)內(nèi)的大型免費(fèi)訪問(wèn)系統(tǒng)都會(huì)存在著種種不一樣的漏洞,而通病就是跨站腳本攻擊(CSS/XSS).首先我們可以找一個(gè)目標(biāo)網(wǎng)站,為了得到管理員的密碼信息所以我們必須完全性的針對(duì)管理員經(jīng)常去的地方----網(wǎng)站訪問(wèn)統(tǒng)計(jì)系統(tǒng).因?yàn)槲覀兛梢岳每缯灸_本在目標(biāo)網(wǎng)站的任何一個(gè)頁(yè)面進(jìn)行提交,根據(jù)訪問(wèn)統(tǒng)計(jì)系統(tǒng)的原理,我們可以看到,當(dāng)用戶提交一個(gè)訪問(wèn)動(dòng)作的時(shí)候,所使用的網(wǎng)站統(tǒng)計(jì)系統(tǒng)會(huì)根據(jù)用戶提交的動(dòng)作返回系統(tǒng)當(dāng)中,所以我們提交的語(yǔ)句不必理會(huì)所提交程序是否會(huì)進(jìn)行過(guò)濾,我們只是需要我們的提交可以順利的被訪問(wèn)系統(tǒng)記錄,誘發(fā)整個(gè)語(yǔ)句的效果實(shí)現(xiàn)就完全足夠了!當(dāng)管理員訪問(wèn)系統(tǒng)相關(guān)模塊的頁(yè)面時(shí),整個(gè)CSS效果就會(huì)馬上實(shí)現(xiàn)在他的眼前.現(xiàn)在所看到的只是一個(gè)普通的跨站測(cè)試,當(dāng)惡意用戶講特定構(gòu)造的語(yǔ)句提交并且讓系統(tǒng)記錄的時(shí)候,當(dāng)管理員訪問(wèn)頁(yè)面,我們就可以利用跨站腳本進(jìn)行木馬的種植,為了盜取管理員的相關(guān)資料再卑鄙也是一種手段.當(dāng)然如果你只是一個(gè)喜歡搞破壞搞惡作劇的話,你不妨多提交幾次語(yǔ)句,每次提交系統(tǒng)都會(huì)記錄,當(dāng)管理員登錄系統(tǒng)的時(shí)候,就會(huì)一次性暴出N個(gè)效果出來(lái)的了!訪問(wèn)系統(tǒng)的跨站,主要是因?yàn)橄到y(tǒng)編寫者沒(méi)有注意到相關(guān)頁(yè)面在用戶提交數(shù)據(jù)時(shí)進(jìn)行的過(guò)濾,導(dǎo)致了漏洞的產(chǎn)生.而在國(guó)內(nèi)這樣子的統(tǒng)計(jì)系統(tǒng)到處都是,如果我需要大面積的種植木馬,我大可以利用這樣子的漏洞去為我馬房不斷的添加新的馬.小小的跨站但是存在的嚴(yán)重性卻是很難想像的.
國(guó)內(nèi)使用大型免費(fèi)的訪問(wèn)統(tǒng)計(jì)系統(tǒng)的用戶的日益增多,在網(wǎng)絡(luò)上出現(xiàn)了很多的統(tǒng)計(jì)系統(tǒng),但是往往這些程序的編寫者卻忘了程序自身的安全問(wèn)題.因?yàn)槭菍儆诘谌匠绦?所以使用者的本身不會(huì)去注意這些甚少會(huì)出現(xiàn)漏洞以及會(huì)危害網(wǎng)站和服務(wù)器安全的問(wèn)題,致使國(guó)內(nèi)的各大型網(wǎng)絡(luò)統(tǒng)計(jì)系統(tǒng)都存在著各種各樣的問(wèn)題,所以才出現(xiàn)了本文,希望大家在看的時(shí)候,可以學(xué)習(xí)如何利用觀察去進(jìn)行漏洞的發(fā)現(xiàn).