APP下载

基于sqlmap的漏洞注入攻击

2020-02-29黄庆涛霍人楷金翔张华闽江学院计算机与控制工程学院

数码世界 2020年2期
关键词:语句漏洞网络空间

黄庆涛 霍人楷 金翔 张华 闽江学院 计算机与控制工程学院

引言

网络空间既是人的生存环境,也是信息的生存环境,因此网络空间安全是人和信息对网络空间的基本要求。另一方面,网络空间是所有信息系统的集合,而且是复杂的巨系统。人在其中与信息相互作用、相互影响。网络空间安全,为实施国家安全战略,加快网络空间安全高层次人才培养。因此,网络空间安全问题更加综合、更加复杂。所培养的人才为网络空间安全的立法、治理、战略规划和舆情监管服务。

从2013年的棱镜门事件开始,网络空间安全一点点走进我们生活,慢慢的更多因为自身系统安全级别不够而导致酒店入住信息被泄露、Facebook公司的数据遭到外泄曝光、Cclearner清理工具被黑客恶意篡改信息……国家开始重视网络空间安全,并开设相关专业,意在培养这方面的人才,弥补人才缺口。网络空间安全专业的人才培养目标是,培养具有扎实的网络空间安全基础理论和基本技术,系统掌握信息内容安全、网络安全法律、网络安全管理的专业知识,政治思想过硬,较强的中英文沟通和写作能力,有技术,懂法律,会谈判的复合型人才。

1 SQL漏洞及sqlmap的介绍

1.1 SQL注入危害

(1)绕过登录验证:使用万能密码登录网站后台等。

(2)获取敏感数据:获取网站管理员帐号、密码等。

(3)文件系统操作:列目录,读取、写入文件等。

(4)注册表操作:读取、写入、删除注册表等。

(5)执行系统命令:远程执行命令。

1.2 SQL注入的原理

SQL语句是动态页面有时会通过脚本引擎,将用户输入的参数按照预先设定的规则,构造成SQL语句进行数据库操作。攻击原理:通过构建特殊的输入作为参数,传入Web应用程序,改变原有的SQL语句的语义,以执行攻击者想要的操作。如图一,此处通过构造SQL语句的漏洞进行利用,实现用户信息的泄露。

图一

1.3 SQLmap的介绍

SQLmap是一个开放源码的渗透测试工具,它可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限;具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项。它配备了一个强大的探测引擎,为最终渗透测试人员提供很多强大的功能,可以拖库,可以访问底层的文件系统,还可以通过带外连接执行操作系统上的命令。

SQLmap支持五种不同的注入模式:

(1)基于布尔的盲注,即可以根据返回页面判断条件真假的注入;

(2)基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;

(3)基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;

(4)联合查询注入,可以使用union的情况下的注入;

(5)堆查询注入,可以同时执行多条语句的执行时的注入。

2 SQLmap使用参数的详细介绍

本文以SQLmap 1.1.8-8版本为例,对其主要使用参数进行详细的分析和讲解。

用法:sqlmap [选项]

2.1 Options(选项)

- h、-help:显示基本帮助信息并退出

- version:显示程序版本信息并退出

- v VERBOSE:详细级别0-6,默认为1

2.2 Optimization(优化)

这些选项适用于优化SQLmap的性能

- o:打开所有的优化开关

- keep-alive:使用持久HTTP(S)连接

- null-connection:从没有实际的HTTP响应体中检索页面长度

- threads=THREADS:当前HTTP(S)最大请求并发量(默认为1)

2.3 Target(目标)

在这些选项使用时需要提供最少一个确定的目标;

- d DIRECT:直接连接数据库的连接字符串;

- u URL:设置目标URL,例:目标URL为http://192.168.43.1/vv.php,则命令为sqlmap -u http://192.168.43.1/vv.php;

- l LOGFILE:从Burpsuite或者WebScarab代理日志文件中分析目标;

- m BULKFILE:将目标地址保存在文件中,一行为一个URL地址进行批量检测;

- r REQUESTFILE:加载外部请求包,从文件加载HTTP请求,sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等);

2.4 Request(请求)

这些选项是用来指定如何连接到目标URL

- data=DATA:通过POST发送的数据字符串

- cookie-urlencode URL:编码生成的cookie注入

- drop-set-cookie:忽略响应的Set Cookie头信息

- user-agent=AGENT:指定 HTTP User Agent头

- random-agent:使用随机选定的HTTP User Agent头

- referer=REFERER:指定 HTTP Referer头

- headers=HEADERS:换行分开,加入其他的HTTP头

- auth-type=ATYPE HTT:身份验证类型(基本,摘要或NTLM)(Basic, Digest or NTLM)

- proxy=PROXY:使用HTTP代理连接到目标URL

- ignore-proxy:忽略系统默认的HTTP代理

- delay=DELAY:在每个HTTP请求之间的延迟时间,单位为秒

- timeout=TIMEOUT:等待连接超时的时间(默认为30秒)

- retries=RETRIES:连接超时后重新连接的时间(默认3)

- scope=SCOPE:从所提供的代理日志中过滤器目标的正则表达式

- safe-url=SAFURL:在测试过程中经常访问的url地址

- safe-freq=SAFREQ:两次访问之间测试请求,给出安全的URL

2.5 Injection(注入)

这些选项用于指定测试哪些参数并提供自定义的注入payloads和可选篡改脚本

- p TESTPARAMETER:可测试的参数

- dbms=DBMS:强制后端的DBMS为此值

- os=OS:强制后端的DBMS操作系统为这个值

- prefix=PREFIX:注入payload字符串前缀

- suffix=SUFFIX:注入payload字符串后缀

- tamper=TAMPER:使用给定的脚本(S)篡改注入数据

- no-cast:关闭有效载荷铸造机制

- no-escape:关闭字符串逃逸机制

2.6 Enumeration(枚举)

这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据以及运行自己的SQL语句

- D DB:指定要进行枚举的数据库名

- T TBL:指定要进行枚举的数据库表

- C COL:指定要进行枚举的数据库列

- U USER:指定要进行枚举的数据库用户

- dump:转储数据库管理系统的数据库中的表项

- dump-all:转储所有的DBMS数据库表中的条目

- sql-shell:执行SQL命令

- b,- banner:检索数据库管理系统的标识

2.7 Detection(检测)

- level=LEVEL:执行测试的等级(1-5,默认为1)

- risk=RISK:执行测试的风险(0-3,默认为1)

3 仿真实验

利用phpStudy软件搭建存有SQL漏洞的DVWA网站,并使用Kali中的SQLmap工具进行攻击,获取数据库的信息。

3.1 前期准备

因DVWA需要登录,此处应选择的是POST方法注入,即需要先获取登录的cookie信息;我们这里通过万能密码进行登录。

(1)设置Brupsuite拦截报文的工具以及浏览器的代理;

(2)拦截POST请求内容,并另存为url.txt并将其存放在/etc目录下;如图二。

3.2 利用SQLmap进一步获取信息

(1)判断注入点和数据库类型:sqlmap -r /etc/url;此处判断出了服务器的系统版本为Windows系统、PHP的版本为5.3.29、Apache的版本为2.4.18和MySQL数据库的版本是大于等于5.5,并将这些信息保存在了目录/root/.sqlmap/output中,若是使用Windows系统则保存在目录C:UsersAdministrator.sqlmapoutput中,如图三;这时我们了解到了更多有关网站的信息,对于之后获取数据库信息更为有利。

图二

图三

(3)判断数据库名:sqlmap -r /etc/url --dbs;通过使用SQLmap工具,我们得知了与MySQL数据库服务器一共管理系统的数据库有7个,如图四;

(4)通过上一步知道MySQL中管理的数据库名,找到所需要的数据库名:dvwa;接下来,判断数据库中的表名:sqlmap -r /etc/url -D dvwa tables,如图五;

图四

图五

(5)对获取到的表进行分析后,从中找到了两组列名,判断表名中列名:sqlmap -r /etc/url -D dvwa -T users column,如图六;在users的列名中找到了user和password的信息,自此收集信息工作结束。

3.3 利用SQLmap进行注入

通过之前收集的信息,我们已经确定了用户和密码的存在SQL数据库中的位置,此时我们可以通过SQLmap进行注入攻击,从而获取用户名以及密码的信息。

(1)获取user字段信息:sqlmap -r /etc/url -D dvwa -T users -C user dump,如图七;通过SQLmap工具进行自动SQL注入可以直接获得user用户名的信息。

图六

图七

(2)获取password字段信息:sqlmap -r /etc/url -D dvwa-T users -C password dump,如图八;与获取用户名的方式相同我们也可以获取到密码password;此处有两个值:括号内的为密码、括号外的为密码的MD5加密后的值。

图八

至此,我们已经获取了该网站的所有用户名和密码的相关信息,并且这些信息都会保存在目录/root/.sqlmap/output下。

4 结语

通过上述实验,进一步证明了SQL漏洞的对我们生活的危害性以及SQLmap的强大之处,当然对于SQL漏洞也不是无法避免的,只要在产品推出前,由安全渗透从业人员使用相关方法对其进行渗透测试,如SQLmap的检查;相信绝大多数的SQL漏洞都是可以避免的。

除了安全人员外,对人们提高个人网络空间安全意识起到警示作用,让学生们提高相关知识的学习兴趣,培养学生的相关专业知识和技术,填补网络空间安全的相关领域的空白。

猜你喜欢

语句漏洞网络空间
漏洞
网络空间攻防对联合作战体系支援度评估指标体系构建
基于selenium的SQL注入漏洞检测方法
《网络空间安全》订阅单
《网络空间安全》订阅单
侦探推理游戏(二)
《网络空间安全》订阅单
漏洞在哪儿
我喜欢
冠词缺失与中介语句法损伤研究