首页 > 电脑专区 > 电脑教程 >

杂谈绕过WAFWeb应用防火墙

来源:互联网 2023-02-20 23:36:24 270

这个议题呢,主要是教大家一个思路,而不是把现成准备好的代码放给大家。efX办公区 - 实用经验教程分享!

可能在大家眼中WAF就是不要脸的代名词。如果没有他,我们的“世界”可能会更加美好。但是事与愿违。没有它,你让各大网站怎么活。但是呢,我是站在你们的这一边的,所以,今天我们就来谈谈如何绕过WAF吧。之所以叫做“杂谈”,是因为我在本次演讲里,会涉及到webkit、nginx&apache等。下面正式开始:)efX办公区 - 实用经验教程分享!

工具/原料

  • WAF
  • webkit
  • 浏览器
  • fiddler
  • burp
  • 小明工具包
  • cookie工具

直视WAF

  • 1

    大小写转换法:efX办公区 - 实用经验教程分享!

    看字面就知道是什么意思了,就是把大写的小写,小写的大写。比如:efX办公区 - 实用经验教程分享!

    SQL:sEleCt vERsIoN();efX办公区 - 实用经验教程分享!

    XSS:sCrIpt>alert(1)/script>efX办公区 - 实用经验教程分享!

    出现原因:在waf里,使用的正则不完善或者是没有用大小写转换函数efX办公区 - 实用经验教程分享!

  • 2

    干扰字符污染法:efX办公区 - 实用经验教程分享!

    空字符、空格、TAB换行、注释、特殊的函数等等都可以。比如下面的:efX办公区 - 实用经验教程分享!

    SQL:sEleCt 1-1 vERsIoN /*!*/ ();`yoheheefX办公区 - 实用经验教程分享!

    SQL2:select/*!*/`version`();efX办公区 - 实用经验教程分享!

    XSS:下面一节会仔细的介绍efX办公区 - 实用经验教程分享!

    出现原因:利用网站使用的语言函数特性来绕过waf的规则或者使用会无视的字符efX办公区 - 实用经验教程分享!

  • 3

    字符编码法:efX办公区 - 实用经验教程分享!

    就是对一些字符进行编码,常见的SQL编码有unicode、HEX、URL、ascll、base64等,XSS编码有:HTML、URL、ASCLL、JS编码、base64等等efX办公区 - 实用经验教程分享!

    SQL:load_file(0x633A2F77696E646F77732F6D792E696E69)efX办公区 - 实用经验教程分享!

    XSS:script src="http://0300.0250.0000.0001">/script>efX办公区 - 实用经验教程分享!

    出现原因:利用浏览器上的进制转换或者语言编码规则来绕过wafefX办公区 - 实用经验教程分享!

  • 4

    拼凑法:efX办公区 - 实用经验教程分享!

    如果过滤了某些字符串,我们可以在他们两边加上“原有字符串”的一部分。efX办公区 - 实用经验教程分享!

    SQL:selselectectverversionsion();efX办公区 - 实用经验教程分享!

    XSS:scrscript>rialalertert/scr/script>riefX办公区 - 实用经验教程分享!

    出现原因:利用waf的不完整性,只验证一次字符串或者过滤的字符串并不完整。efX办公区 - 实用经验教程分享!

  • 4此文章未经授权抓取自百度经验
  • 5

    总结:efX办公区 - 实用经验教程分享!

    本节是告诉大家,waf总会有自己缺陷的,任何事物都不可能完美。efX办公区 - 实用经验教程分享!

  • 站在webkit角度来说绕过WAF

  • 1

    词法解析器:efX办公区 - 实用经验教程分享!

    可能这时会有人问到,说绕过WAF,怎么跑到webkit上去了。嗯,你没有看错,我也没有疯。之说以站在webkit角度来讲绕过WAF,是因为各个代码的功能是由浏览器来解析的。那浏览器中谁又负责解析呢?那就是webkit, 既然要说到webkit,那就不得不提webkit下的解析器——词法分析器,因为我们在绕过的时候,就是利用解析器中的词法分析器来完成。efX办公区 - 实用经验教程分享!

    就比如一个简单的绕过WAF的XSS代码:efX办公区 - 实用经验教程分享!

    iframe src="javaefX办公区 - 实用经验教程分享!

    script:al ert(1)" height=0 width=0 />iframe>!--Java和script是回车,al和ert是Tab换行符-->efX办公区 - 实用经验教程分享!

    他可以弹窗,可以为什么他可以弹窗呢?这里面有回车、换行符啊。想要理解,我们来看看webkit下的Source/javascriptcore/parser/lexer.cpp是怎么声明的吧。efX办公区 - 实用经验教程分享!

    while (m_current != stringQuoteCharacter) {efX办公区 - 实用经验教程分享!

    if (UNLIKELY(m_current == '\\')) {efX办公区 - 实用经验教程分享!

    if (stringStart != currentSourcePtr() && shouldBuildStrings)efX办公区 - 实用经验教程分享!

    append8(stringStart, currentSourcePtr() - stringStart);efX办公区 - 实用经验教程分享!

    shift();efX办公区 - 实用经验教程分享!

    LChar escape = singleEscape(m_current);efX办公区 - 实用经验教程分享!

    // Most common escape sequences firstefX办公区 - 实用经验教程分享!

    if (escape) {efX办公区 - 实用经验教程分享!

    if (shouldBuildStrings)efX办公区 - 实用经验教程分享!

    record8(escape);efX办公区 - 实用经验教程分享!

    shift();efX办公区 - 实用经验教程分享!

    } else if (UNLIKELY(isLineTerminator(m_current)))efX办公区 - 实用经验教程分享!

    shiftLineTerminator();efX办公区 - 实用经验教程分享!

    注意倒数第二行里的isLineTerminator函数。这里我来说说大致的意思:所有的内容都在一个字符串里,用while逐字解析,遇到换行就跳过。然后在拼成一个没有分割符的字符串,所以这时的XSS代码成功弹窗了。efX办公区 - 实用经验教程分享!

    Webkit里的词法分析器里除了跳过换行符,还会跳过什么字符呢?efX办公区 - 实用经验教程分享!

    子曰:还有回车等分隔符。efX办公区 - 实用经验教程分享!

    根据webkit词法分析器的机制,我们就可以写更多的猥琐xss代码。efX办公区 - 实用经验教程分享!

  • 2

    分词解析器注意事项:efX办公区 - 实用经验教程分享!

    iframe src="javaefX办公区 - 实用经验教程分享!

    script:al ert(1)" height=0 width=0 />iframe>!--这个可以弹窗-->efX办公区 - 实用经验教程分享!

    efX办公区 - 实用经验教程分享!

    iframe src=javaefX办公区 - 实用经验教程分享!

    script:al ert(1);height=0 width=0 />iframe>!--这个不可以弹窗-->efX办公区 - 实用经验教程分享!

    因为在webkit的词法分析器里,跳过回车、换行等分隔符时有个前提,那就是必须用单/双引号围住,不然不会跳过。因为如果不使用引号,词法分析器会认为 回车、换行就是结束了,如果你运行上面这段代码,webkit会把java当做地址传给src。词法分析器跳过的前提就是建立在引号里的,切记。efX办公区 - 实用经验教程分享!

  • 3

    分词解析案例:efX办公区 - 实用经验教程分享!

    回车、换行只在属性中引号里才会起作用。如果你对标签或者属性用 回车、换行,这时你大可放心,决对不会弹窗。而且在属性值里 回车、换行随便用。如果空格出现在xss代码里并不会弹窗,但是如果出现在字符和符号之前,就可以弹了。如图:efX办公区 - 实用经验教程分享!

    注意事项:efX办公区 - 实用经验教程分享!

    跳过回车和换行,不支持on事件。例如下面的代码efX办公区 - 实用经验教程分享!

    a href="java script:alert(1)">xss/a>会弹窗,但是下面的代码就不行了efX办公区 - 实用经验教程分享!

    a href="#" onclick="aler t(1)">s/a>可见加了Tab换行,就无法弹窗了。但是还是支持字符和符号之间加入空格的。efX办公区 - 实用经验教程分享!

    本节就是告诉大家,想要玩的更好,最好追溯到底层,从底层来看攻击手法,你会发现很多问题迎刃而解。efX办公区 - 实用经验教程分享!

    杂谈绕过WAFWeb应用防火墙efX办公区 - 实用经验教程分享!

  • 利用Nginx&Apache环境 BUG来绕过waf

  • 1

    这个bug比较鸡肋,需要在nginx&apache环境,而且管理员较大意。efX办公区 - 实用经验教程分享!

    这是一个不是bug的bug。efX办公区 - 实用经验教程分享!

    当网站采用前端Nginx,后端Apache时,需要在conf配置,当遇到PHP后缀的时候,把请求交给Apache处理。但是Nginx判断后缀是否为PHP的原理是根据URL的。也就是说如果当URL的后缀不是PHP的时候,他并不会把PHP教给Apache处理。efX办公区 - 实用经验教程分享!

    配置:efX办公区 - 实用经验教程分享!

    杂谈绕过WAFWeb应用防火墙efX办公区 - 实用经验教程分享!

  • 2

    乍一看,没什么问题。但是这里隐藏一个漏洞。efX办公区 - 实用经验教程分享!

    我在test目录建立一个index.php:efX办公区 - 实用经验教程分享!

    利用nginx&apache这个bug,再加上浏览器默认会隐藏index.php文件名,那么漏洞就来了。efX办公区 - 实用经验教程分享!

    访问a.cn/test/index.php?text=script>alert(1)/script>不会弹窗,被waf.conf给拦截了。efX办公区 - 实用经验教程分享!

    访问a.cn/test/?text=script>alert(1)/script>会弹窗,没有被waf.conf给拦截,因为nginx根据URL判断这不是php文件,并没有交给apache处理,也就没有走第三个location流程。efX办公区 - 实用经验教程分享!

    本节是告诉大家,绕过WAF不用一直针对WAF,也可以利用环境/第三方的缺陷来绕过。efX办公区 - 实用经验教程分享!

    杂谈绕过WAFWeb应用防火墙efX办公区 - 实用经验教程分享!

    杂谈绕过WAFWeb应用防火墙efX办公区 - 实用经验教程分享!

  • 从HTTP数据包开始说起

  • 1

    现在有一部分网站waf是部署在客户端上的,利用burp、fiddler就可以轻松绕过。efX办公区 - 实用经验教程分享!

    很多时候我们遇到的情况就像这段代码一样:efX办公区 - 实用经验教程分享!

    input type="text" name="text">efX办公区 - 实用经验教程分享!

    input type="submit" onclick="waf()">efX办公区 - 实用经验教程分享!

    把waf规则放到js里。我们可以提交一个woaini字符串,然后用burp、fiddler抓包、改包、提交,轻轻松松的绕过了客服端的WAF机制。efX办公区 - 实用经验教程分享!

  • 2

    有的网站,他们对百度、google、soso、360等爬虫请求并不过滤,这时我们就可以在USER-Agent伪造自己是搜索引擎的爬虫,就可以绕过wafefX办公区 - 实用经验教程分享!

  • 3

    有的网站使用的是$_REQUEST来接受get post cookie参数的,这时如果waf只对GET POST参数过滤了,那么久可以在数据包里对cookie进行构造攻击代码,来实现绕过waf。efX办公区 - 实用经验教程分享!

  • 4

    有的waf对GET POST COOKIE都过滤了,还可以进行绕过。怎么绕过呢?efX办公区 - 实用经验教程分享!

    假设网站会显示你的IP或者你使用的浏览器,那么你就可以对IP、user-agent进行构造,在PHP里X_FORWARDED_FOR和HTTP_CLIENT_IP两个获取IP的函数都可以被修改。efX办公区 - 实用经验教程分享!

  • WAF让你无视所有的VIP

  • 1

    总结:efX办公区 - 实用经验教程分享!

    很多人认为绕过WAF需要根据WAF的规则来绕过。但是我们可以忽视他,进行攻击。我们利用第三方插件来进行攻击,因为第三方插件的权限非常大,而且他有一个特殊的性质,就是他可以跨域。efX办公区 - 实用经验教程分享!

  • 2

    我们可以事先在插件里调用一个js代码,对方安装之后浏览任何网站都可以被XSS。efX办公区 - 实用经验教程分享!

    我们现在来看段Maxthon插件的源码:efX办公区 - 实用经验教程分享!

    def.JsonefX办公区 - 实用经验教程分享!

    test.js:efX办公区 - 实用经验教程分享!

    统一放在一个文件夹里,再用Mxpacke.exe生成一个遨游插件。efX办公区 - 实用经验教程分享!

    双击就可以安装这个插件。efX办公区 - 实用经验教程分享!

    。这不算是一个漏洞,因为插件必须要运行js代码,而XSS的宗旨就是 在网站里运行你所指定的js代码。efX办公区 - 实用经验教程分享!

    所以,这个xss没办法修复,而且chrome 火狐 等浏览器都存在。efX办公区 - 实用经验教程分享!

    杂谈绕过WAFWeb应用防火墙efX办公区 - 实用经验教程分享!

    杂谈绕过WAFWeb应用防火墙efX办公区 - 实用经验教程分享!

    杂谈绕过WAFWeb应用防火墙efX办公区 - 实用经验教程分享!

    杂谈绕过WAFWeb应用防火墙efX办公区 - 实用经验教程分享!

    杂谈绕过WAFWeb应用防火墙efX办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!efX办公区 - 实用经验教程分享!


    标签: 安全破解防火墙

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码