11月8日举行的Fedora董事会议上讨论了是否在发行版中加入SQL注入检查工具SQLninja。讨论的最终结果是否决,主要理由是担心Fedora发行商面临的法律风险会增加,Fedora认为它除了非法用途外,本身没什么用。
最新的Fedora发行版为Fedora 14 “Laughlin”:整体大于部分之和
SQLninja到底是什么
数据库服务器在企业的网络应用中占据着重要地位,因此黑客们从来都没有停止过SQL注入式攻击,其花样不断翻新,因此对付这种威胁的方法也需要不断更新。在此,我们要看一款漏洞测试工具SQLninja。#p#
SQLninja功能与特性
SQLninja的目的是利用Web应用程序中的SQL注入式漏洞,它依靠微软的SQL Server作为后端支持。其主要的目标是在存在着漏洞的数据库服务器上提供一个远程的外壳,甚至在一个有着严格的防范措施的环境中也能如此。在一个SQL注入式漏洞被发现以后,企业的管理员特别是渗透攻击的测试人员应当使用它,它能自动地接管数据库服务器。
现在市场上有许多其它的SQL注入式漏洞工具,但SQLninja与其它工具不同,它无需抽取数据,而着重于在远程数据库服务器上获得一个交互式的外壳,并将它用作目标网络中的一个立足点。
这个软件用Perl编写,符合GPLv2标准。目前它已经在Linux、FreeBSD、Mac OS X等系统上成功地进行了测试。其特性主要有:
可找到远程SQL服务器的标志和特征(版本、用户执行的查询、用户特权、xp_cmdshell的可用性、身份验证模式等)
“sa”口令的强力攻击
如果找到口令后,就将特权提升到“sa”
如果原始的xp_cmdshell被禁用后,就创建一个定制的xp_cmdshell。
使用纯粹的ASCII GET/POST请求来上载netcat.exe程序(以及其它任何可执行的程序),因此并不需要FTP连接。
为了找到目标网络的防火墙所允许的端口,可以实施针对目标SQL 服务器的TCP/UDP端口扫描。
逃避技术,这是为了使注入式代码“模糊”不清,并且混淆/绕过基于签名的IPS和应用层防火墙。
采用“盲目执行”攻击模式,在其它模式失效时,可以用于发布命令并执行诊断。
在SQLninja生成的SQL代码上,执行的是自动化的URL编码,这使得用户可以更精细地控制漏洞利用的字符串。
目前,其最新版本为SQLninja 0.2.2用户可以从以下网址下载这款工具:http://downloads.sourceforge.net/SQLninja/SQLninja-0.2.2.tgz
安装要求
SQLninja是完全用Perl语言编写的,所以你必须安装Perl和以下模块:
NetPacket Net-Pcap Net-DNS Net-RawIP IO-Socket-SSL
如何使用这个工具
SQLninja的行为可以由配置文件(默认情况下即为SQLninja.conf)控制,此文件告诉了SQLninja攻击什么及如何攻击(目标主机、有漏洞的网页、漏洞字符串等); 此外,SQLninja的行为也可以由一些命令行选项控制,这些选项告诉SQLninja执行什么行动。这些命令行选项如下所示:
1. -m <攻击模式> :指明攻击模式。基本而言就是告诉SQLninja执行什么。其可能的值有:test ,fingerprint ,bruteforce ,escalation ,resurrectxp ,upload ,dirshell ,backscan ,revshell ,dnstunnel ,sqlcmd 等。关于这些选项,后文有解释。
2. -v :详细输出内容
3. –f<配置文件>:指定一个要使用的配置文件。如果文件并不存在,系统就会以交互方式创建一个新文件。
4. –p<“sa”口令>:用于在扩增模式中将当前的数据库用户添加到系统管理员组中,并且如果数据库用户并不属于这样一个组的话,就在其它模式中以管理员身份运行查询。这个选项很少使用,因为在找到“sa”口令时,默认情况下,强力模式会将数据库用户添加到系统管理员组中。
5. –w<单词列表>:在强力模式中所使用的单词列表
6. –d<调试模式>:激活调试,以查看动作的原因。其可能的值有:
1:打印注入的每一个SQL命令
2:打印发送到目标的每一个HTTP请求
3:打印来自目标的每一个HTTP响应
all:上述所有选项
下面重点谈谈其攻击模式:
攻击模式
SQLninja当前支持11种攻击模式。所使用的模式可以由其名字来指定。
首先启动它:
SQLninja -m upload
或者通过其快捷方法:
SQLninja -m u
要查看SQLninja可用的模式及其对应的快捷方法,可通过无参数方式启动SQLninja方式而重新找到。
为帮助用户初步领会其不同攻击模式,在此笔者给出使用SQLninja的典型方法:
1、 设置配置文件,并使用测试模式来检查SQL代码是否被正确地注入(test mode)。
2、 用“采指纹”模式识别远程的数据库服务器(fingerpring mode)。
3、 如果需要的话,使用强力模式(bruteforce mode)找到“sa”口令,并提升特权。
4、 如果需要的话,使用重建模式(resurrectxp mode)重新创建xp_cmdshell可扩展过程。
5、 使用upload mode模式加载netcat。
6、 如果能够在某个端口上与数据库服务器联系,就使用显示外壳模式(dirshell mode)直接得到一个外壳。
7、 否则,使用backscan mode,找到一个允许“向外”发送的TCP/UDP端口。
8、 如果上一步成功,就使用revshell mode来获得一个反向外壳。
9、 如果第七步失败,则加载dnstun.exe,并启动dnstunnel mode。
【编辑推荐】