大量的現代企業采用web應用程序與其客戶無縫地連接到一起,但由于不正確的編碼,造成了許多安全問題。web應用程序中的漏洞可使黑客獲取對敏感信息(如個人數據、登錄信息等)的直接訪問。
Web應用程序準許訪問者提交數據,并可通過互聯網從數據庫中檢索數據。而數據庫是多數Web應用程序的心臟。數據庫維持著Web應用程序將特定內容交給訪問者的數據,Web應用程序在將信息交給客戶、供應商時,也從數據庫取得數據。
SQL注入攻擊是最為常見的Web應用程序攻擊技術,它會試圖繞過SQL命令。在用戶輸入沒有“凈化”時,如果執行這種輸入便會表現出一種SQL注入漏洞。
檢查SQL注入漏洞主要涉及到兩方面,一是審計用戶的Web應用程序,二是通過使用自動化的SQL注入掃描器執行審記的最佳方法。在此,筆者羅列了一些對Web應用程序開發人員和專業的安全審計人員有價值的SQL注入掃描程序。
一、SQLIer
SQLIer可以找到網站上一個有SQL注入漏洞的URL,并根據有關信息來生成利用SQL注入漏洞,但它不要求用戶的交互。通過這種方法,它可以生成一個UNION SELECT查詢,進而可以強力攻擊數據庫口令。這個程序在利用漏洞時并不使用引號,這意味著它可適應多種網站。
SQLIer通過“true/false”SQL注入漏洞強力口令。借助于“true/false” SQL注入漏洞強力口令,用戶是無法從數據庫查詢數據的,只能查詢一個可返回“true”、“false”值的語句。
據統計,一個八個字符的口令(包括十進制ASCII代碼的任何字符)僅需要大約1分鐘即可破解。
其使用語法如下,sqlier [選項] [URL]
其選項如下:
-c?:[主機]?清除主機的漏洞利用信息 -s?:[秒]在網頁請求之間等待的秒數 -u:[用戶名]從數據庫中強力攻擊的用戶名,用逗號隔開。 -w:[選項]將[選項]交由wget 此外,此程序還支持猜測字段名,有如下幾種選擇: --table-names?[表格名稱]:可進行猜測的表格名稱,用逗號隔開。 --user-fields[用戶字段]:可進行猜測的用戶名字段名稱,用逗號隔開。 --pass-fields?[口令字段]:可進行猜測的口令字段名稱,用逗號隔開。
下面說一下其基本用法:
例如,假設在下面的URL中有一個SQL注入漏洞:
example.com/sqlihole.php?id=1
我們運行下面這個命令:
sqlier?-s?10?example.com/sqlihole.php?id=1
從數據庫中得到足夠的信息,以利用其口令,其中的數字“10”表示要在每次查詢之間等待10秒鐘。
如果表格、用戶名字段、口令字段名猜測得正確,那么漏洞利用程序會把用戶名交付查詢,準備從數據庫中強力攻擊口令。
sqlier?-s?10?example.com?-u?BCable,administrator,root,user4
然而,如果內建的字段/表格名稱沒有猜中正確的字段名,用戶就可以執行:
sqlier?-s?10?example.com?--table-names?[table_names]?--user-fields?[user_fields]?--pass-fields?[pass_fields]
除非知道了正確的表格名、用戶名字段、口令字段名,SQLIer就無法從數據庫中強力攻擊口令。
二、SQLMap:
這是一個自動的“盲目”SQL注入工具,它用UNION開發,它能執行一個動態的數據庫管理系統指紋識別,可以完整地窮舉遠程數據庫。其目標是實施一個完整的功能性數據庫管理系統工具,它能夠利用Web應用程序程序設置的全部缺陷,這些安全缺陷可以導致SQL注入漏洞。
在SQLMap檢測到目標系統上的一個或多個SQL注入漏洞之后,用戶就可以從多種選項中選擇,進而執行全面的后端數據庫管理系統指紋識別,檢索數據庫管理系統會話用戶和數據庫,窮舉用戶、口令哈希、數據庫,運行其自身的SQL SELECT語句,讀取文件系統上的特定文件等。
此軟件完全支持UNION、?Oracle、PostgreSQL、Microsoft SQL Server等后端數據庫管理系統。此外,它還識別微軟的Access數據庫,以及DB2、Informix、?Sybase?、 Interbase等。
其使用方法如下:
sqlmap.py?[選項]?{-u?<url>?|?-g?<google>?|?-c?} 其中,-u?URL指明目標URL -g?google?dork?將google?dork結果處理為目標url</google></url>
三、SQLID:
此工具是一個SQL注入漏洞挖掘器,是一個命令行實用程序,它能夠查找SQL注入漏洞和網站中的常見錯誤。它可以執行以下幾種操作:查找網頁中的SQL注入漏洞,測試提交的表單,查找SQL注入漏洞的可能性。它還支持HTTP、HTTPS、基本身份驗證等。
其用法如下:
Sqid.rb [選項]
其選項有以下幾種:
-m,--mode?MODE,它指明以某種模式進行操作,其中MODE有以下幾種情況:g,google:以google搜索模式操作;u,url檢查這個url;p,page,它主要檢查單一的網頁;c,crawl,檢查站點。
其中,google搜索模式選項有以下幾種情況,-q,–quary 查詢,QUERY執行google搜索;-s,–start START,對所需要的首個結果的零索引;-r,–results RESULTS,在此指明所需要的結果數量,默認值為20。
四、SQL Power Injector
SQL Power Injector可幫助滲透測試人員找到并利用網頁上的漏洞。目前,它支持SQL Server、Oracle、MYSQL、Sybase/Adaptive Sever和DB2等數據庫,但在使用inline注入時,還可借助現有的數據庫管理系統來使用此軟件。
其自動化的工作模式以兩種方式進行,一是比較期望的結果,二是根據時間延遲。
其工作狀態如圖:
五、SQLNinja:
Sqlninja可以利用以SQL Server為后端數據支持的應用程序的漏洞,其主要目標是提供對有漏洞的數據庫服務器的遠程訪問。Sqlninja的UNION受到配置文件的控制,它告訴了Sqlninja攻擊的目標和方式,還有一些命令行選項。比如,有如下一些命令選項:
-m,其攻擊模式有測試(test)、指紋識別(fingerprint)、強力攻擊(bruteforce)等;
其它的命令選項,-v : 指明進行詳細輸出;-f:指明一個使用的配置文件。-w指明以強力攻擊模式使用的單詞列表。
如圖是運行過程界面:
【相關推薦】
1.?特別推薦:UNION
2.?UNION
3.UNION
4.?UNION