作者 | 陈峻
审校 | 重楼
近年来,随着人们使用Web应用的与日俱增,各种与在线交易和通信相关的大量个人数据被存储在其后端的数据库中。对于那些由数据库驱动的Web应用而言,SQL注入攻击是一种相当严重的安全风险。攻击者可以通过利用系统漏洞,绕过应用防火墙,未经授权地访问到底层数据库,并窃取各种敏感的数据信息。因此,我们需要制定一套针对SQL注入攻击的有效应对措施,来提高Web应用的整体安全态势。
作为一种典型的攻击形式,SQL注入(简称SQLi)通常会使用恶意SQL代码,来操纵后端数据库,获取机密信息和数据库管理员权限,进而盗取用户列表、以及破坏整个数据库。目前,根据访问后端数据的方法和潜在危害,我们可以将SQL注入分为:
当攻击者可以使用同一通信通道,实施攻击并收集攻击结果时,这种攻击就被称为带内SQL注入。作为一种最流行、最直接的攻击,带内SQL注入又包括:基于错误的SQL注入和基于联合的SQL注入两种最常见的形式。
与带内SQL注入相比,推理SQL注入的攻击时间更长。攻击者可以通过发送有效负载、分析Web应用的响应、以及数据库服务器的相应行为,来重新创建数据库结构。由于无法获取Web应用传递的数据,因此攻击者无法查看到类似带内攻击的结果。而且,由于攻击者需要逐个字符地枚举数据库,因此在攻击大型数据库时,其效率比较低下。
目前,推理SQL注入也包含:基于盲布尔的SQL注入和基于盲时间的SQL注入两种形式。
由于依赖的是在Web应用数据库服务器上已启用的功能,因此带外SQL注入并不常见。
通常,Web应用防火墙(简称WAF)可以通过筛选和监控Web应用与互联网之间的HTTP流量,以及时发现跨站伪造、跨站脚本、文件包含和SQL注入等常见攻击。在OSI模型中,WAF工作在第七层。作为一种反向代理,它往往被安装在Web应用的前端,从而在客户端请求到达服务器之前形成一道中间件式的屏障。和其他防火墙类似,WAF也需要通过一系列规则与策略的集合,来过滤恶意请求,进而防范应用漏洞被利用。目前,经常被部署到Web应用系统中的WAF类型包括:软件型WAF、硬件型WAF、云WAF、以及Web应用内置的WAF服务。
上图展示的是WAF防范SQL注入的逻辑过程。可见,WAF强大之处在于,它可以快速、方便地执行策略,并按需变更规则,从而对各种攻击性请求做出更快的反应。
那么,WAF到底是遵循一个什么样的流程来对攻击进行检测的呢?下面我们以一个典型的软件型WAF为例,来深入探究。
我们常说“道高一尺,魔高一丈”,针对WAF在产品设计和部署配置上的参差不齐,SQL注入攻击者时常会运用各种手段来绕过WAF,达到攻击目的。例如,由于不同的WAF产品会自定义不同的警告页面,因此攻击者可以根据不同的页面信息,来辨别出Web应用使用了哪一款WAF,从而制定出相应的能够绕过WAF的数据请求特征。下面便是该领域的一些典型威胁与漏洞:
此外,常见的WAF绕过方法还有:关键字替换,特殊符号与编码,利用注释,重复参数污染,缓冲区溢出,以及利用多种绕过技术打“组合拳”,通过未经授权地访问Web应用的系统文件,进而改变预期运行逻辑。
综上所述,针对Web应用的SQL注入攻击与应对,好似一个永无止境的“猫鼠游戏”。我们只有通过持续检测,持续跟踪,持续调整,持续更新,以及持续引入新的防御技术,才能更加灵活地应对SQL注入、远程代码执行(RCE)、以及跨站点脚本(XSS)等复杂多变的攻击,才能在这场安全竞赛中占得先机。
陈峻(Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验。
本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-89875-0.html聊聊针对Web应用的SQL注入攻击与应对策略
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: CSS 实现从上到下从左到右的列表布局