发布于2025年12月5日12月5日 上周,长亭科技发布了核心产品雷驰的免费社区版本——[https://waf-ce.chaitin.cn/](https://waf-ce.chaitin.cn/)。 \r \r 长汀雷驰WAF的核心技术是智能语义分析和检测算法。作为雷驰的产品经理,今天给大家普及一下雷驰智能语义分析检测算法的知识和绕过思路。 \r \r ### 如何绕过雷池\r 欢迎广大网友测试迅雷矿池的检测引擎。如果他们发现绕过方法,可以通过CTStack 社区提交反馈。误报确认后,可以获得现金或礼品奖励。以下是社区反馈地址\r \r [https://stack.chaitin.com/security-challenge/safeline/index](https://stack.chaitin.com/security-challenge/safeline/index)\r \r \r 我看了一下雷驰社区版Demo上的流量,发现很多人试图绕过它,但大多数想法都不太对\r \r - 有人试图使用大小写混淆,使用ScRiPt 而不是脚本\r - 例如,使用seleSELECTct 而不是select\r - 有人尝试用一些特殊字符来替换空格,例如1/**/and/**/1/**/=/**/1\r \r 这些方法**没用**。我已经告诉过你,**雷池不看关键词**,我会告诉你一些技巧。要绕过它们,你应该从语法层面找到它们\r \r 1、语言(如MYSQL)已升级到新版本,尚不支持新发布的语法\r 2、语言(如MYSQL)的实现与文档不一致,有一些特殊功能雷驰不支持\r \r 以下案例是雷池历史上发生过的绕行案例。它们都有一个共同的特征:——。乍一看,它看起来像是一个语法错误。事实上,它背后有一些特性可以让这些语句被解析。 \r \r ````\r 1e 和1e=2eunion 选择*****\r //SQL Server允许使用不带指数的整数,并且后面可以直接跟其他关键字\r \r Weight_string(0x56af 级别1 降序反转)\r //weight_string函数的参数允许传入一个level子语句\r \r 选择@'' a /*!from*/表\r //MYSQL 允许在注释中写from 关键字,并带有! \r ````\r \r ### WAF 的历史\r \r WAF的定位是保护Web网站免受黑客攻击。很难说世界上第一个WAF 产品是什么。从早期简单的关键词过滤脚本到如今成熟的商业WAF产品,这一品类已经有至少20年的历史了。 \r \r WAF这些年的发展离不开常规规则和关键词\r \r 场景一:黑客经常使用and 1=2 union select xx进行SQL注入\r \r 选项1:确定,然后检查union select 关键字,只要出现就阻止访问\r \r 场景2:黑客经常使用`#`进行XSS检测\r \r 选项2:好的,然后检查alert()关键字并阻止访问,只要它出现\r \r 场景3:黑客经常使用././etc/passwd进行文件包含检测\r \r 选项3:好的,然后检查/etc/passwd 关键字并阻止访问,只要它出现\r \r 关键字技术已经发展了二十年,现在只要在github上搜索就能找到很多开源的WAF正则规则。 \r \r 黑客绕过WAF也非常简单。他们可以使用各种变形和混淆,使攻击代码看起来没有明显的关键字。 \r \r 代码就是这么灵活的东西。如果我想达到同样的效果,我可以用无数种方式编写代码。正则代码如果写得太严格就会漏掉,如果写得太松就会误报。不可能涵盖所有关键词。在黑客的绕过面前,这种检测方法完全没有作用。 \r \r **这里我想提出一点:只要你的WAF维护的是基于常规规则的规则,那么防护效果肯定不会好到哪里去。要么假阳性太多,要么假阴性太多,而且假阳性率和假阴性率不能同时降低。 **\r \r ###语义分析与WAF的关系\r \r 早在10年前,就有一个名为libinjection的开源项目试图通过在正则表达式的基础上叠加编译原理来检测SQL注入攻击的关键技术。 libinjection的核心思想如下\r \r - 通过词法分析将Payload分解为Token序列\r - 删除无意义的词汇单元,例如注释和换行符\r - 分析Token序列是否满足SQL注入的共同特征\r \r libinjection的检测方法简单直接。与直接使用正则表达式匹配关键字的方法相比,效果有了很大的提高。 \r \r Changting受到启发,于是向编译原理的方向又近了一步,创建了SQLChop这个免费的在线SQL注入检测工具。这为商业WAF产品聚集在一起从事智能语义分析技术打开了大门。 \r \r ### WAF如何通过语义分析进行攻击检测\r \r 雷驰的攻击检测分为X个关键阶段\r \r 1.接受流量,解析HTTP协议,从GET/POST/Header\r等字段中提取参数 2.对各种HTTP参数进行深度嵌套解码,以查找可能的用户输入\r 3.对可能的攻击方式的初步猜测\r 4. 执行词法分析并将用户输入转换为词法序列\r 5、进行语法分析,判断用户输入是否符合特定攻击的语法\r 6、对符合攻击语法的用户输入进行语义分析和行为分析,判断恶意程度\r 7. 阻止流量\r \r ### 语义分析驱动的WAF有什么好处\r \r - **误报更少**:严格的语法检查,几乎没有意外错误\r - **难以绕过**:涵盖各种语言的所有变形,防护级别更高\r - **检测速度块**:维护的规则越多,速度就越慢。然而,总是只有一组语法规则\r \r ### 语义分析和编译原理\r \r 语义分析是编译原理中的一个概念。研究过编译原理的同学都知道,编译过程分为三个主要阶段\r \r - 词法分析\r - 语法分析\r - 语义分析\r \r 《编译原理》是计算机专业本科生课程。很多学校的信息安全专业并没有开设编译原理课程。不过我这几年遇到的比较优秀的新安毕业生,都会自学编译原理课程。可见,编译原理相关知识在安全行业圈内的普及程度还是可以接受的。 \r \r \r ### 语法和自动机\r \r 语法是形式语言的描述规则。其实就是我们常说的“语法”\r \r 我们日常使用的汉语和英语被称为自然语言;计算机使用的语言,如C、Python、SQL、Java等,限制性较大,有明确的规范,称为形式语言。 \r \r 语法也是编译原理中的一个概念。编译原理根据表达能力的强弱将形式语言分为4个语法级别\r \r - **0型语法**:不受限制的语法,表达能力最强,相当于**图灵机**\r - **类型1 语法**:上下文相关语法,功能相当于**线性有界自动机**\r - **类型2 语法**:上下文无关语法,具有相当于**下推自动机**\r 的功能 - **类型3语法**:正则语法,表达能力最弱,相当于**有限状态自动机**\r \r 我们恳请大家联系雷驰社区版的GitHub 存储库并提供您的关键之星。 \r \r - GitHub [https://github.com/chaitin/safeline](https://github.com/chaitin/safeline)\r - 官方网站[https://waf-ce.chaitin.cn/](https://waf-ce.chaitin.cn/)\r \r 欢迎感兴趣的朋友加入**雷驰讨论群**进行深入交流。 \r .png)
创建帐户或登录后发表意见