用“%5c”暴庫與 Neeao 的blog被搞到修補!

終於搞到了這個灰色調的版本的blog,和Hoky.Pro的一樣!^_^!興奮ing
可是第二天晚上,在羣裏一發,馬上就被人搞啦!我已經在被搞後修補了漏洞!因爲第二天要上班,
也沒來得及把過程寫出來!唉!暈死!事情是這樣的:

前天剛把blog的版本換了,在xiaolu羣裏一發,
馬上生亦何哀兄就說出了偶的數據庫的位置!

暈!想來想去,這個版本的blog是沒有注入可用的,服務器安全也是偶親自和朋友搞的,
不可能有漏洞的!雖說偶技術不行,但也在黑基混了那麼長時間啦,服務器的一般的安全還是能搞定的!
鬱悶ing!想了半天也沒搞明白是哪裏出了問題!
xiaolu羣裏都是牛人,唉,沒辦法!在偶的再三的要求下,生亦何哀兄給偶說了,是暴庫!
更鬱悶啦!暴庫?????怎麼暴的呢!

原來是這樣的!我在我自己的機子上試了一下,
這個是偶的主頁的url:http://neeao/lbs/default.asp
將url裏面default.asp前的"/"號改爲"%5c",瀏覽器馬上報錯,代碼如下:

Microsoft VBScript ??Ʒ?펳 ?펳 '800a03f6'

ȱə 'End'

/iisHelp/common/500-100.asp??А242

Microsoft JET Database Engine ?펳 '80004005'

'D:/My Web/neeaodata/Neeao_blog.asp'[??ʇһ????Ă????? ȷ??·??û?Ɔ?дʇ?񕽈???Ҕ??ʇ?񁬽ӵ?΄????

/common.asp??А47
上面的'D:/My Web/neeaodata/Neeao_blog.asp就暴出了偶的數據庫的路徑!暈死!
怎麼回事呢!爲什麼會這樣呢!或許這篇文章有用:http://www.neeao.info/lbs/blogview.asp?logID=18
我就不寫出來了!可以自己去看!
暴庫的原理就是通過在url中加入特殊代碼讓數據庫鏈接文件報錯,直接暴出數據庫路徑!比注入更直接!更瘋狂!
這個以前小幽給偶說過,不過還沒發現哪個網站有這個漏洞呢!沒想到今天自己的站就是活標本,怪自己大意啦!

既然知道漏洞產生的原因,那麼我們怎麼修補呢!
方法(1):最直接,最有效的方法,就是修改conn.asp代碼,在適當的位置加上這句代碼:On Error Resume Next
書面的意思就是在發生錯誤的時候繼續!
方法(2):防止數據庫下載,這個可以用多中方法,一個就是到服務器設置一下,這個比較麻煩了!
還得要有桌面權限纔可以得!一般得我們網站只是ftp上去的!不過也要說一下了!以前看過一個是把數據庫文件重定向,
這樣別人下載我們的數據庫的時候就重定向到了別的頁面,這樣就可以防止下載了!
呵呵!哪位還有什麼好的方法告訴我一下!謝謝!
=========================================
下面是在黑基的bbs上的回貼:
===============================

另外引用一篇關於防數據庫下載的:

3:數據庫名前加"#"
  只需要把數據庫文件前名加上#、然後修改數據庫連接文件(如conn.asp)中的數據庫地址。原理是下載的時候只能識別 #號前名的部分,對於後面的自動去掉,比如你要下載:http://www.pcdigest.com/date/#123.mdb(假設存在的話)。無論是IE還是FLASHGET等下到的都是http://www.pcdigest.com/date/index.htm(index.asp、default.jsp等你在IIS設置的首頁文檔)
  另外在數據庫文件名中保留一些空格也起到類似作用,由於HTTP協議對地址解析的特殊性,空格會被編碼爲"%",如http://www.pcdigest.com/date/123 ;456.mdb,下載的時http://www.pcdigest.com/date/123%456.mdb。而我們的目錄就根本沒有123%456.mdb這個文件,所以下載也是無效的這樣的修改後,即使你暴露了數據庫地址,一般情況下別人也是無法下載!

4:加密數據庫
  用ACCESS將你的數據庫以獨佔方式打開後,在工具-安全-設置數據庫密碼,加密後要修改數據庫連接頁, 如:
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=數據庫密碼;dbq=數據庫路徑"
  這樣修改後,數據庫即使被人下載了,別人也無法打開(前提是你的數據庫連接頁中的密碼沒有被泄露)
  但值得注意的是,由於Access數據庫的加密機制比較簡單,即使設置了密碼,解密也很容易。該數據庫系統通過將用戶輸入的密碼與某一固定密鑰進行"異或"來形成一個加密串,並將其存儲在*.mdb文件從地址"&H42"開始的區域內。所以一個好的程序員可以輕鬆製作一個幾十行的小程序就可以輕鬆地獲得任何Access數據庫的密碼。因此,只要數據庫被下載,其信息安全依然是個未知數。

二:有主機控制權 (當然虛擬空間的設置在這裏依然可以用)

5:數據庫放在WEB目錄外
  如你的WEB目錄是e:/webroot,可以把數據庫放到e:/data這個文件夾裏,在e:/webroot裏的數據庫連接頁中修改數據庫連接地址爲:"../data/數據庫名" 的形式,這樣數據庫可以正常調用,但是無法下載的,因爲它不在WEB目錄裏!這個方法一般也不適合購買虛擬空間的用戶。

6:使用ODBC數據源。
  在ASP等程序設計中,如果有條件,應儘量使用ODBC數據源,不要把數據庫名寫在程序中,否則,數據庫名將隨ASP源代碼的失密而一同失密,例如: DBPath = Server.MapPath("../123/abc/asfadf.mdb ")
conn.open "driver={Microsoft Access Driver (*.mdb)};dbq="& DBPath
  可見,即使數據庫名字起得再怪異,隱藏的目錄再深,ASP源代碼失密後,也很容易被下載下來。如果使用ODBC數據源,就不會存在這樣的問題了: conn.open "ODBC-DSN名" ,不過這樣是比較煩的,目錄移動的話又要重新設置數據源了,更方便的方法請看第7,8法!

7:添加數據庫名的如MDB的擴展映射
  這個方法就是通過修改IIS設置來實現,適合有IIS控制權的朋友,不適合購買虛擬主機用戶(除非管理員已經設置了)。這個方法我認爲是目前最好的。只要修改一處,整個站點的數據庫都可以防止被下載。無須修改代碼即使暴露目標地址也可以防止下載,如圖1、2設置:

我們在 IIS屬性---主目錄---配置---映射---應用程序擴展那裏添加.mdb文件的應用解析。注意這裏的選擇的DLL(或EXE等)似乎也不是任意的,選擇不當,這個MDB文件還是可以被下載的, 注意最好不要選擇選擇asp.dll等。你可以自己多測試下
  這樣修改後下載數據庫如:http://192.168.1.5/HaoBbs/data/dvbbs6.mdb。就出現(404或500等錯誤)

8:使用.net的優越性
  動網的木鳥就寫過一個防非法下載文件的"WBAL 防盜鏈工具"。具體可以登陸http://www.9seek.com/WBAL/ ;
  不過 那個只實現了防止非本地下載的 ,沒有起到真正的防下載數據庫的功能。不過這個方法已經跟5法差不多可以通過修改.NET文件,實現本地也不能下載!

  這幾個方法中,只有第7和8個是統一性改的,一次修改配置後,整個站點的數據庫都可以防止下載,其他幾個就要分別修改數據庫名和連接文件,比較麻煩,不過對於虛擬主機的朋友也只能這樣了!

  其實第6個方法應該是第5個方法的擴展,可以實現特殊的功能,但對於不支持.net的主機或者怕設置麻煩的話,還是直接用第5個方法了,而且默認情況下第6個方法,依然可以通過複製連接到同主機的論壇或留言本發表,然後就可以點擊下載了(因爲這樣的引用頁是來自同主機的)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章