|
ASP網(wǎng)絡(luò)安全講述 一 前言 Microsoft Active Server Pages(ASP)是服務(wù)器端腳本編寫環(huán)境,使用它可以創(chuàng)建和運(yùn)行動(dòng)態(tài)、交互的 Web 服務(wù)器應(yīng)用程序。使用 ASP 可以組合 HTML 頁(yè) 、腳本命令和 ActiveX 組件以創(chuàng)建交互的 Web 頁(yè)和基于 Web 的功能強(qiáng)大的應(yīng)用程序。 現(xiàn)在很多網(wǎng)站特別是電子商務(wù)方面的網(wǎng)站,在前臺(tái)上大都用ASP來(lái)實(shí)現(xiàn)。以至于現(xiàn)在ASP在網(wǎng)站應(yīng)用上很普遍。 ASP是開(kāi)發(fā)網(wǎng)站應(yīng)用的快速工具,但是有些網(wǎng)站管理員只看到ASP的快速開(kāi)發(fā)能力,卻忽視了ASP安全問(wèn)題。ASP從一開(kāi)始就一直受到眾多漏洞,后門的困擾,包括%81的噩夢(mèng),密碼驗(yàn)證問(wèn)題,IIS漏洞等等都一直使ASP網(wǎng)站開(kāi)發(fā)人員心驚膽跳。 本文試圖從開(kāi)放了ASP服務(wù)的操作系統(tǒng)漏洞和ASP程序本身漏洞,闡述ASP安全問(wèn)題,并給出解決方法或者建議。 二 關(guān)鍵字 ASP,網(wǎng)絡(luò)安全,IIS,SSL,加密。 三 ASP工作機(jī)理 Active Server Page技術(shù)為應(yīng)用開(kāi)發(fā)商提供了基于腳本的直觀、快速、高效的應(yīng)用開(kāi)發(fā)手段,極大地提高了開(kāi)發(fā)的效果。在討論ASP的安全性問(wèn)題之前,讓我們來(lái)看看ASP是怎么工作的。ASP腳本是采用明文(plain text)方式來(lái)編寫的。 ASP腳本是一系列按特定語(yǔ)法(目前支持vbscript和jscript兩種腳本語(yǔ)言)編寫的,與標(biāo)準(zhǔn)HTML頁(yè)面混合在一起的腳本所構(gòu)成的文本格式的文件。當(dāng)客戶端的最終用戶用WEB瀏覽器通過(guò)INTERNET來(lái)訪問(wèn)基于ASP腳本的應(yīng)用時(shí),WEB瀏覽器將向WEB服務(wù)器發(fā)出HTTP請(qǐng)求。WEB服務(wù)器分析、判斷出該請(qǐng)求是ASP腳本的應(yīng)用后,自動(dòng)通過(guò)ISAPI接口調(diào)用ASP腳本的解釋運(yùn)行引擎(ASP.DLL)。ASP.DLL將從文件系統(tǒng)或內(nèi)部緩沖區(qū)獲取指定的ASP腳本文件,接著就進(jìn)行語(yǔ)法分析并解釋執(zhí)行。最終的處理結(jié)果將形成HTML格式的內(nèi)容,通過(guò)WEB服務(wù)器"原路"返回給WEB瀏覽器,由WEB瀏覽器在客戶端形成最終的結(jié)果呈現(xiàn)。這樣就完成了一次完整的ASP腳本調(diào)用。若干個(gè)有機(jī)的ASP腳本調(diào)用就組成了一個(gè)完整的ASP腳本應(yīng)用。 讓我們來(lái)看看運(yùn)行ASP所需的環(huán)境: Microsoft Internet Information Server 3.0/4.0/5.0 on NT Server Microsoft Internet Information Server 3.0/4.0/5.0 on Win2000 Microsoft Personal Web Server on Windows 95/98 WINDOWS NT Option Pack所帶的Microsoft IIS提供了強(qiáng)大的功能,但是IIS在網(wǎng)絡(luò)安全方面卻是比較危險(xiǎn)的。因?yàn)楹苌儆腥藭?huì)用Windows 95/98當(dāng)服務(wù)器,因此本文我更多的從NT中的IIS安全問(wèn)題來(lái)探討。 四 微軟自稱的ASP的安全優(yōu)點(diǎn) 雖然我們本文的重點(diǎn)是探討ASP漏洞和后門,但是有必要談?wù)凙SP在網(wǎng)絡(luò)安全方面的"優(yōu)點(diǎn)",之所以加個(gè)"",是因?yàn)橛袝r(shí)這些微軟宣稱的"優(yōu)點(diǎn)"恰恰是其安全隱犯。 微軟稱ASP在網(wǎng)絡(luò)安全方面一大優(yōu)點(diǎn)就是用戶不能看到ASP的源程序,從ASP的原理上看,ASP在服務(wù)端執(zhí)行并解釋成標(biāo)準(zhǔn)的HTML語(yǔ)句,再傳送給客戶端瀏覽器。"屏蔽"源程序能很好的維護(hù)ASP開(kāi)發(fā)人員的版權(quán),試想你辛辛苦苦做了一個(gè)很優(yōu)秀的程序,給人任意COPY,你會(huì)怎么想?而且黑客還能分析你的ASP程序,挑出漏洞。更重要的是有些ASP開(kāi)發(fā)者喜歡把密碼,有特權(quán)的用戶名和路徑直接寫在程序中,這樣別人通過(guò)猜密碼,猜路徑,很容易找到攻擊系統(tǒng)的"入口"。但是目前已經(jīng)發(fā)現(xiàn)了很多能查看ASP源程序的漏洞,后面我們還要討論。 IIS支持虛擬目錄,通過(guò)在"服務(wù)器屬性"對(duì)話框中的"目錄"標(biāo)簽可以管理虛擬目錄。建立虛擬目錄對(duì)于管理WEB站點(diǎn)具有非常重要的意義。虛擬目錄隱藏了有關(guān)站點(diǎn)目錄結(jié)構(gòu)的重要信息。因?yàn)樵跒g覽器中,客戶通過(guò)選擇"查看源代碼",很容易就能獲取頁(yè)面的文件路徑信息,如果在WEB頁(yè)中使用物理路徑,將暴露有關(guān)站點(diǎn)目錄的重要信息,這容易導(dǎo)致系統(tǒng)受到攻擊。其次,只要兩臺(tái)機(jī)器具有相同的虛擬目錄,你就可以在不對(duì)頁(yè)面代碼做任何改動(dòng)的情況下,將WEB頁(yè)面從一臺(tái)機(jī)器上移到另一臺(tái)機(jī)器。還有就是,當(dāng)你將WEB頁(yè)面放置于虛擬目錄下后,你可以對(duì)目錄設(shè)置不同的屬性,如:Read、Excute、Script。讀訪問(wèn)表示將目錄內(nèi)容從IIS傳遞到瀏覽器。而執(zhí)行訪問(wèn)則可以使在該目錄內(nèi)執(zhí)行可執(zhí)行的文件。當(dāng)你需要使用ASP時(shí),就必須將你存放.asp文件的目錄設(shè)置為"Excute(執(zhí)行)"。建議大家在設(shè)置WEB站點(diǎn)時(shí),將HTML文件同ASP文件分開(kāi)放置在不同的目錄下,然后將HTML子目錄設(shè)置為"讀",將ASP子目錄設(shè)置為"執(zhí)行",這不僅方便了對(duì)WEB的管理,而且最重要的提高了ASP程序的安全性,防止了程序內(nèi)容被客戶所訪問(wèn)。 五 ASP漏洞分析和解決方法 有人說(shuō)一臺(tái)不和外面聯(lián)系的電腦是最安全的電腦,一個(gè)關(guān)閉所有端口,不提供任何服務(wù)的電腦也是最安全的。黑客經(jīng)常利用我們所開(kāi)放的端口實(shí)施攻擊,這些攻擊最常見(jiàn)的是DDOS(拒絕服務(wù)攻擊).下面我會(huì)列出ASP的二十幾個(gè)漏洞,每個(gè)漏洞都會(huì)有漏洞描述和解決方法。 1 在ASP程序后加個(gè)特殊符號(hào),能看到ASP源程序 受影響的版本: win95+pws IIS3.0 98+pws4 不存在這個(gè)漏洞。 IIS4.0以上的版本也不存在這個(gè)漏洞。 問(wèn)題描述: 這些特殊符號(hào)包括小數(shù)點(diǎn),%81, ::$DATA。比如: http://someurl/somepage.asp. http:// someurl/somepage.asp%81 http:// someurl/somepage.asp::$DATA http:// someurl/somepage.asp %2e http:// someurl/somepage %2e%41sp http:// someurl/somepage%2e%asp http:// someurl/somepage.asp %2e http://someurl/msadc/samples/selector/showcode.asp?source=/msadc/samples/../../../../../../boot.ini (可以看到boot.ini的文件內(nèi)容) 那么在安裝有IIS3.0和win95+PWS的瀏覽中就很容易看到somepage.asp的源程序。究竟是什么原因造成了這種可怕的漏洞呢?究其根源其實(shí)是 Windows NT 特有的文件系統(tǒng)在做怪。有一點(diǎn)常識(shí)的人都知道在 NT 提供了一種完全不同于 FAT 的文件系統(tǒng):NTFS,這種被稱之為新技術(shù)文件系統(tǒng)的技術(shù)使得 NT 具有了較高的安全機(jī)制,但也正是因?yàn)樗a(chǎn)生了不少令人頭痛的隱患。大家可能不知道, NTFS 支持包含在一個(gè)文件中 的多數(shù)據(jù)流,而這個(gè)包含了所有內(nèi)容的主數(shù)據(jù)流被稱之為"DATA",因此使得在瀏覽器 里直接訪問(wèn) NTFS 系統(tǒng)的這個(gè)特性而輕易的捕獲在文件中的腳本程序成為了可能。然而 直接導(dǎo)致 ::$DATA 的原因是由于 IIS 在解析文件名的時(shí)候出了問(wèn)題,它沒(méi)有很好地規(guī)范文件名。 解決方法和建議: 如果是Winodws NT用戶,安裝IIS4.0或者IIS5.0,Windows2000不存在這個(gè)問(wèn)題。如果是win95用戶,安裝WIN98和PWS4.0。 2 ACCESS mdb 數(shù)據(jù)庫(kù)有可能被下載的漏洞 問(wèn)題描述: 在用ACCESS做后臺(tái)數(shù)據(jù)庫(kù)時(shí),如果有人通過(guò)各種方法知道或者猜到了服務(wù)器的ACCESS數(shù)據(jù)庫(kù)的路徑和數(shù)據(jù)庫(kù)名稱,那么他能夠下載這個(gè)ACCESS數(shù)據(jù)庫(kù)文件,這是非常危險(xiǎn)的。比如:如果你的ACCESS數(shù)據(jù)庫(kù)book.mdb放在虛擬目錄下的database目錄下,那么有人在瀏覽器中打入: http:// someurl/database/book.mdb 如果你的book.mdb數(shù)據(jù)庫(kù)沒(méi)有事先加密的話,那book.mdb中所有重要的數(shù)據(jù)都掌握在別人的手中。 解決方法: (1) 為你的數(shù)據(jù)庫(kù)文件名稱起個(gè)復(fù)雜的非常規(guī)的名字,并把他放在幾目 錄下。所謂"非常規(guī)",打個(gè)比方:比如有個(gè)數(shù)據(jù)庫(kù)要保存的是有關(guān)書籍的信息,可不要把他起個(gè)"book.mdb"的名字,起個(gè)怪怪的名稱,比如d34ksfslf.mdb,再把他放在如./kdslf/i44/studi/ 的幾層目錄下,這樣黑客要想通過(guò)猜的方式得到你的ACCESS數(shù)據(jù)庫(kù)文件就難上加難了 (2)不要把數(shù)據(jù)庫(kù)名寫在程序中。有些人喜歡把DSN寫在程序中,比如: DBPath = Server.MapPath("cmddb.mdb") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath 假如萬(wàn)一給人拿到了源程序,你的ACCESS數(shù)據(jù)庫(kù)的名字就一覽無(wú)余。因此建議你在ODBC里設(shè)置數(shù)據(jù)源,再在程序中這樣寫: conn.open "shujiyuan" (3)使用ACCESS來(lái)為數(shù)據(jù)庫(kù)文件編碼及加密。首先在選取"工具->安 全->加密/解密數(shù)據(jù)庫(kù),選取數(shù)據(jù)庫(kù)(如:employer.mdb),然后接確定,接著會(huì)出現(xiàn)"數(shù)據(jù)庫(kù)加密后另存為"的窗口,存為:employer1.mdb。接著employer.mdb就會(huì)被編碼,然后存為employer1.mdb.. 要注意的是,以上的動(dòng)作并不是對(duì)數(shù)據(jù)庫(kù)設(shè)置密碼,而只是對(duì)數(shù)據(jù)庫(kù)文件加以編碼,目的是為了防止他人使用別的工具來(lái)查看數(shù)據(jù)庫(kù)文件的內(nèi)容。 接下來(lái)我們?yōu)閿?shù)據(jù)庫(kù)加密,首先以打開(kāi)經(jīng)過(guò)編碼了的employer1.mdb,在打開(kāi)時(shí),選擇"獨(dú)占"方式。然后選取功能表的"工具->安全->設(shè)置數(shù)據(jù)庫(kù)密碼",接著輸入密碼即可。 為employer1.mdb設(shè)置密碼之后,接下來(lái)如果再使用ACCEES數(shù)據(jù)庫(kù)文件時(shí),則ACCESS會(huì)先要求輸入密碼,驗(yàn)證正確后才能夠啟動(dòng)數(shù)據(jù)庫(kù)。 不過(guò)要在ASP程序中的connection對(duì)象的open方法中增加PWD的參數(shù)即可,例如: param="driver={Microsoft Access Driver (*.mdb)};Pwd=yfdsfs" param=param&";dbq="&server.mappath("employer1.mdb") conn.open param 這樣即使他人得到了employer1.mdb文件,沒(méi)有密碼他是無(wú)法看到employer1.mdb的。 五 ASP漏洞分析和解決方法 3 code.asp文件會(huì)泄漏ASP代碼 問(wèn)題描述: 舉個(gè)很簡(jiǎn)單的例子,在微軟提供的 ASP1.0 的例程里有一個(gè) .asp 文件,專門用來(lái)查看其它 .asp 文件的源代碼,該文件為 ASPSamp/Samples/code.asp。如果有人把這個(gè)程序上傳到服務(wù)器,而服務(wù)器端沒(méi)有任何防范措施的話,他就可以很容易地查看他人的程序。例如 : code.asp?source=/directory/file.asp 不過(guò)這是個(gè)比較舊的漏洞了,相信現(xiàn)在很少會(huì)出現(xiàn)這種漏洞。 下面這命令是比較新的: http://someurl/iissamples/exair/howitworks/code.asp?/lunwen/soushuo.asp=xxx.asp 最大的危害莫過(guò)于asa文件可以被上述方式讀出;數(shù)據(jù)庫(kù)密碼以明文形式暴露在黑客眼前; 問(wèn)題解決或建議: 對(duì)于IIS自帶的show asp code的asp程序文件,刪除該文件或者禁止訪問(wèn)該目錄即可 4、filesystemobject 組件篡改下載 fat 分區(qū)上的任何文件的漏洞 問(wèn)題描述: IIS3、 IIS4 的 ASP 的文件操作都可以通過(guò) filesystemobject 實(shí)現(xiàn),包括文本文件的讀寫目錄操作、文件的拷貝改名刪除等,但是這個(gè)強(qiáng)大的功能也留下了非常危險(xiǎn)的 "后門"。利用 filesystemobjet 可以篡改下載 fat 分區(qū)上的任何文件。即使是 ntfs 分區(qū),如果權(quán)限沒(méi)有設(shè)定好的話,同樣也能破壞,一不小心你就可能遭受"滅頂之災(zāi) "。遺憾的是很多 webmaster 只知道讓 web 服務(wù)器運(yùn)行起來(lái),很少對(duì) ntfs 進(jìn)行權(quán)限 設(shè)置,而 NT 目錄權(quán)限的默認(rèn)設(shè)置偏偏安全性又低得可怕。因此,如果你是 Webmaster,建議你密切關(guān)注服務(wù)器的設(shè)置,盡量將 web 目錄建在 ntfs 分區(qū)上,目錄不要設(shè)定 everyone full control,即使是是管理員組的成員一般也沒(méi)什么必要 full control,只要有讀取、更改權(quán)限就足夠了。 也可以把filesystemobject的組件刪除或者改名。 5、輸入標(biāo)準(zhǔn)的HTML語(yǔ)句或者javascript語(yǔ)句會(huì)改變輸出結(jié)果 問(wèn)題描述: 在輸入框中打入標(biāo)準(zhǔn)的HTML語(yǔ)句會(huì)得到什么相的結(jié)果呢? 比如一個(gè)留言本,我們留言內(nèi)容中打入: 你好! 如果你的ASP程序中沒(méi)有屏蔽html語(yǔ)句,那么就會(huì)改變"你好"字體的大小。在留言本中改變字體大小和貼圖有時(shí)并不是什么壞事,反而可以使留言本生動(dòng)。但是如果在輸入框中寫個(gè) javascript 的死循環(huán),比如:特大新聞 那么其他查看該留言的客人只要移動(dòng)鼠標(biāo)到"特大新聞",上就會(huì)使用戶的瀏覽器因死循環(huán)而死掉。 解決方法和建議: 編寫類似程序時(shí)應(yīng)該做好對(duì)此類操作的防范,譬如可以寫一段程序判斷客戶端的輸入,并屏蔽掉所有的 HTML、 Javascript 語(yǔ)句。 五 ASP漏洞分析和解決方法 6、ASP程序密碼驗(yàn)證漏洞 漏洞描述: 很多網(wǎng)站把密碼放到數(shù)據(jù)庫(kù)中,在登陸驗(yàn)證中用以下sql,(以asp為例) sql="select * from user where username='"&username&"'and pass='"& pass &'" 此時(shí),您只要根據(jù)sql構(gòu)造一個(gè)特殊的用戶名和密碼,如:ben' or '1'='1 就可以進(jìn)入本來(lái)你沒(méi)有特權(quán)的頁(yè)面。再來(lái)看看上面那個(gè)語(yǔ)句吧: sql="select * from user where username='"&username&"'and pass='"& pass&'" 此時(shí),您只要根據(jù)sql構(gòu)造一個(gè)特殊的用戶名和密碼,如:ben' or '1'='1 這樣,程序?qū)?huì)變成這樣: sql="select*from username where username="&ben'or'1'=1&"and pass="&pass&" or 是一個(gè)邏輯運(yùn)算符,作用是在判斷兩個(gè)條件的時(shí)候,只要其中一個(gè)條件成立,那么等式將會(huì)成立.而在語(yǔ)言中,是以1來(lái)代表真的(成立).那么在這行語(yǔ)句中,原語(yǔ)句的"and"驗(yàn)證將不再繼續(xù),而因?yàn)?quot;1=1"和"or"令語(yǔ)句返回為真值.。 另外我們也可以構(gòu)造以下的用戶名: username='aa' or username<>'aa' pass='aa' or pass<>'aa' 相應(yīng)的在瀏覽器端的用戶名框內(nèi)寫入:aa' or username<>'aa 口令框內(nèi)寫入:aa' or pass<>'aa,注意這兩個(gè)字符串兩頭是沒(méi)有'的。這樣就可以成功的騙過(guò)系統(tǒng)而進(jìn)入。 后一種方法理論雖然如此,但要實(shí)踐是非常困難的,下面兩個(gè)條件都必須具備。 1. 你首先要能夠準(zhǔn)確的知道系統(tǒng)在表中是用哪兩個(gè)字段存儲(chǔ)用戶名和口令的,只有這樣你才能準(zhǔn)確的構(gòu)造出這個(gè)進(jìn)攻性的字符串。實(shí)際上這是很難猜中的。 2.系統(tǒng)對(duì)你輸入的字符串不進(jìn)行有效性檢查。 問(wèn)題解決和建議: 對(duì)輸入的內(nèi)容驗(yàn)證和"'"號(hào)的處理。 7、IIS4或者IIS5中安裝有INDEX SERVER服務(wù)會(huì)漏洞ASP源程序 問(wèn)題描述: 在運(yùn)行IIS4或者IIS5的Index Server,輸入特殊的字符格式可以看到ASP源程序或者其它頁(yè)面的程序。甚至以及添打了最近關(guān)于參看源代碼的補(bǔ)丁程序的系統(tǒng),或者沒(méi)有.htw文件的系統(tǒng),一樣存在該問(wèn)題。獲得asp程序,甚至global.asa文件的源代碼,無(wú)疑對(duì)系統(tǒng)是一個(gè)非常重大的安全隱患。往往這些代碼中包含了用戶密碼和ID,以及數(shù)據(jù)庫(kù)的源路徑和名稱等等。這對(duì)于攻擊者收集系統(tǒng)信息,進(jìn)行下一步的入侵都是非常重要的。 通過(guò)構(gòu)建下面的特殊程序可以參看該程序源代碼: http://202.116.26.38/null.htw?CiWebHitsFile=/default.asp&CiRestriction=none&CiHiliteType=Full 這樣只是返回一些html格式的文件代碼,但是當(dāng)你添加%20到CiWebHitsFile的參數(shù)后面,如下: http://someurl/null.htw?CiWebHitsFile=/default.asp%20&CiRestriction=none&CiHiliteType=Full 這將獲得該程序的源代碼。 。ㄗ⒁猓/default.asp是以web的根開(kāi)始計(jì)算。如某站點(diǎn)的http:///welcome/welcome.asp 那么對(duì)應(yīng)就是: http://someurl/null.htw?CiWebHitsFile=/welcome/welcome.asp%20&CiRestriction=none&CiHiliteType=Full ) 由于'null.htw'文件并非真正的系統(tǒng)映射文件,所以只是一個(gè)儲(chǔ)存在系統(tǒng)內(nèi)存中的虛擬文件。哪怕你已經(jīng)從你的系統(tǒng)中刪除了所有的真實(shí)的.htw文件,但是由于對(duì)null.htw文件的請(qǐng)求默認(rèn)是由webhits.dll來(lái)處理。所以,IIS仍然收到該漏洞的威脅。 問(wèn)題解決或者建議: 如果該webhits提供的功能是系統(tǒng)必須的,請(qǐng)下載相應(yīng)的補(bǔ)丁程序。如果沒(méi)必要,請(qǐng)用IIS的MMC管理工具簡(jiǎn)單移除.htw的映象文件。 補(bǔ)丁程序如下: Index Server 2.0: Intel: http://www.microsoft.com/downloads/release.asp?ReleaseID=17727 Alpha: http://www.microsoft.com/downloads/release.asp?ReleaseID=17728 Indexing Services for Windows 2000: Intel: http://www.microsoft.com/downloads/release.asp?ReleaseID=17726 8、ASP聊天室程序的漏洞 問(wèn)題描述: 如果聊天室ASP程序設(shè)計(jì)不當(dāng),很容易會(huì)給他人利用來(lái)做壞事:可以踢人,穿墻,搗亂. 首先,我們看看聊天室里有什么漏洞,大家看看下面這段代碼:
………………………… ……………… ………
OnSubmit="return chksend();"> ****** ********
發(fā)言: 悄悄: 對(duì)象: 表情: !!!!!! !!!! 以上這段代碼是我在某個(gè)聊天室用"測(cè)試者"作代號(hào)登陸后在發(fā)言幀當(dāng)下來(lái)的, 這只是一小部份,但在這一小部份代碼里面就有兩個(gè)漏洞。 第一個(gè)漏洞 大家看看上面的代碼加上"*"號(hào)的那兩句,其中第一句中的"測(cè)試者"就是我登陸的名字,還有,第二句中的"boy"是登陸時(shí)的性別,還有再看看下面我加上"!" 號(hào)的兩句,第一句里還是有我登陸時(shí)的名字,這幾句都是我現(xiàn)在想說(shuō)的兩個(gè)漏洞所在點(diǎn)。如果想在這個(gè)聊天室里穿墻的話,只要把發(fā)言幀的代碼當(dāng)下來(lái)另存,把"form"的"action"改成聊天室的地址,然后把再"*"號(hào)的第一句的"測(cè)試者"兩字改成想要的名字就可以了。也可以變換性別,只要把第二句的 "boy"改成"girl"。這就是所謂的穿墻術(shù)了。你甚至可以把它改成在線人的名字,然后發(fā)言,這樣就冒充別人的姓名談話。 第二個(gè)漏洞 踢人的漏洞就是這個(gè)了,我們看一下帶"!"號(hào)的第一句,上面有是合法用戶登陸的名字,再看第二句,他有"getout",再加上上面還有一段"form"標(biāo)簽,這段就是我們退出聊天室時(shí)的代碼,這個(gè)有什么用呢?我們先試試看,首先還是把"form"標(biāo)簽的"action"改成 聊天室的地址,不然就不知道提交給哪個(gè)家伙了。然后把"風(fēng)風(fēng)"改成你想踢下去的人的名字然后單擊"退出",那就把那個(gè)人踢出聊天室了。這個(gè)就是聊天室踢人的漏洞。 這兩個(gè)漏洞主要的原因是這兩個(gè)漏洞使服務(wù)程序不識(shí)別客戶發(fā)出的指令是不是合法用戶。 以上兩漏騙服務(wù)程序來(lái)更名發(fā)出發(fā)言,或更名退出,使得真正的使用者受害。 當(dāng)然上面的程序中還有一個(gè)漏洞,輸入框沒(méi)有對(duì)HTML語(yǔ)句和JAVASCRIPT語(yǔ)句做過(guò)濾。這個(gè)問(wèn)題我們?cè)诼┒?中已有詳細(xì)分析,這里就不談了。 問(wèn)題解決或者建議: 在程序設(shè)計(jì)中讓服務(wù)程序能識(shí)別到底是哪個(gè)家伙發(fā)出的指令就可以了,具體做法可以為每個(gè)聊天者發(fā)一個(gè)識(shí)別碼,象五筆字一樣,也可以用每個(gè)聊天者的密碼識(shí)別,也可以把聊天者的密碼隨機(jī)加密后用作識(shí)別等等 ,反正能使你的服務(wù)程序識(shí)別到底是誰(shuí)發(fā)出的指令就可以了。
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!