SQL 注入,永不过时的黑客技术
SQL 注入,永不过时的黑客技术
TalkTalk的信息泄漏事件导致约15万人的敏感信息被暴露,涉嫌造成这一事件的其中一名黑客使用的并不是很新的技术。事实上,该技术的「年纪」比这名15岁黑客还要大两岁。
[译注:TalkTalk是英国电话和宽带供应商,这件信息安全事故发生在2015年10月份,当时这件事情还挺轰动的,上了新闻头条,其中一名黑客年仅15岁。]
这项技术就是大名鼎鼎的SQL注入,所谓SQL注入就是黑客在网站的提交表单数据中输入恶意命令从而获取数据的方法。它曾经被用来窃取世界卫生组织员工的信息,偷过华尔街日报数据,甚至还攻击过美国联邦政府机构。
“这是最简单的黑客技术”,w0rm 告诉 Motherboard[译者注:Motherboard就是这篇文章原文所在网站],他是一名匿名黑客,声称对华尔街日报的攻击负责。整个攻击过程只用了几个小时。
但是,正因为它是比较简单的技术,同时经常被用来从公司或者政府机构窃取数字信息,所以SQL注入攻击应该相对来说比较容易防范才对。
但为何到了2015年,SQL注入攻击仍然能导致最大规模的信息泄漏事件呢?
有迹可循的最早SQL注入攻击的记录大概是Jeff Forristal在黑客杂志Phrack上发表的文章。Forristal当时是rain.forest.puppy的掌舵人[译者注:rain.forest.puppy是一个安全咨询组织,或者说,是个黑客团队?:)],他目前在网络安全公司Bluebox,负责移动安全方面的CTO。
“微软声称,你看到的都不是问题,所以不用费心去处理它”
[译者注:这是有人给微软报告SQL server这个漏洞时,微软的回复]
SQL, 全称为结构化查询语言,是一种用来管理数据库的编程语言。本质上说,他就是被网站用来从数据库中提取一些数据来处理或者展示给用户的。
但是Forristal发现,当输入特定的命令时,会导致服务器泄漏信息。“用户可能捎带一些自己的SQL语句”,他写道。
在Phrack的1998年12月份期刊上,Forristal发表了微软的SQL server的一系列SQL注入的问题。当Forristal的同事们向微软反馈此问题时,“他们的回答是:好了,别闹了”,他写道,“他们说,你看到的都不是问题,所依别费心去处理了”
SQL注入发展到今天,已经过去了15年,在OWASP组织每三年发表一次的OWASP的Top 10问题上,SQL注入攻击经常坐上榜首的位置。OWSAP全称是开放式Web应用程序安全项目(Open Web Application Security Project),它是一个监控网站面临哪些安全威胁的非盈利性组织。

Phrack现在的logo
“SQL注入经常是第一威胁,主要反映在相关攻击事件的数量上,同时还有一些其他因素导致它如此频发,” Troy Hunt在Motherboard的一次电话采访中如是说道,Troy Hunt是攻击检测网站haveibeenpwned.com的创始人[译者注:感觉像是一个社工库]。
“当你访问一个网页时,你发出一个请求,然后渲染服务器返回的数据”, Hunt介绍,“举个例子,你看一篇新闻,在地址栏上使用id=‘1’来发出请求时,服务器返回编号为1的文章,把id改成2的时候,服务器返回编号为2的文章”
但是,“使用SQL注入攻击,攻击者可能会将ID字段改成一个其他什么东西,导致服务器做一些意料之外的事情”,Hunt继续说到,比如返回一些隐私数据。
一次攻击也许只返回一条或者一段信息,于是攻击者就“不断重复攻击,一次又一次,想干几次干几次,直到他们获取到所有数据为止”,Hunt说。
显然,这需要一段比较长的时间,所以,黑客一般会使用自动化工具。其中比较具有代表性的事Havij,“这是最流行的脚本小工具,因为它支持Windows操作系统,而且还有个图形界面”, Mustafa AI-Bassam通过在线聊天工具和Motherboard如此描述,他是一名安全研究员,同时还是一名LulzSec黑客组织的前成员。
另一个经常被用到的工具是 sqlmap 。“它可以爬取网站的页面,就像搜索引擎的爬虫,寻找网站中所有输入表单,然后提交一些可能导致MySQL语法错误的数据”, AI-Bassam继续介绍。
当攻击者找到一个攻击点,接下来就很容易自动化开搞了。

sqlmap的界面
“他们会使用Google来搜索那些典型的容易受到SQL注入
“你甚至可以教一个4岁的孩子来做这种事情[译者注:汗~~我还不如个4岁的孩子]”, AI-Bassam补充道,强调这整个过程简单到令人发指的地步。确实,Hunt就曾经上传过一个视频,视频上显示他是怎么教他3岁的儿子用Havij来实施SQL注入攻击的[译者注:这是真爱啊,我坚决不会让我女儿走上计算机这条不归路]
“你把要攻击的URL输入进来,然后所有数据就出来了”,Hunt向Motherboard介绍道。在YouTube上有太多教程来介绍如何实施SQL注入攻击了。
事实上,已经有很多解决方案被网站开发人员用来防止SQL注入攻击了和避免客户信息或者公司信息泄漏了。而且那些解决方案一经存在好几年了。
所有这些解决方案的核心都是采用“prepared statments” (预编译声明?): 当SQL语句在数据库中执行是,绝对不能直接执行用户的输入。
如果这些解决方案直接有效,那为何SQL注入攻击还是这么猖獗呢?
“使用prepared staement的好处是它们可以从语义层面上杜绝任何在开发者意料之外的输入,这些输入可以通过构造一些SQL语法,让数据库查询语句从任意一张数据表中获取一条额外的数据”,Mike Schema在给Motherboard的一封email中如此说导,他是雅虎的一名高级经理、软件工程师。
另外一种做法是“使用SQL库对用户输入做一些净化操作”,AI-Bassam建议。简而言之,就是将输入中任何潜在的恶意部分去除掉。
那么,如果SQL注入如此简单,以至于小孩子都能用,而且解决方案又这么直接有效,为什么SQL注入攻击还这么猖獗呢?
“任何一名严谨的程序员都应该知道SQL注入攻击,但是仍然有大量的程序员缺乏经验,所以公司在雇佣某人的是偶,他可能没有受到过任何关于如何消除风险的训练”, AI-Bassam指出。除此之外,“他们的经理们往往只要求开发出能用的软件,而不是安全的软件”。
来自雅虎的Schema也认同这一点,并且补充“有些时候,一些小应用功能有限,要求很快就把东西做出来”,导致开发者经常忽略一些应对各种攻击的工作,尽管他们实施起来也不是很困难。
Hunt不是那么宽容,他也不认同所有的过错都来自于高层管理的压力。相反,他认为现在有网上有这么多教程详细的向开发人员讲解如何避免SQL注入攻击,对,是详细的教程,不仅仅是一些好的建议。“这些年,我看到很多有关如何避免明显的SQL注入风险的教程”,他说到。
随着互联网黑客们不停的在YouTube上分享他们的SQL注入攻击经验,网站的开发者们也没有闲着。“我们有能力的人站出来,分享他们的专业知识,而不仅仅是把自己的事情做好就行了”,Hunt说。
最后,这些网站的安全和他们的数据安全归根到底还是网站开发者自己负责的。这意味着SQL注入攻击和漏洞还会存在,至少在未来一段时间内不会消失。[译者注:估计原作者的意思是安全还是由开发者自己负责,不在于黑客不去攻击,自己开发的时候不注意,还是没办法避免被攻破的~~]
上一页
SQL 注入,永不过时的黑客技术的更多相关文章
- SQL注入中的WAF绕过技术
目录 1.大小写绕过 2.简单编码绕过 3.注释绕过 4.分隔重写绕过 5.Http参数污染(HPP) 6.使用逻辑运算符 or /and绕过 7.比较操作符替换 8.同功能函数替换 9.盲注无需or ...
- SQL注入技术专题—由浅入深【精华聚合】
作者:坏蛋链接:https://zhuanlan.zhihu.com/p/23569276来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 不管用什么语言编写的Web应用 ...
- 《黑客大曝光》实践部分——sql注入(7/8)
SQL注入实践 由于<黑客大曝光>中涉及到形形色色的攻击方式,从软件到硬件,甚至还有物理锁的开锁教程,当中的很多教程很有趣,但是我没有相关的环境,实践起来不好操作,比如说,查点扫描我还可以 ...
- Oracle学习总结(6)—— SQL注入技术
不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企业运营且最具破坏性的漏洞之一. SQL注入基 ...
- 深入理解SQL注入绕过WAF和过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
- 深入理解SQL注入绕过WAF与过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
- SQL注入的优化和绕过
作者:Arizona 原文来自:https://bbs.ichunqiu.com/thread-43169-1-1.html 0×00 ~ 介绍 SQL注入毫无疑问是最危险的Web漏洞之一,因为我们将 ...
- 如何防止SQL注入 http://zhangzhaoaaa.iteye.com/blog/1975932
如何防止SQL注入 博客分类: 技术转载数据库 转自:http://021.net/vpsfaq/152.html -----解决方案--------------------------------- ...
- 深入了解SQL注入绕过waf和过滤机制
知己知彼百战不殆 --孙子兵法 [目录] 0x00 前言 0x01 WAF的常见特征 0x02 绕过WAF的方法 0x03 SQLi Filter的实现及Evasion 0x04 延伸及测试向量示例 ...
随机推荐
- SpringBoot(十二)_springboot整合PageHelper
我之所以会发现这个PageHelper这个东东 是因为公司在使用 ,刚开始我也没太注意这个插件,感觉不就是个分页插件吗?也就那样,直到一天,我在网上找了个代码生成器,用来构建代码,因为它是针对mysq ...
- 机器学习经典论文/survey合集
Active Learning Two Faces of Active Learning, Dasgupta, 2011 Active Learning Literature Survey, Sett ...
- BZOJ 1208 宠物收养所 | 平衡树模板题
BZOJ 1208 宠物收养所 我犯过的错误:删除一个节点后没有update新的根节点,导致size错了! #include <cstdio> #include <cmath> ...
- 洛谷 P4292 [WC2010]重建计划 解题报告
P4292 [WC2010]重建计划 题目描述 \(X\)国遭受了地震的重创, 导致全国的交通近乎瘫痪,重建家园的计划迫在眉睫.\(X\)国由\(N\)个城市组成, 重建小组提出,仅需建立\(N-1\ ...
- IO编程(1)-文件读写
文件读写 读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接 ...
- [THUSC 2016] 补退选 (Trie树)
link $solution:$ $Trie$树很显然吧,那么如何去处理每次询问.对于$Trie$树的每个节点放一个$vector$表示其若有$v$个人的最小时间. #include<iostr ...
- 【费用流】【网络流24题】【P1251】 餐巾计划问题
Description 一个餐厅在相继的 \(N\) 天里,每天需用的餐巾数不尽相同.假设第 \(i\) 天需要 \(r_i\)块餐巾.餐厅可以购买新的餐巾,每块餐巾的费用为 \(p\) 分;或者把旧 ...
- C++ explicit constructor/copy constructor note
C++:explict 作用显示声明构造函数只能被显示调用从而阻止编译器的隐式转换,类似只能用()显示调用,而不能=或者隐式调用 #include <iostream> #include ...
- Spss22安装与破解步骤
Spss22安装与破解教程 向师姐请教了一些学术问题,哈哈说的有点大,不过真的很感谢,学到了很多,少走了很多弯路. 1.下载安装包 可以去IBM官网.人大论坛等网站下载,全部文件应包括spss22安装 ...
- The POSIX API/nss/nscd
https://code.google.com/p/nsscache/wiki/BackgroundOnNameServiceSwitch The POSIX API POSIX is a stand ...