大量的现代企业采用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注入漏洞:
http://example.com/sqlihole.php?id=1
我们运行下面这个命令:
sqlier -s 10 http://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就无法从数据库中强力攻击口令。如图1:
![]() |
图1 |
二、SQLMap:http://www.3800hk.com/Soft/zhly/16504.html
这是一个自动的“盲目”SQL注入工具,它用python开发,它能执行一个动态的数据库管理系统指纹识别,可以完整地穷举远程数据库。其目标是实施一个完整的功能性数据库管理系统工具,它能够利用Web应用程序程序设置的全部缺陷,这些安全缺陷可以导致SQL注入漏洞。
在 SQLMap检测到目标系统上的一个或多个SQL注入漏洞之后,用户就可以从多种选项中选择,进而执行全面的后端数据库管理系统指纹识别,检索数据库管理 系统会话用户和数据库,穷举用户、口令哈希、数据库,运行其自身的SQL Select语句,读取文件系统上的特定文件等。
此软件完全支持MySQL、 oracle、PostgreSQL、Microsoft SQL Server等后端数据库管理系统。此外,它还识别微软的Access数据库,以及DB2、Informix、 Sybase 、 Interbase等。
其使用方法如下:
sqlmap.py [选项] {-u | -g | -c <配置文件>}
其中,-u URL指明目标URL
-g google dork 将google dork结果处理为目标url
三、SQID:http://sqid.rubyforge.org/
此工具是一个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注入时,还可借助现有的数据库管理系统来使用此软件。
其自动化的工作模式以两种方式进行,一是比较期望的结果,二是根据时间延迟。
其工作状态如图2:
![]() |
图2 |
五、SQLNinja:http://sqlninja.sourceforge.net/
Sqlninja 可以利用以SQL Server为后端数据支持的应用程序的漏洞,其主要目标是提供对有漏洞的数据库服务器的远程访问。Sqlninja的行为受到配置文件的控制,它告诉了 Sqlninja攻击的目标和方式,还有一些命令行选项。比如,有如下一些命令选项:
-m<攻击模式>,其攻击模式有测试(test)、指纹识别(fingerprint)、强力攻击(bruteforce)等;
其它的命令选项,-v : 指明进行详细输出;-f<配置文件>:指明一个使用的配置文件。-w<单词列表>指明以强力攻击模式使用的单词列表。
如图3是运行过程界面:
![]() |
图3 |
本文转sinojelly51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/338195,如需转载请自行联系原作者