云WAF之语义分析引擎
传统基于关键字正则表达式的SQL注入攻击检测、XSS攻击检测方法容易误杀,且对于注释变形、字符串语法变形等高级攻击规避方法的检测效果差。
语义分析拦截引擎基于实际SQL语句、XSS语句词法、语法分析结合威胁等级综合判断攻击行为,解决了对于高级黑客变形手段的攻击检测、拦截问题。
一、开源项目分析
Libinjection 一个轻量级的开源C语言开发编写的sql注入攻击检测库。有速度快以及低误报,低漏报,速度快体现在该库全程比较耗性能的就二分查找算法,库本身没有内存申请,使用的内存大小十分稳定,单线程等诸多优点。
1、技术原理
Liblinjection通过对用户的输入进行词法分析,生成指纹,然后通过二分查找算法,在特征库中进行匹配,匹配到则报SQL注入漏洞。
其核心思想一为转换,Libinjection通过将输入预处理,将sqli攻击解析为sql原始查询串,将输入转换为一套自己能够识别的语言;二为预演,Libinjection预设SQL注入发生在3中情况内(直接注入sql语句、在单引号内注入sql、在双引号内注入sql)
2、Liblinjection运作流程
- 初始化变量state
- 通过libinjection_is_sqli()函数进行具体分析(在下面详细分析)
- 如果存在issqli,则将SQL注入识别特征复制进fingerprint变量并返回,如果不存在则将fingerprint变量设置为空并返回。
- 判断用户输入的字符串长度是否合法,为零则返回FALSE。(即没有发现SQL注入)
- 执行SQL注入识别函数(libinjection_sqli_fingerprint,无引号,标准SQL语法),获取字符串识别特征码。
- 执行结构体内的查询函数(这里为libinjection_sqli_lookup_word,二分查找算法),对比第二步获取的识别特征是否与SQL注入识别特征匹配。
- 如果第三步发现SQL注入特征匹配结果为真,则返回true,并将SQL注入识别特征匹配到的fingerprint写入结构体,
- 如果检测失败,则调用reparse_as_mysql()函数判断是否存在“(dash-dash-[notwhite]) 注释”或“’#’ 运算符号”,如果存在则再次执行SQL识别函数(libinjection_sqli_fingerprint,无引号,MYSQL语法),
- 同时执行结构体的分析函数(libinjection_sqli_lookup_word,二分查找算法)进行特征匹配检测,如果结果为真,则返回true,并将SQL注入识别特征匹配到的fingerprint写入结构体。
- 如果前面的判断没有返回结果,将扫描参数(即用户输入的字符串)查找是否存在单引号。如果为真接着重复上述检测步骤。
- 如果前面的判断依旧没有返回结果,将扫描参数(即用户输入的字符串)查找是否存在双引号。如果为真则接着执行SQL注入识别函数
- (libinjection_sqli_fingerprint,双引号,MYSQL语法)
- 同时执行结构体的分析函数(libinjection_sqli_lookup_word,二分查找算法)进行特征匹配检测结果为真,则返回true,并将SQL注入识别特征匹配到的fingerprint写入结构体。
- 如果前面三种判断均无结果则默认该参数(用户输入的字符串)不存在SQL注入。
3、Libinjection特征匹配
[例]-1’ and 1=1 union/* foo */select load_file(’/etc/passwd’)–
你输入这个字符串,解析按空格分隔开,这里比较重要的点是没有闭合 ’或“也按字符串处理 -1’ 转换为特征码s(string);第二个字串 and 关键字特征码为 &;1 = 1这里比较特殊它按数字来转了(具体可以跟代码来深入研究)特征码为 1;union 关键字联合查询特征码为 U;select 关键字特征码为 E;所以合起来就是s&1UE;
同样还有:
"1’ OR 1=1" ⇒ s&1
“’ order by 0–+” ⇒ sB1c
“’ union select 1,2–djf” ⇒ sUE1c
4、Libinjection薄弱环节
除了上述3种sql注入情况,其实还有多种注入方法是没包括在内的。比如,在注释内注入sql攻击。
MYSQL和标准SQL的区别表
区别/注释方式 |
/**/ |
--开头 |
# |
标准sql |
ok |
ok |
no |
mysql |
ok |
--后面跟空格 |
ok |
在MySQL中支持三种注释方法:以下都可以是行内注释。
使用#作为开头,后面的全是注释。
使用–作为注释开头,但要注意,MySQL中这种注释方法和SQL Server等其他标准数据库注释语法稍有不同,MySQL要求第二个短线后面必须跟一个空白字符,如空格、制表符等。
使用/**/注释符。标准sql使用c风格的注释: /*this is a comment */.
结语
1、libinjection,语义分析,也是依靠规则进行检测的,只是相对比正则规则不同而已;
2、语义分析,同样也存在误报、漏报,也会被针对性的绕过。相比正则,并没有明显优势;
3、性能,据说性能碾压式的优于正则。从代码分析角度、理论而言,有可能。对比而言,说正则规则量越大,性能越差。
。
云WAF之语义分析引擎相关推荐
- 揭秘阿里云WAF背后神秘的AI智能防御体系
背景 应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入.跨站等攻击仍然占据着较前的位置.WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在,也正是这些针对W ...
- 阿里云WAF背后的AI智能防御体系
本文转载于云栖社区: https://yq.aliyun.com/articles/723263?spm=a2c4e.11155472.0.0.1a724768fdo46F 背景 应用安全领域,各类攻 ...
- Frost Sullivan权威报告:阿里云再次领跑云WAF大中华区市场
2019独角兽企业重金招聘Python工程师标准>>> 近日,国际权威分析机构Frost & Sullivan 针对Web应用防火墙(简称"WAF")领域 ...
- 腾讯云WAF服务再获国内权威研究机构认可,入选中国云WAF实践代表
上云步伐的加快,使得企业对云端Web应用安全防护的需求由附加项转为"关键信息基础设施",并带来了新的应用命题.8月18日,中国领先的行业和市场大数据库头豹研究院联合全球著名增长咨询 ...
- 基于云原生的火山引擎边缘云应用与实践
8月26日,2022全球分布式云大会在北京召开.火山引擎边缘云高级产品总监沈建发以"基于云原生的火山引擎边缘云应用与实践"为主题,分享了火山引擎的新一代边缘云整体架构,以及边缘云产 ...
- 重磅发布: 阿里云WAF日志实时分析上线 (含视频)
背景 Web攻击形势 互联网界的安全一直都不断的面临着挑战,以DDoS/Web攻击为代表的网络威胁直接对网络安全产生严重的影响. 据近年来的调查报告显示,Web攻击的方式向两极化发展,慢速攻击.混合攻 ...
- KubeVela:标准化的云原生平台构建引擎
作者 | 孙健波(天元) 来源|阿里巴巴云原生公众号 本文由"GO 开源说"第三期 KubeVela 直播内容修改整理而成,视频内容较长,本文内容有所删减和重构. 点击查看视频 K ...
- 分析绕过一款适合练手的云WAF
X-WAF是一款使用中.小企业的云WAF系统,让中.小企业也可以非常方便地拥有自己的免费云WAF. 本文从代码出发,一步步理解WAF的工作原理,多姿势进行WAF Bypass. 0x01 环境搭建 官 ...
- OpenKruise - 云原生应用自动化引擎正式开源
在本次 KubeCon 上,阿里云将为全球用户分享阿里巴巴超大规模云原生落地实践.云原生前沿技术与应用包括OpenKruise 开源项目.开放云原生应用中心(Cloud Native App Hub) ...
- 阿里开源!云原生应用自动化引擎 OpenKruise | 直击 KubeCon
在近期开展的 KubeCon China 2019 上,阿里云将陆续为全球用户分享阿里巴巴超大规模云原生落地实践.云原生前沿技术与应用包括 OpenKruise 开源项目.开放云原生应用中心(Clou ...
最新文章
- Linux 运维故障排查思路,有这篇文章就够了
- 11、如何开启慢日志查询?
- J - Just Multiplicative Inverse Gym - 102875J
- 如何在Global.asax中判断是否是ajax请求
- 1环境-企业级 Hyper-v 群集部署实验方案
- 让一个从未接触过电脑的人测试浏览器
- 证明LDU分解的唯一性
- Cookie与Session简介
- UBUNTU配置samba
- mysql客户端navicat怎么连接_Navicat使用详解(mysql客户端工具)
- 万特电能表接线仿真系统 软件_电工学习PLC和接线入门 之 无中生有(软件仿真)...
- 四川托普计算机职业学校教务管理系统,四川托普信息技术职业学院教务处
- JAVA 两个队列实现栈
- 在windows 10中输入法语等语言的特殊字符
- 一朵花的组成结构图_花是由哪几个部分组成的?
- 求两点之间的最短路径
- 从前慢-谷粒商城篇章4
- MGN:Learning Discriminative Features with Multiple Granularities for Person Re-Identification阅读笔记
- 常用H5标签-第三部分
- 【Lintcode】1718. Minimize Malware Spread