QCon北京2014大会4月17—19日@InfoQinfoqchina特别感谢QCon上海合作伙伴安全宝云WAF实践分享@imiyoo刘漩五年安全从业经验2010~安全宝安全研究员国内安全团队安天365核心成员早期作品:▪imiPhoneWallAndroid手机防火墙(已开源)▪WatScan网站在线扫描器微博:@imiyoo博客:WAF是什么,它有什么作用?我们需要它吗?为什么有了WAF还会被入侵?WebApplicationFirewallWeb应用的中间层,对Web请求进行攻击过滤WebServerIIS,Apache,Tomcat,Nginx…WAF脚本(ASP/ASPX/PHP/JSP/CGI…)数据库(Access/MySQL/MSSQL/Oracle…)Web请求的水平路径根据Web请求的水平路径划分:网络层,硬件WAF,云WAF主机层,软件WAF,安全狗代理层,基于WebServer进行实现,外部表现为WebServer的模块脚本层,基于WebServer传递过来的Web请求攻击的特点:攻击二象性:已知攻击与未知攻击攻击的两个维度:形式与漏洞完美防御思想:攻击防御思想:“黑”和“白”WAF的核心原理:运用‘黑’、‘白’思想特征匹配、漏洞签名对匹配结果进行响应(拦截、记录)”漏洞”一直存在着Struts2漏洞2013-07-18爆发,Apache,苹果官网相继被黑WAF只是Web安全的基础防御措施,属于相对的安全,不是绝对的安全!因为漏洞的未知性和攻击形式的多样性,以及大数据的复杂性,导致WAF不可避免存在误报和漏报……所以WAF需要修炼…….规则是针对攻击形式还是针对网站?白规则OR黑规则规则如何适应大量网站?自动化AND自学习白规则最大化拦截,误报最大化黑规则最小化拦截,误报最小化已知安全请求未知请求(拦截)应用层请求已知攻击请求(拦截)未知请求应用层请求我们的选择:放弃白规则,走上“黑规则”之路放弃日志自学习,选择”规则自动生成”富文本误报搜索框、论坛帖子、后台模板修改等特点:▪内容多样化,随机性大,很容易触发规则文件上传内容丰富,很容易触发注入、跨站规则静态正则规则的松散关键词与字符串傻傻分不清▪例子:aqbtest.com/vuln.php?data=selectnamefromuser▪SQL注入拦截规则:select.*from.*▪区分单词与字符串:\bselect(\b).*(\b)from(\b).*正则缺少逻辑性,执行路径单一一次只能匹配一种条件如PadingOracleAttack的检测:▪攻击过程:▪使用WebResource.axd?d=xyz进行漏洞探测,错误密文产生500错误,而正确密文产生404▪正则显然无力有效匹配文件、目录白名单POST协议区分对待application/x-multipart/form-data(文件上传,后门拦截规则)规则引擎逻辑化支持多条件组合判断SQL语法解析引擎解决关键词与字符串混淆SQL语法分析引擎(Sqlite的lemon)语法分析引擎:工作原理▪词法分析▪先将原始数据解析为单词元符号(token)▪语法解析▪然后对分解出来的单词符号进行语法树解析▪攻击判定▪如果语法树属于攻击或可正常执行语法树形式,那么即存在SQL注入攻击SQL语句Selectusername,passwordfromuserwhereid=$id攻击语句:1and1=2unionselect1,1fromuserE(操作关键字)(o)操作符k(SQL关键字)(n)基础标志符数字逻辑运算符数字操作符存在攻击形式或可正常执行的SQL语法树数字语法树解析:1&1UEoknU(操作关键字)大数据包绕过畸形数据包绕过大小写绕过编码绕过URL编码Unicode编码WebServer解码差异性绕过复参数绕过URL二次编码绕过数据库特性绕过注释符绕过冷门函数变量赋值。。。。。解码差异性绕过(WebServer)数据库特性绕过Mysql的特殊符号▪‘.’、‘!’、‘~’、‘+’、‘-’大牛,绕了我吧,别绕了!!再绕,我就喝死你看!!我要防御!!!数据传输层面▪畸形、恶意的HTTP数据包丢弃WebServer层面▪大小写不敏感▪利用WAF底层进行解码,然后进行规则匹配▪兼容多种后端WebServer对预留字符的特殊处理,让规则进行多路径匹配拦截脚本层面的绕过▪定制化规则(?)数据库层面的绕过▪SQL语句解析引擎最新的0day攻击和攻击形式的多样性▪关注最新漏洞和新型攻击,添加特征规则•报文解析•HTTP报文检查•HTTP数据包解析报文解析•解码•URL、Unicode•虚拟IIS解码处理•虚拟Apache解码解码•规则匹配•lua脚本解析引擎•SQL语法解析引擎规则匹配Thanks