SQL隱碼攻擊漏洞測試工具比較

y0umer發表於2012-02-02


 

Sql注入測試一定要使用工具。原因一:工作效率;原因二:人工很難構造出覆蓋面廣的盲注入的sql語句。

例如當一個查詢的where字句包含了多個引數,or and的關係比較多時,簡單的or 1=1, and 1=2是很難發現注入點的。

Sql注入的工具很多(Top 15 free SQLInjection Scanners),我最近使用的有Sqlmap,SqliX,JbroFuzz,SqlPower Injector, 網站啄木鳥.現將他們的使用方法和比較結果貼於此:

——————————————————————————————-

Sqlmap

Sqlmap是python開發的SQL隱碼攻擊漏洞測試工具。沒有UI介面的命令列工具。雖說是命令列工具,可他的使用比網站啄木鳥,Sql Powerinjector 容易多了,並且有很詳細的幫助文件。

從下面2個地址獲得相關程式包:

Python下載,推薦下載2.7版本,相容性好:http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi

 

SqlMap根目錄下Sqlmap.py是主程式,sqlmap.conf是配置檔案。Sqlmap的使用有2種方式:

1 在cmd中直接輸入命令列。

2 在sqlmap.conf中配置命令列引數,然後在cmd中用sqlmap.py -c sqlmap.conf 發起攻擊。

我比較喜歡第二種方式。這裡僅列出sqlmap.conf種幾個命令。更詳細的命令描述參考doc目錄下的readme.pdf,

#Target URL.

#Example: http://192.168.1.121/sqlmap/mysql/get_int.php?id=1&cat=2

url =

指定攻擊的url地址。

#Data string to be sent through POST.

data=

如果是POST命令的話,請在data欄位填上POST的資料。

#HTTP Cookie header.

cookie=

如果網站需要登入的話,請在cookie欄位填上cookie資料。cookie資料可以用wireshark抓包得到。

#Alert with audio beep when sql injection found.

beep= True

建議把beep設為True,當發現注入點時Sqlmap會嘀的一聲,很提神的聲音。

相關命令設定好以後,在命令列中輸入sqlmap.py -c sqlmap.conf,就可以開始Sql注入測試啦。發現注入點(嘀的一聲響)後,就可以通過設定其他命令來嘗試獲取更多的後臺資料庫資訊。

Sqlmap功能非常多,獲取資料使用者名稱/密碼/角色,資料庫表,查詢資料庫表內容,上傳/下載檔案檔案,修改登錄檔deng。當然有些功能是在當前資料庫使用者用一定許可權的前提下才能完成。

 ——————————————————————————————-

SqliX

SqliX是由OWASP用Perl開發的SQL隱碼攻擊漏洞測試工具。跟Sqlmap一樣是命令列驅動,也和sqlmap一樣的好用。沒有詳細的幫助文件,專案主頁上有簡單的安裝和使用介紹。

Perl下載地址:http://www.activestate.com/activeperl/downloads

 

SqliX依賴2個包:首先使用下面的命令安裝依賴包:

    perl -MCPAN -e `install WWW::CheckSite`

    perl -MCPAN -e `install Tie::CharArray`

如果CheckSite安裝失敗,出現如下錯誤資訊:

 maketest had returned bad status, won`t install without force

使用下面的命令強制安裝:

 perl-MCPAN -e “CPAN::Shell->force(qw(install WWW::CheckSite));”

 

 安裝成功後就可以在cmd中開始SqliX的注入測試了。SqliX的命令相對較少:

 -url給定測試的URL地址

 –post_content如果是POST命令的話,請加上POST資料

 -crawl這是一個唯一Sqlmap沒有的功能。他指定一個url的根目錄,爬蟲原理爬出所有的連結地址,然後對每個地址進行注入測試。

 -v顯示資訊級別,值越大,顯示的資訊越多。

 -all

 -method_taggy

 -method_error

 -method_blind

 -method_blind_integer

 -method_blind_string

 -method_blind_statement

 -method_blind_comment

以上 這些是根據不同的注入原理得出的不同的注入方法,一般選擇-all或者-method_blind,應用所有的注入方法。

 例如:sqlix.pl -urlhttp://target1.edu/extensioninfonet/article.asp?id=3602 -method_blind-exploit -v=2

幾秒鐘後,顯示資訊如下:

 AnalysingURL [http://target1.edu/extensioninfonet/article.asp?id=3602]

 http://target1.edu/extensioninfonet/article.asp?id=3602

        [+] working on id

                [+] Method: SQL Blind Integer Injection

                        [FOUND] Blind SQL Injection: Integer based

                        [INFO] Current function:

                        [INFO] length: 0

 

                        [FOUND] SQL Blind Integer Injection

 

RESULTS:

Thevariable [id] from [http://extension.missouri.edu/extensioninfonet/article.asp?id=3602]is vulnerable to SQL Injection [Integer without quote – ].

“is vulnerable” 表明這個url是有注入漏洞的。

SqliX發現漏洞的能力確實不錯,不比Sqlmap差。而漏洞利用的能力遠不如Sqlmap,他只能執行一些函式和sql語句。事實上在不知道後臺資料庫表名的情況下很難執行sql語句。SqliX這樣設計是可以理解的,他的目的只是為了進行Sql注入漏洞測試發現漏洞,才不希望被用來幹壞事呢。

 ——————————————————————————————-

JbroFuzz,是OWASP開發Web應用程式模糊(Fuzz)測試工具.有UI介面,但真的不好用,很多常用操作都沒有快捷鍵的支援。他提供Sql注入相關的有效載荷(Payload,這個詞真沒有合適的中文翻譯)。直接看看Sql注入的payload吧:

` or1=1–

and12=21

or`7659`=`7659

unionall select @@version–

unionall select 1,2,3

1 anduser_name() = `dbo`

等等payload有很多。JBroFuzz用這些預定義的payload去替換http請求中的引數值(可以是請求的任意欄位),儲存http返回資料,並對返回資料做統計分析,形成統計圖表,通過人工分析統計圖表來判斷是否有注入漏洞。很費勁,建議不要用JbroFuzz進行Sql注入漏洞測試。他的價值在於很多的payload,基本上每個payload對應一種注入方法,可以作為Sql注入學習和手工測試的參考。

除了Sql注入,JRoFuzz還可以進行其他多種Web應用程式相關的測試例如:XSS,LDAP注入,XML注入等。

 ——————————————————————————————-

SqlPowerInjector:

 悲慘,真不好用。沒有其他評價。

——————————————————————————————-

網站啄木鳥

能發現簡單的注入漏洞。wireshark抓包可見,他構造的sql注入payload僅僅是簡單的”and 1=1–“,”and1>1–“等。 在發現漏洞後啄木鳥猜表面的能力也很弱,只是依靠查詢MS-sql和Oracle的user table來獲取使用者表名。

 

實際測試結果

以下是8個漏洞url,用於測試Sqlmap,Sqlix,JBroFuzz,網站啄木鳥。即使我人工分析JBroFuzz統計資料,沒有發現注入漏洞的線索。具體結果看下錶:

Sqlmap 啄木鳥 SqliX  http://www.2cto.com /news.php?id=92

Sqlmap 啄木鳥 SqliX  http://www.2cto.com /article.asp?ID=102&title=Fast%20food%20marketing%20for%20children%20is%20on%20the%20rise

Sqlmap 啄木鳥 SqliX  http://www.2cto.com /article.asp?id=1969

Sqlmap No    SqliX http://extension.Target.edu/extensioninfonet/article.asp?id=3602

Sqlmap No    SqliX  http://school.Target.com/tools/nutrition-education/view.php?id=23945657

Sqlmap No    SqliX  http://www.2cto.com /ebookprint.php?id=245

Sqlmap No    SqliX  http://www.2cto.com/******-nutrition-facts.php?id=21019

Sqlmap No    SqliX  http://www.2cto.com /******/artinfo.php?id=6534

 

最後結果:Sqlmap是個很好的Sql注入測試工具。

見笑了,給自己的總結,供大家參考。

 


相關文章