解決 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的。