传统基于关键字正则表达式的SQL注入攻击检测、XSS攻击检测方法容易误杀,且对于注释变形、字符串语法变形等高级攻击规避方法的检测效果差。

语义分析拦截引擎基于实际SQL语句、XSS语句词法、语法分析结合威胁等级综合判断攻击行为,解决了对于高级黑客变形手段的攻击检测、拦截问题。

一、开源项目分析

Libinjection 一个轻量级的开源C语言开发编写的sql注入攻击检测库。有速度快以及低误报,低漏报,速度快体现在该库全程比较耗性能的就二分查找算法,库本身没有内存申请,使用的内存大小十分稳定,单线程等诸多优点。

1、技术原理

Liblinjection通过对用户的输入进行词法分析,生成指纹,然后通过二分查找算法,在特征库中进行匹配,匹配到则报SQL注入漏洞。
其核心思想一为转换,Libinjection通过将输入预处理,将sqli攻击解析为sql原始查询串,将输入转换为一套自己能够识别的语言;二为预演,Libinjection预设SQL注入发生在3中情况内(直接注入sql语句、在单引号内注入sql、在双引号内注入sql)

2、Liblinjection运作流程

  1. 初始化变量state
  2. 通过libinjection_is_sqli()函数进行具体分析(在下面详细分析)
  3. 如果存在issqli,则将SQL注入识别特征复制进fingerprint变量并返回,如果不存在则将fingerprint变量设置为空并返回。

  1. 判断用户输入的字符串长度是否合法,为零则返回FALSE。(即没有发现SQL注入)
  2. 执行SQL注入识别函数(libinjection_sqli_fingerprint,无引号,标准SQL语法),获取字符串识别特征码。
  3. 执行结构体内的查询函数(这里为libinjection_sqli_lookup_word,二分查找算法),对比第二步获取的识别特征是否与SQL注入识别特征匹配。
  4. 如果第三步发现SQL注入特征匹配结果为真,则返回true,并将SQL注入识别特征匹配到的fingerprint写入结构体,
  5. 如果检测失败,则调用reparse_as_mysql()函数判断是否存在“(dash-dash-[notwhite])     注释”或“’#’ 运算符号”,如果存在则再次执行SQL识别函数(libinjection_sqli_fingerprint,无引号,MYSQL语法),
  6. 同时执行结构体的分析函数(libinjection_sqli_lookup_word,二分查找算法)进行特征匹配检测,如果结果为真,则返回true,并将SQL注入识别特征匹配到的fingerprint写入结构体。
  7. 如果前面的判断没有返回结果,将扫描参数(即用户输入的字符串)查找是否存在单引号。如果为真接着重复上述检测步骤。
  8. 如果前面的判断依旧没有返回结果,将扫描参数(即用户输入的字符串)查找是否存在双引号。如果为真则接着执行SQL注入识别函数
  9. (libinjection_sqli_fingerprint,双引号,MYSQL语法)
  10. 同时执行结构体的分析函数(libinjection_sqli_lookup_word,二分查找算法)进行特征匹配检测结果为真,则返回true,并将SQL注入识别特征匹配到的fingerprint写入结构体。
  11. 如果前面三种判断均无结果则默认该参数(用户输入的字符串)不存在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中支持三种注释方法:以下都可以是行内注释。

  1. 使用#作为开头,后面的全是注释。

  2. 使用–作为注释开头,但要注意,MySQL中这种注释方法和SQL Server等其他标准数据库注释语法稍有不同,MySQL要求第二个短线后面必须跟一个空白字符,如空格、制表符等。

  3. 使用/**/注释符。标准sql使用c风格的注释: /*this is a comment */.

结语

1、libinjection,语义分析,也是依靠规则进行检测的,只是相对比正则规则不同而已;

2、语义分析,同样也存在误报、漏报,也会被针对性的绕过。相比正则,并没有明显优势;

3、性能,据说性能碾压式的优于正则。从代码分析角度、理论而言,有可能。对比而言,说正则规则量越大,性能越差。

云WAF之语义分析引擎相关推荐

  1. 揭秘阿里云WAF背后神秘的AI智能防御体系

    背景 应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入.跨站等攻击仍然占据着较前的位置.WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在,也正是这些针对W ...

  2. 阿里云WAF背后的AI智能防御体系

    本文转载于云栖社区: https://yq.aliyun.com/articles/723263?spm=a2c4e.11155472.0.0.1a724768fdo46F 背景 应用安全领域,各类攻 ...

  3. Frost Sullivan权威报告:阿里云再次领跑云WAF大中华区市场

    2019独角兽企业重金招聘Python工程师标准>>> 近日,国际权威分析机构Frost & Sullivan 针对Web应用防火墙(简称"WAF")领域 ...

  4. 腾讯云WAF服务再获国内权威研究机构认可,入选中国云WAF实践代表

    上云步伐的加快,使得企业对云端Web应用安全防护的需求由附加项转为"关键信息基础设施",并带来了新的应用命题.8月18日,中国领先的行业和市场大数据库头豹研究院联合全球著名增长咨询 ...

  5. 基于云原生的火山引擎边缘云应用与实践

    8月26日,2022全球分布式云大会在北京召开.火山引擎边缘云高级产品总监沈建发以"基于云原生的火山引擎边缘云应用与实践"为主题,分享了火山引擎的新一代边缘云整体架构,以及边缘云产 ...

  6. 重磅发布: 阿里云WAF日志实时分析上线 (含视频)

    背景 Web攻击形势 互联网界的安全一直都不断的面临着挑战,以DDoS/Web攻击为代表的网络威胁直接对网络安全产生严重的影响. 据近年来的调查报告显示,Web攻击的方式向两极化发展,慢速攻击.混合攻 ...

  7. KubeVela:标准化的云原生平台构建引擎

    作者 | 孙健波(天元) 来源|阿里巴巴云原生公众号 本文由"GO 开源说"第三期 KubeVela 直播内容修改整理而成,视频内容较长,本文内容有所删减和重构. 点击查看视频 K ...

  8. 分析绕过一款适合练手的云WAF

    X-WAF是一款使用中.小企业的云WAF系统,让中.小企业也可以非常方便地拥有自己的免费云WAF. 本文从代码出发,一步步理解WAF的工作原理,多姿势进行WAF Bypass. 0x01 环境搭建 官 ...

  9. OpenKruise - 云原生应用自动化引擎正式开源

    在本次 KubeCon 上,阿里云将为全球用户分享阿里巴巴超大规模云原生落地实践.云原生前沿技术与应用包括OpenKruise 开源项目.开放云原生应用中心(Cloud Native App Hub) ...

  10. 阿里开源!云原生应用自动化引擎 OpenKruise | 直击 KubeCon

    在近期开展的 KubeCon China 2019 上,阿里云将陆续为全球用户分享阿里巴巴超大规模云原生落地实践.云原生前沿技术与应用包括 OpenKruise 开源项目.开放云原生应用中心(Clou ...

最新文章

  1. Linux 运维故障排查思路,有这篇文章就够了
  2. 11、如何开启慢日志查询?
  3. J - Just Multiplicative Inverse Gym - 102875J
  4. 如何在Global.asax中判断是否是ajax请求
  5. 1环境-企业级 Hyper-v 群集部署实验方案
  6. 让一个从未接触过电脑的人测试浏览器
  7. 证明LDU分解的唯一性
  8. Cookie与Session简介
  9. UBUNTU配置samba
  10. mysql客户端navicat怎么连接_Navicat使用详解(mysql客户端工具)
  11. 万特电能表接线仿真系统 软件_电工学习PLC和接线入门 之 无中生有(软件仿真)...
  12. 四川托普计算机职业学校教务管理系统,四川托普信息技术职业学院教务处
  13. JAVA 两个队列实现栈
  14. 在windows 10中输入法语等语言的特殊字符
  15. 一朵花的组成结构图_花是由哪几个部分组成的?
  16. 求两点之间的最短路径
  17. 从前慢-谷粒商城篇章4
  18. MGN:Learning Discriminative Features with Multiple Granularities for Person Re-Identification阅读笔记
  19. 常用H5标签-第三部分
  20. 【Lintcode】1718. Minimize Malware Spread

热门文章

  1. 汇编语言王爽(第四版)实验一
  2. VC6删除项目中的文件
  3. 基于SAP HANA 的SAP系统 安装
  4. 用户可以通过软件对计算机,用户可以通过____软件对计算机软、硬件资源进行管理。...
  5. matlab求带参数二重定积分,matlab二重定积分
  6. 【学习笔记】JAVA快捷键
  7. vm虚拟机安装gho系统_虚拟机怎么安装gho系统
  8. 《信号与系统学习笔记》—采样(一)
  9. 2005-2018 年软考软件设计师 真题分享
  10. #python 颜色聚类处理