暴庫方法
07-28
「%5c」暴庫法,它不是網頁本身的漏洞,而是利用了IIS解碼方式中的一個特性,如果IIS安全設置不周全,而網頁設計者未考慮IIS錯誤,就會被人利用。為何要用「%5c」?它實際上是「」的十六進位代碼,也就是「」的另一種表示法。在電腦中,它們是同一個東東,但提交「」和「%5c」卻會產生不同的結果。在IE中,我們把下面第一個地址中的「/」換成「」提交: http://219.237.81.46/yddown/view.asp?id=3 http://219.237.81.46/yddownview.asp?id=3 二者的訪問結果是一樣的。IE會自動把「」轉變成「/」,從而訪問到同一地址。但是,當我們把「/」換成十六進位寫法「%5c」時,IE不會對此進行轉換。地址中的「%5c」被原樣提交了,抓包結果如下: GET /yddown%5cview.asp?id=3 HTTP/1.1 當IIS收到並做出解析時,又會將%5c還原成「」。這樣,IIS中網址的相對路徑就變成/yddownview.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 %> 大家注意第4句:「DBPath = Server.MapPath("admin/rds_dbd32rfd213fg.mdb")」,Server.MapPath方法的作用是將網站中的相對路徑轉變成物理上的絕對路徑,為何要這樣?因為連接資料庫時,須指明它的絕對路徑才能讀取和寫入。那什麼是相對路徑、絕對路徑?IIS為了不讓訪問者知道真實的實際路徑,並且確保網站不因變換地址而影響使用,它採用了一種相對路徑來表示目錄與文件之間的關係。也就是網址目錄只表示從根目錄起的相對位置。比如網站:http://219.237.81.46的根目錄為:「D:111」,雨點下載目錄則在根目錄(D:111)內的「yddown」下,我們網站訪問該站時,就是在訪問D:111yddown目錄,而http://219.237.81.46/yddown/admin/只表明了Admin與Yddown這個目錄的相對關係,把這個網站放在E盤,也一樣不改變Admin位於Yddown目錄下的關係。 當Server.MapPath方法將相對路徑轉為真實路徑時,它實際是三部分路徑加在一起得到真實路徑的:網頁目前執行時所在的相對路徑,也就是從網站物理根目錄起的相對路徑,比如上面例子中Conn.asp處在從根目錄起的「/yddown/」下;然後調用的資料庫的相對路徑是admin/rds_dbd32rfd213fg.mdb,這樣就得到從根目錄起的完整相對路徑:「/yddown/admin/rds_dbd32rfd213fg.mdb」。這些都只是相對的路徑,如何變為真實路徑呢? 設置過IIS的人都會知道,每一個網站,都必須指定它在硬碟上的物理目錄,比如上例中,網站根目錄所在的物理目錄為:「D:111」,Server.MapPath方法正是通過把「網站根目錄的物理地址+完整的相對路徑」,從而得到真實的物理路徑,資料庫在硬碟上的物理路徑是:D:111yddownadmin
ds_dbd32rfd213fg.mdb。IIS以「」表示真實路徑的目錄關係,而以「/」表示虛擬路徑,這可能就是IE會自動把我們地址中的「」轉為「/」的原因。 明白這些,我們再來理解暴庫就不難了,當我們提交:http://219.237.81.46/yddown%5cview.asp?id=3時,View.asp調用Conn.asp後,得到的網頁相對路徑是這樣的:「/yddown」,再加上「admin/rds_dbd32rfd213fg.mdb」,就得到「/yddown+admin/rds_dbd32rfd213fg.mdb」。在IIS中,「/」和「」代表著不同的意義,遇到了「」時,認為它已到了根目錄所在的物理路徑,不再往上解析(為何不再往上解析?後面還會分析),於是網站的完整相對路徑變成了:「admin/rds_dbd32rfd213fg.mdb」,再加上根目錄的物理路徑,得到的真實路徑變成:「D:111admin
ds_dbd32rfd213fg.mdb」,而這個路徑是不存在的,資料庫連接當然會失敗,於是IIS會報錯,並給出錯誤原因: Microsoft JET Database Engine 錯誤 &&9;80004005&&9; &&9;D:111admin
ds_dbd32rfd213fg.mdb&&9;不是一個有效的路徑。 確定路徑名稱拼寫是 否正確,以及是否連接到文件存放的伺服器。 /yddown/conn.asp,行12
推薦閱讀:
ds_dbd32rfd213fg.mdb。IIS以「」表示真實路徑的目錄關係,而以「/」表示虛擬路徑,這可能就是IE會自動把我們地址中的「」轉為「/」的原因。 明白這些,我們再來理解暴庫就不難了,當我們提交:http://219.237.81.46/yddown%5cview.asp?id=3時,View.asp調用Conn.asp後,得到的網頁相對路徑是這樣的:「/yddown」,再加上「admin/rds_dbd32rfd213fg.mdb」,就得到「/yddown+admin/rds_dbd32rfd213fg.mdb」。在IIS中,「/」和「」代表著不同的意義,遇到了「」時,認為它已到了根目錄所在的物理路徑,不再往上解析(為何不再往上解析?後面還會分析),於是網站的完整相對路徑變成了:「admin/rds_dbd32rfd213fg.mdb」,再加上根目錄的物理路徑,得到的真實路徑變成:「D:111admin
ds_dbd32rfd213fg.mdb」,而這個路徑是不存在的,資料庫連接當然會失敗,於是IIS會報錯,並給出錯誤原因: Microsoft JET Database Engine 錯誤 &&9;80004005&&9; &&9;D:111admin
ds_dbd32rfd213fg.mdb&&9;不是一個有效的路徑。 確定路徑名稱拼寫是 否正確,以及是否連接到文件存放的伺服器。 /yddown/conn.asp,行12
推薦閱讀:
※桑螵蛸的功效與食用方法
※判斷腎功能的幾種方法
※蘋果的編織方法(摘)
※教加減法,這5個方法越早知道越好!數學早教,堅決不能刷題!
TAG:方法 |