發信人: atnt.bbs@bbs.ntu.edu.tw (atnt)
日期: 12 Aug 2000 16:58:54 GMT
標題: [轉貼]asp網路安全手冊(二)
信群: tw.bbs.comp.security 看板: Security/A0SPB0ID
來源: <3blY1T$PaL@bbs.ntu.edu.tw>:8764,
組織: 台大計中椰林風情站
ASP网絡安全手冊(二)
hero3 于 2000-8-9 16:06:31 加貼在 CGI安全:
五 ASP漏洞分析和解決方法
有人說一台不和外面聯系的電腦是最安全的電腦,一個關閉所有端口,不提供任何
服務的電腦也是最安全的。黑客經常利用我們所開放的端口實施攻擊,這些攻擊最
常見的是DDOS(拒絕服務攻擊).下面我會列出ASP的二十几個漏洞,每個漏洞都會
有漏洞描述和解決方法。
1 在ASP程序后加個特殊符號,能看到ASP源程序
受影響的版本:
win95+pws
IIS3.0
98+pws4 不存在這個漏洞。
IIS4.0以上的版本也不存在這個漏洞。
問題描述:
這些特殊符號包括小數點,%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的文件內容)
那么在安裝有IIS3.0和win95+PWS的瀏覽中就很容易看到somepage.asp的源程序。究
竟是什么原因造成了這种可怕的漏洞呢?究其根源其實是 Windows NT 特有的文件
系統在做怪。有一點常識的人都知道在 NT 提供了一种完全不同于 FAT 的文件系統:
NTFS,這种被稱之為新技術文件系統的技術使得 NT 具有了較高的安全机制,但也
正是因為它而產生了不少令人頭痛的隱患。大家可能不知道, NTFS 支持包含在一
個文件中 的多數据流,而這個包含了所有內容的主數据流被稱之為"DATA",因此使
得在瀏覽器 里直接訪問 NTFS 系統的這個特性而輕易的捕獲在文件中的腳本程序成
為了可能。然而 直接導致 ::$DATA 的原因是由于 IIS 在解析文件名的時候出了問
題,它沒有很好地規范文件名。
解決方法和建議:
如果是Winodws NT用戶,安裝IIS4.0或者IIS5.0,Windows2000不存在這個問題。如
果是win95用戶,安裝WIN98和PWS4.0。
2 ACCESS mdb 數据庫有可能被下載的漏洞
問題描述:
在用ACCESS做后台數据庫時,如果有人通過各种方法知道或者猜
到了服務器的ACCESS數据庫的路徑和數据庫名稱,那么他能夠下載這個ACCESS數据
庫文件,這是非常危險的。比如:如果你的ACCESS數据庫book.mdb放在虛擬目錄下
的database目錄下,那么有人在瀏覽器中打入:
http:// someurl/database/book.mdb
如果你的book.mdb數据庫沒有事先加密的話,那book.mdb中所有重要
的數据都掌握在別人的手中。
解決方法:
(1) 為你的數据庫文件名稱起個复雜的非常規的名字,并把他放在几目
錄下。所謂"非常規",打個比方:比如有個數据庫要保存的是有關書籍的信息,可
不要把他起個"book.mdb"的名字,起個怪怪的名稱,比如d34ksfslf.mdb,再把他放
在如./kdslf/i44/studi/ 的几層目錄下,這樣黑客要想通過猜的方式得到你的ACCESS數
据庫文件就難上加難了。
(2)不要把數据庫名寫在程序中。有些人喜歡把DSN寫在程序中,比如:
DBPath = Server.MapPath("cmddb.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
假如万一給人拿到了源程序,你的ACCESS數据庫的名字就一覽無余。因此建議你在
ODBC里設置數据源,再在程序中這樣寫:
conn.open "shujiyuan"
(3)使用ACCESS來為數据庫文件編碼及加密。首先在選取"工具->安
全->加密/解密數据庫,選取數据庫(如:employer.mdb),然后接确定,接著會出
現"數据庫加密后另存為"的窗口,存為:employer1.mdb。接著employer.mdb就會被
編碼,然后存為employer1.mdb..
要注意的是,以上的動作并不是對數据庫設置密碼,而只是對數据庫文件加以編碼,
目的是為了防止他人使用別的工具來查看數据庫文件的內容。
接下來我們為數据庫加密,首先以打開經過編碼了的employer1.mdb,在打開時,選
擇"獨占"方式。然后選取功能表的"工具->安全->設置數据庫密碼",接著輸入密碼
即可。
為employer1.mdb設置密碼之后,接下來如果再使用ACCEES數据庫文件時,則ACCESS會
先要求輸入密碼,驗證正确后才能夠啟動數据庫。
不過要在ASP程序中的connection對象的open方法中增加PWD的參數即可,例如:
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
不過這是個比較舊的漏洞了,相信現在很少會出現這种漏洞。
下面這命令是比較新的:
http://someurl/iissamples/exair/howitworks/code.asp?/lunwen/soushuo.asp=xxx.asp
最大的危害莫過于asa文件可以被上述方式讀出;數据庫密碼以明文形式暴露在黑客
眼前;
問題解決或建議:
對于IIS自帶的show asp code的asp程序文件,刪除該文件或者禁止訪問該目錄即可
4、filesystemobject 組件篡改下載 fat 分區上的任何文件的漏洞
問題描述:
IIS3、 IIS4 的 ASP 的文件操作都可以通過 filesystemobject 實現,包括文
本文件的讀寫目錄操作、文件的拷貝改名刪除等,但是這個強大的功能也留下了非
常危險的 "后門"。利用 filesystemobjet 可以篡改下載 fat 分區上的任何文件。
即使是 ntfs 分區,如果權限沒有設定好的話,同樣也能破坏,一不小心你就可能
遭受"滅頂之災 "。遺憾的是很多 webmaster 只知道讓 web 服務器運行起來,很少
對 ntfs 進行權限 設置,而 NT 目錄權限的默認設置偏偏安全性又低得可怕。因此,
如果你是 Webmaster
,建議你密切關注服務器的設置,盡量將 web 目錄建在 ntfs 分區上,目錄不要設
定 everyone full control,即使是是管理員組的成員一般也沒什么必要 full control,
只要有讀取、更改權限就足夠了。 也可以把filesystemobject的組件刪除或者改名。
5、輸入標准的HTML語句或者javascript語句會改變輸出結果
問題描述:
在輸入框中打入標准的HTML語句會得到什么相的結果呢?
比如一個留言本,我們留言內容中打入:
你好!
如果你的ASP程序中沒有屏蔽html語句,那么就會改變"你好"字體的大小。在留
言本中改變字體大小和貼圖有時并不是什么坏事,反而可以使留言本生動。但是如
果在輸入框中寫個 javascript 的死循環,比如:特大新聞
那么其他查看該留言的客人只要移動鼠標到"特大新聞",上就會使用戶的瀏覽器因
死循環而死掉。
解決方法和建議:
編寫類似程序時應該做好對此類操作的防范,譬如可以寫一段程序判斷客戶端的輸
入,并屏蔽掉所有的 HTML、 Javascript 語句。
--
☆ [Origin:椰林風情] [From: h244.s163.ts32.hinet.net] [Login: 79] [Post: 2]
.