还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
的注入绕过手段和防御WAF SQL安华金和思成数据库防火墙的防护策略、手段都是基于协议解析而来;数据库防火墙在防止注SQL SQL入上彻底的解决了以牺牲性能为代价的方式数据库防火墙和配合使用的部署方式,WAF WAF将会使用户的核心数据更加安全数据库防火墙对注入的防止,核心优势的之一在于它的部署位置,部署位置在应用服SQL务器之后无论袭击者采用了什么方式进行注入袭击行为的包装,最终发送到数据库端的SQL都是纯净的语句SQL数据库防火墙的核心优势之二,它是通过语法解析技术而不是正则匹配技术进行SQL SQL注入防御通过语法解析技术的性能更高,准确度更高SQL数据库防火墙的核心优势之三,它具有综合防御的手段,以帮助即使被注入后的安全损失降到最低点数据库防火墙可以并通过以下四点实现整体的安全防护判断语句是否具有明显的注入特性,有则阻止SQL语句的高危命令被发现,进行告警或阻断语句访问的对象是否属于该用户访问权限,若无则阻断限制语句的返回行数,超过返回行则阻断加入数据库防火墙后,数据库防火墙会在数据库之间获取应用发送给数据库的WEB SQL语句通过拿到的语句,按照不同数据库进行协议解析SQL SQL通过协议解析把应用发送的语句还原成标准模式(去掉各种加入的符号,转译码等),袭SQL击者曾经使用的可绕阔的手法,在这里都将被干掉,将变为更加纯净的语句WAF SQL基于这些纯净的语句,与预定义的注入特性进行匹配,如SQL SQL常量表达式和注释的组合常量表达式和的组合Union带外函数的调用拼接字符与的组合or常用注入函数等SQL除了注入的特性的匹配外,一些高危的命令将被告警或阻断,如、、SQL truncatedrop delete、等高危操作进行阻断;防止袭击行为导致大的灾害事故nowhere insertnowhere同时可以相应用发来的语句,进行操作和对象的细粒度权限控制,可以防止应用访SQL问一些敏感表;比如防止对注入侦察阶段常用的系统表的访问SQL即便有注入被发送到数据库端,数据库防火墙也会通过行数控制来进一步限制数据库SQL每次的返回结果行数,对于大批量的数据返回将进行阻断,比如我们可以将某些敏感表的返回行数设定为不允许超过从而把损失减到最小100,通过数据库防火墙无疑比对注入的防止更加彻底WAF SQL--关于注入SQL注入是一种常见的入侵应SQL WEB用的手法注入是运用应用系统的编SQL程漏洞和语言的语法特性,改变原始SQL的语句执行逻辑而产生的SQL三.袭击者向应用发送精心构造的Web输入数据,这些输入中的一部分被解释成指令,改变了本来的正常执行逻SQL SQL辑,执行了袭击者发出的命令,最终使SQL袭击者获取应用的管理员权限或者下Web载了应用存到数据库中的敏感信息Web注入如何实现
1.SQL为了对本文进行更好的讲解,下面简朴地对注入的原理进行示例性说明SQL如下图是某网站的登录界面用户名凰登陆界面中输入用户名密码在应用程序后台会把输入和程序admin admin1234Webo混合变成命令去访问数据库最终应用发给后台数据的命令是SQL Web SQL(这个形式)Select*from userswhere username=admin andPassword=2dmin1234,这个查询规定数据库检查“用户表”中的每一行,提取出每条列为和SQL usernameadmin歹值为的记录假如数据库中后的条件满足应用程序将为Password Uadmin1234WHERE(该用户建立一个通过验证的会话应用登陆成功)Web上面是正常登陆应用的过程假如由于编程的不严谨,用户名或密码输入处存在WebSQL注入点,袭击者可以运用注入绕过应用的登陆访问控制例如袭击者在用户名处输入SQL Webadmin1-密码处可以输入任意值均可通过用户名凰admin-密码由于,后台实际的语句将演变成SQLselect*from userswhere username=admin-and password=123dq在中等于注释,由于加入了“一”上面的语句等价于SQL Serverselect*from userswhere username=admin,也就是说只要有用户名为袭击者就可以直接用登入到应用系统中admino admin五.当然注入的用法远不止这一种,SQL本文不做详述六.如何防御注入WAF SQL简朴说,就是解析请求,检查中参数是否存在袭击行为;若存在,则触WAF HTTPHTTP发袭击行为重要有两种主流的的方式绕阔一种是运用也许存在的协议解析缺陷,另WAF,WAF HTTP一种就是运用包装后的命令,使无法辨认注入SQL WAF SQL一般通过协议袭击的方式,有四种绕过入
6.1HTTP WAF断包绕过
6.2某些初期版本的不具有把断包组合成完整
6.3WAF TCP侵的手法:包的能力一旦袭击者发送的请求包是断包,TCP HTTP将无法正常解决不完整的请求包假如这些WAF HTTP请求包中具有注入语句就可以直接绕过进入SQL WAF,应用组成注入语句web SQL缓冲区溢出
6.4现在的产品基本都具有了对协议中参数的
6.5WAF HTTP解析能力但是袭击者假如故旨在参数中写入过长的占位内容这时假如产品自身对参数检查不够+shellcode,WAF严格的话,则有也许导致缓冲区溢出的发生例如改变的输入为id=1id=1and select0xAA AAA AAAAA A...(个以上)的模式1000+shellcode袭击者也许会运用这种入侵手段,绕过进而入侵到应WAF用系统内部协议不兼容
6.6尚有一种方式就是向服务器发送畸形的,而非
6.7WEB标准的请求,这时服务器也许出于RFC2616HTTP WEB兼容的目的,会尽也许解析畸形的请求,这种情况HTTP下假如和兼容的方式不一致则也许出现绕过WAF WEB现象例如一个请求没有协议字段、没有字段,HOST默认会把协议作为版本解决,apache HTTP
0.9HOST默认使用自身的出于兼容apache servernameWAFo的目的,这时候未必能和服务器上的采用相同web server的策略由于不同版本的有语法差异,这种情况就HTTP有也许绕过进入系统内部WAF参数污染
6.8参数污染简朴说就是同名参数写多个,往往只检查第一个参数但服务器具体用哪个参WAFI WebServer Parair.eter Interpretation|Exair.ple数,策略是不相同的ASP.NET/IIS|Concatenation bycoirina parl=vall,val2ASP/IIS|Concatenation bycorara parl=vall val2fPHP/Apache|The lastparam isresulting parl=val2parl=vallJSP/Tomcat|The firstparam isresulting parl=vallPerl/Apache IThe firstparain isresulting parl=vall~~val2DBMan|Concatenation bytwo tildes例如是个明显的xxx.phpid=0id=7%20union%20select%201,2,3,current_user SQL注入解析.这一看就是合法的,但解析得到的确却是个注入语WAF id=PHP.id=.unio.selec……句不同的有不同的解析方式,这个时候很有也许被绕过server WAF通过命令包装的方式绕过是运用在进行命令的防御的核心技术正则SQL WAF,WAF SQL匹配的缺陷这种技术,一般通过种匹配事变的方式进行方式4辨认语句的关键保存字,如等
1.SQL selectfrom,union select,drop table,into outfile、辨认的内建函数,如等2DBMS versionJoad_file,sleep,benchmark.辨认内建变量,如@@丫对门等3DBMS
60、辨认数据库所辨认的内联注释,如或等4/*!union*//*!select*//*!50000union*/针对以上的防御手段,黑客们总结出了一些绕过的袭击手段,比如WAF大小写绕过1最简朴基础的一种绕过方式比如关键字初期由于正则匹配规则不健全是无SELECT SEIect法分辨出是的导致绕过,而后面的数据库则会对的解析成SELECT WAFSELECT编码绕过2在大小写绕过的基础上开始出现编码绕过重要有三种编码、十六进制编码、URL Unicode编码在浏览器中输入会进行一次编码,黑客会通过多次编码来进行绕过例如URL URLWAF数据库得到的假如只解码一次得ld.phpid=1%2520union/**/select,ld.phpid=1union/**/selecto到的是就有也许绕过入侵数据库这个问题可以采用多次ld.phpid=1%20union/**/select,WAF循环解码来解决其中编码种类很多,假如只是基于黑名单过滤,无法解决所有情况,Unicode从而也可以实现的绕过其中编码曾经实现过对的绕过WAF UTF-32GOOGLE注释绕过3不仅可以采用编码改写关键字,还可以采用注释改写关键字,避免正则匹配例如z.com/index.phppage_id=-15%55nlON/**/%53ElecT1,23,4,union%a0select passfrom5就是用符号编码代替一部分字母和鉴定的空格来逃避正则匹配不会被拦截,users#selectxxx由于也许是函数名等空格则一定会被拦截,去掉空格成为绕过的关键同样尚有针select xxx对版本的系列MYSQL/*!5000union*/等价替换4等价替换是个比较大的分类,重要可以分为等价函数、等价符号、特数符号、比较符号等4类等价函数,就是同功能函数替换严禁了一些函数,但对此外一些函数没有严禁例如WAF可以用,这些函数来替换,还可以采用生僻函数迂回完毕原函数的功Substring midsubstr能,这些都也许成功实现关键字绕过这种关键字在中可以用||和代替,语WAF andor PHP句就可以写成来进行绕过同样,=、>、v等都可以代替等号进行绕过id=1or1=1id=1||1=除去绕过关键字和关键符号外,最关键的是绕过空格想各种方式避免空格出现例如原句id=1or1=1可以写成id=1+or+1=1id=1%0bor%0b1=1id=1-s%0aor-s%0a1=1等多种形式进行尝试绕过id=1/*!or*/1=1id=1or1=1七.数据库防火墙协助应对注入WAF SQL事实上无法对各种注入的绕过手段进行穷举;因此提供了各种扩展,以WAFSQLWAF帮助用户根据实际情况进行规则扩展,以应对各种新的袭击,比如黑名单策略;但大量的规则将使的性能大幅下降,进而影响整个系统的性能;同时也许还会导致某些误杀WAF因此更有效的方法是在应用和数据库之间加入数据库防火墙数据库防火墙对从WEB WEB应用发向数据库的语句进行语法解析,对符合注入特性的袭击行为进行告警和阻断SQL SQL下面是加入了防火墙后的拓扑架构数据库。
个人认证
优秀文档
获得点赞 0