sqlmap 一個開源的滲透測試工具(自動化的SQL注入工具)
可以自動檢測和利用SQL注入漏洞并接管資料庫伺服器。
它配備了強大的檢測引擎,針對終極滲透測試人員的衆多特性,以及從資料庫指紋識别,從資料庫擷取資料,到通路底層檔案系統以及在作業系統上通過out-帶外連接配接。
特點
主要功能是掃描,發現并利用給定的URL的SQL注入漏洞
- 完全支援
資料庫管理系統。MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase,SAP MaxDB,HSQLDB和Informix
- 完全支援六種SQL注入技術:基于布爾的盲,基于時間的盲,基于錯誤,基于UNION查詢,堆棧查詢和帶外。
- 支援直接連接配接資料庫而不通過SQL注入,通過提供DBMS憑證,IP位址,端口和資料庫名稱。
- 支援枚舉使用者,密碼哈希,權限,角色,資料庫,表和列。
- 自動識别密碼哈希格式,并支援使用基于字典的攻擊對其進行破解。
- 支援完全轉儲資料庫表,一系列條目或特定列根據使用者的選擇。使用者也可以選擇僅從每列的條目轉儲一系列字元。
- 支援搜尋特定的資料庫名稱 (跨所有資料庫的特定表或所有資料庫表的特定列)。例如,這對于識别包含自定義應用程式憑證的表格非常有用,其中相關列的名稱包含名稱和傳遞等字元串。
- 當資料庫軟體是MySQL,PostgreSQL或Microsoft SQL Server時,支援從資料庫伺服器底層檔案系統下載下傳和上載任何檔案。
- 當資料庫軟體是MySQL,PostgreSQL或Microsoft SQL Server時,支援執行任意指令并檢索資料庫伺服器底層作業系統上的标準輸出。
-
支援在攻擊者機器和資料庫伺服器底層作業系統之間建立一個帶外狀态TCP連接配接。
該通道可以是
,可以根據使用者的選擇進行選擇。互動式指令提示符,Meterpreter會話或圖形使用者界面(VNC)會話
通過的
Metasploit
指令支援資料庫程序 使用者權限更新
Meterpreter
。
getsystem
大緻流程如下:
1.根據url 判斷資料庫
2.根據資料庫 判斷資料庫名(根據權限限制 ,可省略)
3.根據資料庫名 判斷資料表
4.根據資料表 判斷資料表鍵值
5.根據資料表鍵值 猜出資料内容 轉存資料表鍵值
6.按加密規則,反向 破解密碼
當然如果此網站 确定存在注入漏洞 ,而且你也知道資料庫表名,鍵值
直接最後一步就可以了, 或者使用其他工具直接破解
-
單項的後接具體值,代表指定
--
為未指定,待猜測,或待破解
實戰流程(之前得到的網站位址):
啟動 SQLMAP,并對給定的URL開始判斷并 檢索 目前資料庫和目前使用者
sqlmap -u "http://localhost/?id=1"
--dbs –current-db –current-user
選項簡介 :
1、–current-user:擷取目前使用者
2、–current-db : 擷取目前資料庫
3、-u : 指定目标URL
4、-b : 擷取DBMS(資料庫管理系統) banner
附:
5、–cookie : 設定我們的cookie值“将
security
安全等級從high設定為low”
可加 –cookie = "MUID=3F169DAF1EFE6D6302CA97681AFE6BE2”
6、–dbs : 枚舉DBMS中的資料庫
- –dbms 資料庫類型 : 可指定資料庫類型
Kali Linux工具集簡介 -sqlmap
鍵入
y
, 确定跳過 其他 DBMS 測試(已經确定是
access資料庫
下)
對于其餘的測試,是否要包含所有針對“Microsoft Access”擴充提供級别(1)和風險(1)值的測試?
未确定時,鍵入
y
id
存在漏洞 , 問你是否繼續測試其他漏洞?
為了節省時間 , 鍵入
n
得到結果為:
得到作業系統web伺服器 為
Windows 2003 or XP
資料庫為
IIS 6.0
Access
然而 沒有 使用者名 和 庫名
猜解 資料庫表 (以目前的 權限)
sqlmap -u "http://localhost/?id=1"
–- tables
會出現一個錯誤
不能猜解資料庫表名,問 是否使用已存在常用的 的
公共表名
猜測
鍵入 ‘y’
問你要選擇哪個檔案?(這就需要運氣了,判斷裡面是否有所比對的)
直接 預設,鍵入回車
後會要求你鍵入 共同運作的比對規則的 線程數 ,自己看情況考慮選取(1~10)
在其後的運作中,
會列出比對到的表 , 以上隻展示 了一個 admin
, 幾乎就差不多了….
猜解 資料表的鍵值 (以目前的 權限)
運作
sqlmap -u "http://localhost/?id=1"
–T admin --columns
選項簡介
1、 -T 表名 : 要枚舉的DBMS資料庫表
2、–columns : 枚舉DBMS資料庫表中的所有列
得到
出現錯誤 , 仍無法得到表中鍵值
問是否需要
公共鍵值
猜測
鍵入
後面與之前相同仍需要 選擇檔案 ,選擇線程數目 .
y
已經猜測出大概…
得到
sqlmap -u "http://localhost/?id=1"
–T admin -C loginname,username,password --dump
選項簡介
1、-T 表名: 要枚舉的DBMS資料表
2、-C 鍵值名: 要枚舉的DBMS資料表中的列
3、–dump : 轉儲DBMS資料表項
若需要解密的會提醒,後面會存到檔案裡,終端也會顯示……