【技术分享】如何绕过WAF/NGWAF的libinjection实现SQL注入

栏目: 数据库 · 发布时间: 7年前

内容简介:【技术分享】如何绕过WAF/NGWAF的libinjection实现SQL注入
2017-05-16 10:03:17 阅读:209次
【技术分享】如何绕过WAF/NGWAF的libinjection实现 <a href='https://www.codercto.com/topics/18630.html'>SQL</a> 注入
作者:WisFree

【技术分享】如何绕过WAF/NGWAF的libinjection实现SQL注入

翻译: WisFree

预估稿费:100RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

写在前面的话

在我们开始之前,先给大家介绍一下libinjection。 libinjection 是一个非常流行的开源项目【 传送门 】,该项目由Signal Sciences公司的Nick Galbreath负责开发和维护。

在此之前,市场上绝大多数的WAF都是基于正则匹配(Regex)的,但是现在不一样了,很多的WAF(防火墙)以及NGWAF(下一代防火墙)出于性能方面的考虑,都会选择使用这个库来代替常规的正则表达式。 例如mod_security从2.7.4版本开始就支持libinjection(dectectSQLi-v2.7.4、detectXSS-v2.8.0)。

从技术角度来看, libinjection是一个基于 C语言 的SQLi词法解析分析器,它可以通过对不同语句进行词法分析和语法分析来实现对SQL语句以及HTML语句的解析。

但需要注意的是,某些情况下libinjection的效果可能并没有正则表达式好。接下来我会告诉大家我为什么会这样认为。

libinjection解析器的未知令牌(token)

函数令牌,这是找出未知令牌的一种最简单的方法了。我们曾尝试列出所有可能的SQL函数,但这不太可能实现,因为还有很多自定义函数存在。这是其中一个原因,而另一个原因是各种不同的SQL引擎(例如MariaDB、 MySQLSQLite 和PostgreSQL等等)都有很多不同的内置SQL函数。

下面是一个简单的例子:

?id=‘-sqlite_version() UNION SELECT password FROM users- -

libinjection解析器的未知语境(context)

括号语境

如果攻击者想要进行拒绝服务(DoS)攻击,并尝试通过SQL注入来拿下你的数据库,那么他可能会使用下面这种查询语句:

?id=sleep(9999)

但是,这种尝试是会被检测到的,而安全防护产品也能够有效地阻止这种攻击。但是,下面这种情况却是无法检测到的:

?id=)-sleep(9999

因为libinjection并不能理解这种括号语境。

同样的,在MySQL的文件写入中我们也可以利用类似的技术。比如说下面这个语句,它在一般情况下都会被检测到:

?id=1337 INTO OUTFILE ‘xxx’--

但是如果攻击者换成下面这种形式或语境的话,就无法被检测到了:

?id=1337) INTO OUTFILE ‘xxx’--

除了上面给出的这种情况之外,我们同样可以在批量查询语句或多层查询语句中使用同样的技巧。比如说下面这条语句,它是会被检测到并且被阻止的:

?id=123;DROP TABLE users--

但是下面这条语句却不会被发现,这样一来,你的用户表(users)就被攻击者拿到手了:

?id=123);DROP TABLE users--

简单的数据提取Payload样例如下所示:

?id=) OR (SELECT password FROM users ...

注释语境

在SQL语句的注释中执行注入

*/UNION SELECT password FROM users--

总结

实际上,我们经常可以在SQL语句的注释区域中发现可行的注入点。libinjection无法检测注释区域中的内容,因为它的SQL解析器根本就不支持这种语境。

正如大家在本文中看到的那样,想要保护Web应用不受网络攻击其实是一件非常困难的事情,即便是我们对SQL注入攻击已经有着足够的了解了,但我们仍然不能保证SQLi不会发生在我们自己的服务器身上。无论你所使用的库有多么的流行,无论这个库有多么的高级,攻击者永远都会有新的方法来绕过它们。

【技术分享】如何绕过WAF/NGWAF的libinjection实现SQL注入 【技术分享】如何绕过WAF/NGWAF的libinjection实现SQL注入

本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。

原文链接:https://medium.com/@d0znpp/how-to-bypass-libinjection-in-many-waf-ngwaf-1e2513453c0f

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

构建之法

构建之法

邹欣 / 人民邮电出版社 / 2014-9 / 49.00元

内容简介: 软件工程牵涉的范围很广, 同时也是一般院校的同学反映比较空洞乏味的课程。 但是软件工程的技术对于投身IT 产业的学生来说是非常重要的。作者邹欣有长达20年的一线软件开发经验,他利用业余时间在数所高校进行了长达6年的软件工程教学实践,总结出了在16周的时间内让 同学们通过 “做中学 (Learning By Doing)” 掌握实用的软件工程技术的教学计划,并得到高校师生的积极反馈......一起来看看 《构建之法》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试