iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
Security

Kali Linux 工具筆記系列 第 20

Day 20 資料庫評估 - Database Assessment (sqlmap, SQLite database browser)

  • 分享至 

  • xImage
  •  

前言

今天又進入到了新的一個分類,這個分類裡面只有兩個工具: SQLite database browser以及sqlmap,但用途大不相同,前者是個圖形化工具,主要是用來瀏覽、編輯SQLite資料庫檔案,而sqlmap則是一個威名遠播的sql injection偵測工具,今天就來體驗看看這兩套工具。

工具介紹 - SQLite database browser

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
https://ithelp.ithome.com.tw/upload/images/20211005/20140317fZRDaJ7Ac7.png

/tmp將剛複製的.db檔開啟
https://ithelp.ithome.com.tw/upload/images/20211005/20140317jHIsbodSJW.png

不只可以看到資料庫的表結構、資料內容,甚至連一般SQL語法也能執行
https://ithelp.ithome.com.tw/upload/images/20211005/20140317hFdQpKMfGC.png

另外也可以自行建立新的資料庫、編輯新表,而產出的檔案當然也符合SQLite可跨平台操作的特性。

工具介紹 - sqlmap

sqlmap之所以威名赫赫的原因是因為這工具所針對的問題SQL injection也是相當經典,現代網頁後端框架基本上都會有防護的方法,所以也不用太過於擔心,這邊我們就直接來體驗一下工具吧。

首先得先準備一個我們已知有注入問題的網頁,不然隨便找一個網頁,先不說違法問題,光是要找到線索就需要相當的經驗累積,所以這邊我們用Day2所準備的靶機其中的DVWA頁面來展示注入問題。DVWA全稱Damn Vulnerable Web Application該死的奧網頁,因為是用來滲透練習用的,所以也準備了有SQL injection的頁面

用瀏覽器打開DVWA頁面,可以看到其登入畫面還有帳密

http://192.168.1.86/dvwa

https://ithelp.ithome.com.tw/upload/images/20211005/20140317Xa1wFbEsSK.png

登入後可以看到左側都是展示漏洞的頁面,其中就包含了SQL injection,但這邊先到DVWA Security這頁將安全度調至最低,方便後續測試
https://ithelp.ithome.com.tw/upload/images/20211005/201403179gcVUlrXKa.png

接下來就直接點SQL injection前往示範頁面,這邊每個漏洞都依安全度分不同的實作方式,所以有興趣可以點右下的view source可以看到當前的程式碼,或是繼續點擊compare可以看到三個不同等級的實作方法的差異
https://ithelp.ithome.com.tw/upload/images/20211005/20140317Al9K7ePkQE.png

為了不浪費時間,所以這邊我們先偷看它程式碼實作,了解到其實就是把輸入的值以變數$id方式串入sql語法

   $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";

先隨便填個數字觀察一下資料內容 ,填入id為1可以得到某user的資訊
https://ithelp.ithome.com.tw/upload/images/20211005/20140317HpRdLBeH6d.png

接下來我們要輸入一些非數字的,看有沒有什麼方式能繞開條件來取得資料,這邊就不賣關子,我們直接輸入1' or '1' = '1
https://ithelp.ithome.com.tw/upload/images/20211005/20140317uChmfTOqkP.png

明明輸入了不合法的字串當作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並儲存成檔案,檔名隨意
https://ithelp.ithome.com.tw/upload/images/20211005/20140317PK39UkLHJg.png

接著利用sqlmap來使用這個檔案來進行掃描,這檔案data有著urlCookie等工具需要的資訊

sqlmap -r data --dump

上面參數的涵義可以透過sqlmap -h或是sqlmap -hh來了解

-r REQUESTFILE      Load HTTP request from a file
--dump              Dump DBMS database table entries

這樣一來sqlmap就會從指定檔案進行掃描,類似前面我們手工的注入手段,再加上其他模糊猜測,最後將暴露出的資訊顯示出來
https://ithelp.ithome.com.tw/upload/images/20211006/20140317E6B5TYT87P.png

結語

今天介紹的兩個工具都很實用,SQLite database browser因為圖形化的關係,使用上非常直覺,而sqlmap的使用方式其實還有相當多值得探索的部分,這部分就留待之後另開篇章來探索吧。


上一篇
Day 19 網頁分析 - Web Application Analysis (Wapiti)
下一篇
Day 21 Password Attacks - 密碼攻擊(hash-identifier, john)
系列文
Kali Linux 工具筆記31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言