WWW服務(wù)是因特網(wǎng)上最重要的服務(wù)之一,提供給客戶各種各樣的信息資源,而把這種信息資源組織起來(lái)的一個(gè)很重要的東西就是Html超文本語(yǔ)言,然后經(jīng)過應(yīng)用的發(fā)展就出現(xiàn)了其他的如UBB等標(biāo)簽但是最終都是以Html代碼來(lái)實(shí)現(xiàn)的。經(jīng)過研究發(fā)現(xiàn),即使是最安全的安全代碼(已經(jīng)排除了通常所說(shuō)的Xss漏洞)也無(wú)法避免另外一種惱人的攻擊方式,配合不嚴(yán)格的程序,可能被人利用產(chǎn)生更大的威脅。
我們就以現(xiàn)在廣泛存在于論壇,文章系統(tǒng),Blog系統(tǒng)等腳本程序中的[img]標(biāo)簽也就是轉(zhuǎn)化后的
[IMG]/xkerfiles/uppic/2006-6/4/loveshell.jpg[/IMG] |
然后通過腳本程序的轉(zhuǎn)換成為了
<img src=/xkerfiles/uppic/2006-6/4/loveshell.jpg>。<img>標(biāo)簽 |
是在當(dāng)前的頁(yè)面嵌入一個(gè)圖片,現(xiàn)在的論壇程序在發(fā)帖子以及個(gè)人頭像那里都有這個(gè)功能,當(dāng)瀏覽器遇到這個(gè)Html標(biāo)記的時(shí)候就會(huì)根據(jù)src的地
址,這里是/xkerfiles/uppic/2006-6/4/loveshell.jpg去尋找網(wǎng)絡(luò)資源,當(dāng)找到這個(gè)圖片的時(shí)候就會(huì)訪問并且下載這個(gè)資源然后在本地進(jìn)行解析,
在瀏覽器里顯示出這個(gè)圖片,如果找不到這個(gè)資源就會(huì)顯示一個(gè)紅叉表示出錯(cuò)了。這里/xkerfiles/uppic/2006-6/4/loveshell.jpg是個(gè)很正常的圖
片,所以一切都順利進(jìn)行,但是不知道大家想過沒有,如果這個(gè)資源是其他類型的資源譬如一個(gè)網(wǎng)頁(yè)一個(gè)eXe文件或者是一個(gè)asp頁(yè)面,當(dāng)不是圖片類型文件的時(shí)候,結(jié)果會(huì)怎么樣呢?
答案很明顯,是圖片顯示一個(gè)紅X,我們的Exe文件也沒有下載,Html頁(yè)面也沒有執(zhí)行,這是理所當(dāng)然的東西,因?yàn)镮E或者其他瀏覽器會(huì)把取得的資源當(dāng)作圖片解析,這樣就會(huì)產(chǎn)生錯(cuò)誤從而顯示紅X了。到這里大家也許還覺得沒有什么用,但是如果我們把圖片的地址改成
http://127.0.0.1:88/imgtest/test.asp?user=shell這樣的形式呢?其中test.asp里有如下內(nèi)容的話
<% |
大家可以測(cè)試看看,我們的訪問被記錄了,甚至還得到了提交的參數(shù),但是這對(duì)于瀏覽器來(lái)說(shuō)是未知的,因?yàn)槲覀冎豢吹搅艘粋€(gè)紅X。到這里我們也許知道我們可以用這個(gè)東西做什么了!就是可以以瀏覽者的身份悄悄去訪問一個(gè)頁(yè)面,甚至支持Get的參數(shù)請(qǐng)求,這很重要,理解了這個(gè)就可以在后面發(fā)揮我們的想象力來(lái)利用這個(gè)來(lái)做什么!
1、刷流量:我們可以在一個(gè)流量大的論壇把自己的圖象設(shè)置成要刷的頁(yè)面,然后每一個(gè)瀏覽者都會(huì)去訪問下我們的頁(yè)面,不管他是否看到了,但是他訪問了,不是么?//web學(xué)習(xí)吧www.webstudy8.com
2、破壞:這個(gè)讓人很惱火,對(duì)于動(dòng)網(wǎng)論壇如果把你的圖象設(shè)置成logout.asp的話,呵呵,所有看了你的帖子的人都會(huì)被T了,很爽吧!
呵呵,至于幻影論壇,大家可以試試,但是這是很不道德的!
3、黑客:這個(gè)是我們最感興趣的,可以跨越權(quán)限做一些事情,因?yàn)楝F(xiàn)在很多的程序?qū)τ谇芭_(tái)都是防守較好,但是后臺(tái)就不是那么嚴(yán)密了。如果程序中取得數(shù)據(jù)的時(shí)候是用request("id")這樣的方法取得的話,那么我們就可以利用標(biāo)簽向Cgi腳本提交數(shù)據(jù)了,注意必須不能是request.form("username2")這種嚴(yán)格指定了取得的變量來(lái)源的方式,因?yàn)槲覀兊淖兞恐荒芡ㄟ^URL提交也就是上面說(shuō)的QUERY_STRING方式。這對(duì)于寫法不嚴(yán)密的程序是很致命的,要例子的話動(dòng)網(wǎng)就是一個(gè),動(dòng)網(wǎng)Sql版本后臺(tái)的messages.asp里取得數(shù)據(jù)的方式就是request,代碼如下:
這本來(lái)是后臺(tái)的必須要有后臺(tái)管理權(quán)限才能訪問的,但是我們構(gòu)造這樣一個(gè)Url:
或者類似的語(yǔ)句了,然后放到[Img]標(biāo)簽里。大家也許覺得管理員看自己帖子的可能性也不大,但是要知道論壇短信也是支持和發(fā)帖子一樣的[img]標(biāo)簽的,所以如果能給管理員發(fā)個(gè)短信,在里面構(gòu)造我們的Img標(biāo)簽只要他一打開短信就會(huì)種招的哦!如果可以和社會(huì)工程學(xué)聯(lián)一塊,殺人不沾血啊,呵呵!有點(diǎn)遺憾的是仿佛動(dòng)網(wǎng)對(duì)&等符號(hào)做了轉(zhuǎn)換,大家可以嘗試突破,更何況網(wǎng)絡(luò)上寫法不嚴(yán)密的程序何止千萬(wàn)。 4 想象力 大家賺錢都這么辛苦,如果把IMG標(biāo)簽里的地址改成附件下載地址的話,呵呵,說(shuō)說(shuō)而已,沒有測(cè)試。 5 ...... 再說(shuō)說(shuō)對(duì)這個(gè)問題如何防御,如果想保留這個(gè)[IMG]標(biāo)簽但是又不想出問題的話,是需要轉(zhuǎn)換的,譬如限定后綴必須是jpg,呵呵這可以通過URL編碼加#JPG饒過,反正我覺得如果有限制的話一般都是能饒過的,即使你限制了IMG,那好,還有Flash標(biāo)簽?zāi)兀€有Rm標(biāo)簽?zāi)兀?.....
......
Sub Del()
Dim Dnum
If Request("username") = "" Then
Body = Body + "
" + "請(qǐng)輸入要批量刪除的用戶名。"
Exit Sub
End If
Sql = "select COUNT(*) FROM Dv_Message where Sender = '" & Request("username") & "'"
Set Rs = Dvbbs.Execute(Sql)
......
http://bbs.dvbbs.net/admin/messages.asp?action=del&user=';update/**/Dv_User/**/set/**
/UserEmail=(select/**/top/**/1/**/
[Username]/
**/from/**/Dv_admin)/**/where[UserName]='loveshell';--
防御和利用都是艱難的。