今天又進入到了新的一個分類,這個分類裡面只有兩個工具: SQLite database browser
以及sqlmap
,但用途大不相同,前者是個圖形化工具,主要是用來瀏覽、編輯SQLite資料庫檔案,而sqlmap
則是一個威名遠播的sql injection偵測工具,今天就來體驗看看這兩套工具。
SQLite是一個簡易型的資料庫程式,特點是輕量,能將整個資料庫,包括定義、表、索引以及資料本身,用一個單獨的、可跨平台使用的檔案儲存在主機中,因此不像其他常聽見、用於伺服器端的資料庫系統如mysql,SQLite反而較常使用在應用程式裡,就像Day 19介紹的wapiti
,它掃描過程中產出的.db
檔就是以SQLite的儲存形式存在在我們的機器上。接下來我們試著用今天想體驗的SQLite database browser
來瀏覽看看wapiti產出的資料紀錄吧。
首先先把想觀察的.db
檔放到一個非隱藏的資料夾,這邊我將檔案先複製到/tmp
下
#由於 .wapiti是隱藏資料夾,用SQLite database browser開檔可能會搜尋不到
cp /home/kali/.wapiti/scans/192.168.1.86_folder_949e587e.db /tmp/
接著到選單找分類04-Database Assessment裡的SQLite database browser
並執行,可以打開圖形化介面,接著選擇Open Database
到/tmp
將剛複製的.db
檔開啟
不只可以看到資料庫的表結構、資料內容,甚至連一般SQL語法也能執行
另外也可以自行建立新的資料庫、編輯新表,而產出的檔案當然也符合SQLite可跨平台操作的特性。
sqlmap
之所以威名赫赫的原因是因為這工具所針對的問題SQL injection
也是相當經典,現代網頁後端框架基本上都會有防護的方法,所以也不用太過於擔心,這邊我們就直接來體驗一下工具吧。
首先得先準備一個我們已知有注入問題的網頁,不然隨便找一個網頁,先不說違法問題,光是要找到線索就需要相當的經驗累積,所以這邊我們用Day2所準備的靶機其中的DVWA
頁面來展示注入問題。DVWA全稱Damn Vulnerable Web Application
該死的奧網頁,因為是用來滲透練習用的,所以也準備了有SQL injection
的頁面
用瀏覽器打開DVWA頁面,可以看到其登入畫面還有帳密
登入後可以看到左側都是展示漏洞的頁面,其中就包含了SQL injection
,但這邊先到DVWA Security
這頁將安全度調至最低,方便後續測試
接下來就直接點SQL injection
前往示範頁面,這邊每個漏洞都依安全度分不同的實作方式,所以有興趣可以點右下的view source
可以看到當前的程式碼,或是繼續點擊compare
可以看到三個不同等級的實作方法的差異
為了不浪費時間,所以這邊我們先偷看它程式碼實作,了解到其實就是把輸入的值以變數$id
方式串入sql語法
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";
先隨便填個數字觀察一下資料內容 ,填入id為1可以得到某user的資訊
接下來我們要輸入一些非數字的,看有沒有什麼方式能繞開條件來取得資料,這邊就不賣關子,我們直接輸入1' or '1' = '1
明明輸入了不合法的字串當作id,卻還是撈出了資料,由於我們偷看過程式碼,所以不難理解是因為利用了'
單引號來結束第一個單引號形成第一個條件,而且透過or
加上讓第二個條件恆真,因此才能夠使每一筆資料都合乎條件而被列出來。兩個條件分別是user_id = '1'
以及'1' = '1'
,這種明明是不合法的輸入卻能以非法的方式取得資料就讓我們證明了這頁面的確有漏洞
但是當如果我們不知道程式碼的狀況,要如何知道網頁存在漏洞呢,這時候就是sqlmap
出場的時候,讓我們先前往SQL injection
頁面,並且在瀏覽器按下F12
呼叫出開發工具列,然後再輸入欄填上任何合法id,就能在開發工具列看到一個請求送往http://192.168.1.86/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#
,對這個請求點右鍵
->Copy
->Copy Request Headers
並儲存成檔案,檔名隨意
接著利用sqlmap
來使用這個檔案來進行掃描,這檔案data
有著url
、Cookie
等工具需要的資訊
sqlmap -r data --dump
上面參數的涵義可以透過sqlmap -h
或是sqlmap -hh
來了解
-r REQUESTFILE Load HTTP request from a file
--dump Dump DBMS database table entries
這樣一來sqlmap就會從指定檔案進行掃描,類似前面我們手工的注入手段,再加上其他模糊猜測,最後將暴露出的資訊顯示出來
今天介紹的兩個工具都很實用,SQLite database browser
因為圖形化的關係,使用上非常直覺,而sqlmap
的使用方式其實還有相當多值得探索的部分,這部分就留待之後另開篇章來探索吧。