程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 安全基礎知識 細說暴庫的原理與方法(1)

安全基礎知識 細說暴庫的原理與方法(1)

編輯:關於SqlServer


  SQL注入流行很久了,我們找漏洞注入目的無非是想得到數據庫內的東西,比如用戶名密碼等。(當然mssql數據庫還可以借此獲得權限)。如果我們不用注入就可以得到整個數據庫,不是更好嗎?於是暴庫成了一個比注入更簡單的的入侵手段。

  有關暴庫的方法,高手們常在入侵文章中提高,但多是一筆帶過,有些就某一個方法談的,也多是就方法進行探討。最近有一篇《再談%5c暴庫的利用》文章,算是對暴庫進行了一些總結,因而在網是流傳很廣。但仍沒有談及原理,而且結論也只是就於經驗,似是而非,於是決定來談談暴庫的原理與規律。

  一,關於"%5c"暴庫大法:

  這種方法被認為是暴庫絕招,很是流行了一陣(隨著知道的人多了,防備也加強了,沒以前那麼有效了)。這種方法,簡單點說就是,打開網頁時,把網址址中的"/"換成"%5c",然後提交,就可以暴出數據庫的路徑。

  實際上,並不是所有網址都有效,需要"ASP?id="這樣的網頁地址(表示有調用數據庫的行為),如果你確認這個網頁有調用數據庫的,後面不是這樣的也可以,比如chklogin.ASP等也可以。(當然,也還有其它條件,後面再談。)

  先舉個例子,
http://219.237.81.46/yddown%5cvIEw.ASP?id=3
  把第二個"/"換成"%5c"
http://219.237.81.46/yddown%5cvIEw.ASP?id=3
  提交後會得到如下結果:

  Microsoft JET Database Engine 錯誤 ’80004005’

  ’D:\111\admin\rds_dbd32rfd213fg.mdb’不是一個有效的路徑。 確定路徑名稱拼寫是否正確,以及是否連接到文件存放的服務器。

  /yddown/conn.ASP,行12

  (說明:這是黑防實驗室的一個網站,暴庫是他們故意開放的,因為它的關口不是注入,而是進入後台後如何獲得shell)。

  現在很多人都知道這個方法了,我就不多舉例了。但清楚暴庫原理的人估計是不多的。有人成功,有人不成功,《再談%5c暴庫的利用》一文總結說,須變換第二個"/"為"%5c"才行。很有實用性,但這個結論只是一種經驗,其實並不正確。讓我們先看看它的原理 "%5c"暴庫法,它不是網頁本身的漏洞,而是利用了IIS解碼方式中的一個特性,如果IIS安全設置不周全,而網頁設計者未考慮IIS錯誤,就會被人利用。

  為何要用"%5c"?它實際上是"\"的十六進制代碼,也就是"\"的另一種表示法。在電腦中,它們是一個東東。(十六進制轉換圖)

  但提交"\"和"%5c"卻會產生不同的結果,在IE中,我們把下面第一個地址中的"/"換成"\"提交:
http://219.237.81.46/yddown/vIEw.ASP?id=3

  http://219.237.81.46/yddown\vIEw.ASP?id=3

  二者的訪問結果是一樣的。IE會自動把"\"轉變成"/",從而訪問到同一地址。

  但是,當我們把"/"換成十六進制寫法"%5c"時,IE不會對此進行轉換。地址中的"%5c"被原樣提交了。這是抓包結果:

  GET /yddown%5cvIEw.ASP?id=3 HTTP/1.1

  當IIS收到後解析時,又會將%5c還原成"\"。這樣,IIS中網址的相對路徑就變成/yddown\vIEw.ASP。這一點很重要。問題正是從這裡開始的。

  在ASP網頁中,凡調用數據庫時,都會用到一個連接數據庫的網頁conn.ASP,它會創建一個數據庫連接對象,定義要調用的數據庫路徑
一個典型的conn.ASP如下:

  <%
 dim conn
 dim dbpath
 set conn=server.createobject("adodb.connection")
 DBPath = Server.MapPath("admin/rds_dbd32rfd213fg.mdb")
 conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
%>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved