sql fuzz
概述
'.sql fuzz.'是一种针对SQL注入的攻击方式,目的是通过输入特定的语句或符号,让SQL查询语句产生无法预测或异常的行为,从而使得攻击者可以透过错误信息或布尔盲注等方式获取目标数据库中的数据信息或接管数据库。
常见的'.sql fuzz.'方式
根据攻击手法的不同,'.sql fuzz.'可以分为以下三种:语句型注入、布尔盲注和时间盲注。
语句型注入:针对SQL语句中出现的字符串和数字类型进行注入。通过构造特殊的输入内容使得原本正常的SQL查询语句变成非法查询,例如输入'or 1=1 -- '就可以绕过原本的验证,达到获取信息的目的。
布尔盲注:利用SQL查询的返回结果只有true和false两种可能,输入的语句如果能导致查询结果发生变化,则可以根据此特点,通过通过不停地尝试不同的条件判断语句,从而获得SQL查询的答案信息。
时间盲注:与布尔盲注类似,但是攻击者需要结合时间特性进行判断。常见的方法是通过Sleep等延迟语句,将查询的结果进行延迟,并观察查询的延迟是否发生异常变化来进行判断。
防范措施
1. 输入字段校验:对于输入字段进行严格的校验,只允许符合规范的内容进行输入,例如对于数字类型字段只允许输入数字,对于字符串类型的输入字段进行转义或过滤。
2. 引入安全框架:引入现有的安全框架,例如OWASP Top 10等安全规范,可以通过此类框架的指导加强开发人员的安全意识,以及加强代码安全性。
3. 安全代码编写:对查询条件的判断等操作需要进行严格的规范,代码尽量简洁明了,避免不必要的字符串拼接或者动态SQL拼接。
4. 权限控制:避免将所有的查询权限给予一个通用账号,应该根据业务特性,将查询权限进行细分和分配。
5. 安全测试:在代码开发和发布的过程中,要进行彻底的安全测试。针对各种异常情况进行测试,例如大小写不同、中文、特殊符号等进行测试。
利用'.sql fuzz.'的危害
1. 数据泄露:通过SQL注入攻击可以获取到一些敏感的信息,例如用户名、密码等,甚至可以访问到完整的数据库信息。
2. 数据篡改:攻击者可以对数据进行篡改,进行自己的意图,可能会影响到业务的正常运行。
3. 服务器劫持:通过SQL注入攻击,攻击者可以利用漏洞接管服务器。
实例分析
2017年2月,全球数十万台被黑的MySQL数据库,就是既利用了'.sql fuzz.'的注入攻击手法,又借助漏洞进行的大规模爆破及扫描等方式。攻击者通过访问受害者网站,随后在数据字段中注入恶意代码。这些代码可以被利用于操作、竞拍、账号信息等操作,进而对大量数据进行操控,造成严重的数据损失。
如何检测到此类的攻击呢?首先我们需要发现恶意代码的存在,然后分析代码,找到代码的来源。常见的是通过访问带有恶意代码的URL,从Web服务器的日志中查看,许多文件被上传到了受影响服务器的网站中。通过从日志里面分析SQL注入语句,找到利用的漏洞。
结论
SQL注入攻击始终是网络安全领域的重要威胁之一,'.sql fuzz.'作为注入攻击的一种手法,其危害性也不可小觑。针对这种攻击手法,我们需要从安全规范、代码安全性以及安全测试等方面进行加强。只有综合对安全问题进行多角度的加强,才能更好的保护我们的网络环境安全。