許多管理員誤以為對 Access (.mdb/.accdb) 設定密碼即可保護資料。實則 Access 加密演算法極脆弱,**市面工具 (AccessKey, MDB Password Recovery 等) 幾秒即可破解**。更危險的是「暴庫技術」可繞過檔名猜測直接定位資料庫檔案。本文揭露駭客實戰手法與防禦對策。
駭客不需要知道 data/rds_dbd32rfd213fg.mdb 這類亂碼檔名:
db = "data/rds_dbd32rfd213fg.mdb"
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
conn.Open connstr
-- 正常請求
GET /conn.asp
-- 攻擊請求:將 / 替換為 %5c (反斜線 URL 編碼)
GET /%5cconn.asp
-- 或
GET /..%5cconn.asp
-- IIS 解析後變為相對路徑,可能洩露實體路徑或直接下載檔案
原理:IIS 對 `%5c` (反斜線) 解析不一致,導致路徑解析異常,洩露伺服器實體路徑或直接讀取檔案內容 (含連線字串)。
若網站目錄權限配置不當 (如 `data` 目錄可直接瀏覽/下載):
GET /data/rds_dbd32rfd213fg.mdb
-- 直接下載資料庫檔案,本地用破解工具離線破解密碼
| 向量 | 描述 | 風險 |
|---|---|---|
| 連線字串硬編碼 | .asp/.aspx/.config 檔案含明文密碼 | 源碼洩露即資料庫失陷 |
| 錯誤訊息回顯 | ASP 錯誤頁顯示連線字串、SQL 語句 | 資訊洩露輔助注入 |
| 備份檔案殘留 | conn.asp.bak, web.config.backup, database.mdb.bak | 直接下載獲取連線資訊 |
| 版本控制洩露 | .git/.svn 目錄公開 | 歷史提交含生產密碼 |
...
-- 程式碼讀取
ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString
Access 加密 = **無安全性**。暴庫技術讓「不知檔名」成為虛假防線。
🛡 **唯一正解**:Web 應用**強制遷移至 Server 型資料庫** (SQL Server/MySQL/PostgreSQL),實施分層防護。
🔍 **自查清單**:無 .mdb/.accdb 於 Web 目錄、連線字串加密、目錄權限最小化、錯誤訊息不回顯、備份檔不公開、資料庫埠不對外。