堵住ASP漏洞

來源:互聯網
上載者:User
無論你相不相信,通過 asp,可能可以很方便地入侵 web server、竊取伺服器上的檔案、捕獲
web
資料庫等系統的使用者口令,甚至惡意刪除伺服器上的的檔案,直至造成系統損壞,這些都決非聳人聽聞,而且都確確實實發生過,本文將向你一一揭示這些
asp 存在的漏洞,並提出一些防範意見。

  上一篇中給大家著重談了“ADO
存取資料庫時如何分頁顯示”的問題,有位朋友來信給我指出我在計算頁面總數時忽略了
Recordset 對象的一個重要參數“PageCount”,它能在給 Pagesize
賦值後自動得出頁面的總數,而無須用“INT(RS.recordcount/PgSz*-1)*-1”這樣繁瑣的公式。我要感謝這位朋友熱心地給我指出程式中的不足,由於這個程式是我在很久以前寫的,因為在分頁顯示的時候記錄的總數不一定能整除頁面顯示記錄的數目,而當時我又不能肯定
PageCount
是否能正確得出頁面的數目,所以偷懶寫了這個公式:),說實話我到現在還都沒試過用
pagecount,有興趣的朋友千萬要試一下哦,可別學我的懶惰呀。


  最近我在 chinaasp 的 bbs 上討論問題時發現很多朋友對於 asp
的一些安全性問題不甚瞭解,甚至不知道如何解決最常見的 asp::$DATA
顯示原始碼的問題,因此我覺得非常有必要在這裡給廣大朋友們重點談一談這個問題,在徵得
chinaasp 飛鳥的同意下,我將他曾經寫過的一點關於 asp
漏洞的介紹加上我自己的一些實踐經驗拿出來給大家詳細分析一下這個對於
webmaster 來說至關重要的 asp 的安全性問題。


  當去年 ::$DATA
的漏洞被發現並公布的第二天,我曾經檢測了當時國內大部分運用
asp
的網站,其中百分之九十九都存在以上可以看見原始碼的問題,當日我甚至在微軟的網站上抓下了
search.asp
這個檔案的原始碼。可能你會覺得看到原始碼並沒有什麼大礙,如果作為
webmaster 的你這麼想就大錯特錯了。譬如,如果 asp
程式員將網站的登陸密碼直接寫在 asp
裡,那麼一旦源碼被發現,他人就可以很容易的進入本不該被看到的頁面,我就曾經利用這個方法免費成為了一個收費網站的成員(大家可別揭發我哦!),而且很多資料庫的串連使用者名稱和密碼也都是直接寫在
asp
裡,一旦被發現,如果你的資料庫允許遠端存取而且沒有設防的話就相當危險了。在一些用
asp 開發的 bbs 程式中,往往使用的是 access mdb 庫,如果 mdb
庫存放的路徑被獲知,資料庫就很有可能被他人下載,加之如果資料庫裡含有的密碼不加密,那就非常危險了,擷取密碼的人如果有意進行惡意破壞,他只需要以
admin 身份登陸刪除所有 bbs
裡的文章,就夠你嗆的了。下面列出了目前已經發現的一些漏洞,希望大家提高警惕一、經過實驗我們發現,
win95+pws 上運行 asp 程式,只須簡單地在瀏覽器地址欄的 asp
檔案名稱後多加一個小數點 asp 程式就會被下載下來。 IIS3
也存在同樣的問題,如果你目前還在使用 IIS3 一定要測試一下。





  二、 iis2、 iis3、 iis4 的一個廣為人知的漏洞就是 ::$DATA,通過它使用
ie 的 view source 或 netscape 直接存取該 asp 檔案就能輕而易舉地看到 asp
代碼。 Win98+pws4 不存在這個漏洞。




  究竟是什麼原因造成了這種可怕的漏洞呢?究其根源其實是
Windows NT 特有的檔案系統在做怪。有一點常識的人都知道在 NT
提供了一種完全不同於 FAT 的檔案系統: NTFS,這種被稱之為新技術檔案系統的技術使得
NT
具有了較高的安全機制,但也正是因為它而產生了不少令人頭痛的隱患。大家可能不知道,
NTFS
支援包含在一個檔案中的多資料流,而這個包含了所有內容的主要資料流被稱之為“DATA”,因此使得在瀏覽器裡直接存取
NTFS
系統的這個特性而輕易的捕獲在檔案中的指令碼程式成為了可能。然而直接導致
::$DATA 的原因是由於 IIS
在解析檔案名稱的時候出了問題,它沒有很好地規範檔案名稱。




  我們該如何解決這個問題呢?辦法有幾種:




  a、是將 .asp 檔案存放的目錄設定為不可讀(ASP
仍能執行),這樣 html、 css
等檔案就不能放在這個目錄下,否則它們將不能被瀏覽。




  b、是安裝微軟提供的補丁程式,下載的地址如下(注意針對不同的系統有不同的補丁):





  該補丁是針對 IIS3, Intel 平台




  ftp.microsoft.com/bussys/iis/iis-public/fixes/cht/security/iis3-datafix/iis3fixi.exe





  該補丁是針對 IIS3, Intel 平台




  ftp.microsoft.com/bussys/iis/iis-public/fixes/cht/security/iis3-datafix/iis3fixa.exe





  該補丁是針對 IIS4, Alpha 平台




  ftp.microsoft.com/bussys/iis/iis-public/fixes/cht/security/iis4-datafix/iis4fixi.exe





  該補丁是針對 IIS4, Alpha 平台




  ftp.microsoft.com/bussys/iis/iis-public/fixes/cht/security/iis4-datafix/iis4fixa.exe
c、是在伺服器上安裝 ie4.01sp1,這個是否有效,作者本人沒具體試過。



  d、存粹作者的個人意見,盡量安裝英文版的 NT,而不要使用中文版,究其原因作者也說不清,只是根據實踐經驗英文版的
NT 較中文版 bug 少,如果哪位朋友知道原因千萬要告訴我。




  三 . 支援 asp
的免費首頁空間以及虛擬機器主機服務的伺服器面臨的問題




  1、伺服器上的 asp 代碼很可能被人其他擁有 asp
許可權的人非法擷取。




  舉個很簡單的例子,在微軟提供的 ASP1.0 的常式裡有一個 .asp
檔案專門用來查看其它 .asp 檔案的原始碼,該檔案為
ASPSamp/Samples/code.asp。如果有人把這個程式上傳的伺服器,而伺服器端沒有任何防範措施的話,他就可以很容易地查看他人的程式。





  例如 :




  code.asp?source=/directory/file.asp




2、使用的 ACCESS mdb
資料庫可能被人下載一般來說在提供 asp
許可權的免費首頁伺服器上不可能提供代為設定 DSN 的服務,因此 asp
程式使用的資料庫通常都局限在使用 mdb 庫,而 mdb
遠端資料庫所在的位置是使用我們在第十四期中講到過的 DSN-less
方法直接在 asp 中指定的,方法如下


   < %connstr =
"DBQ="+server.mappath("database/source.mdb")+";DefaultDir=;DRIVER={Microsoft
Access Driver (*.mdb)};DriverId=25;FIL=MS
Access;ImplicitCommitSync=Yes;MaxBufferSize=512;MaxScanRows=8;PageTimeout=5;
SafeTransactions=0;Threads=3;UserCommitSync=Yes;"%>




  正如前文所言,在這種情況下 mdb
庫很可能被他人下載,從而造成諸如密碼等的泄露。




  所以,作為 webmaster 應該採取一定的措施,嚴禁 code.asp
之類的程式(似乎很難辦到 , 但可以定期檢索特徵代碼),限制 mdb
的下載。




  3、來自強大的 filesystemobject 組件的威脅




  IIS3、IIS4 的ASP 的檔案操作都可以通過 filesystemobject
實現,包括文字檔的讀寫目錄操作



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。