协议走私WAF绕过

极客

协议走私WAF绕过:我的血泪攻防实录,这坑我是真踩过!

哎,兄弟们,今天咱们不聊虚的,就聊聊我最近在实战中踩得最深的那个坑——协议走私WAF绕过,说实话,这玩意儿真的让我又爱又恨,爱的是它那神奇的绕过效果,恨的是当初为了搞懂它,我头发都薅掉了一大把!你要是也觉得WAF固若金汤,那这篇文章你可千万得看下去,我保证让你对“规则”这俩字有全新的认识。

你是不是也遇到过这种情况?明明payload写得天衣无缝,SQL注入的‘or 1=1’、XSS的<script>,往WAF那一送,直接给你拦成筛子,那时候我就在想,这WAF是神啊?怎么啥都能防?直到我接触了HTTP协议走私,才恍然大悟——原来咱们根本不是在跟安全设备较劲,而是在跟协议解析的差异玩捉迷藏呢!

协议走私到底是个啥? 通俗点讲,就是利用前端代理(比如Nginx)和后端服务器(比如Apache)对HTTP请求解析的规则不一致,偷偷塞进去一段“夹带私货”的请求数据,你寻思啊,WAF它盯着的是标准请求,哪会料到你在Content-LengthTransfer-Encoding这俩兄弟身上动刀子?

我还记得我第一次实操的时候,那心情就像坐过山车,我构造了一个简单的CL.TE走私包,就在Content-Length里把请求长度设成正常值,但是又在末尾塞了一个Transfer-Encoding: chunked的数据块,原本以为会被WAF直接判死,结果呢?代理服务器一看Content-Length就放行了,后端却按chunked解码,硬生生把我的恶意代码拼到了下一个请求里,那叫一个丝滑啊!

但这里得给你泼盆冷水——纸上谈兵容易,实操翻车那才叫一个惨,有时候你按照文章里写的搭建环境,怎么打都成功,可一到真实目标,白屏、502、或者直接被封IP,心态直接爆炸,我就在一个测试站上踩过坑,明明本地复现完美,一到目标站就因为一个Connection: keep-alive的标头问题被卡住,憋屈得我当时真想砸键盘!

后来我总结出来了,搞协议走私WAF绕过,关键不在于你背了多少payload,而在于你要摸透两个“人”的脾气,前端是个急性子,只看Content-Length;后端是个慢性子,偏信Transfer-Encoding,你要做的就是当那个中间商,两头骗!比如利用TE.CLTE.TE,或者混淆大小写、加空格、加换行符,这些花活都是为了制造解析差异,当WAF还在傻乎乎地检查那个明面上的包时,后端已经把真货都给吞下去了。

不过呢,我也得掏心窝子说一句,这招虽然爽,但千万别乱用,毕竟现在主流云WAF和CDN大多都有连接池复用检测,你一个包没打对,被人家动态协议学习机制盯上,别说绕过,连个正常请求都可能给你拦了,我见过太多哥们儿,一听说走私牛逼,管他三七二十一就往上冲,结果被WAF反手把整个IP段都给封了,那叫一个social death啊!

文章写到这里,心里其实还挺感慨的。 从最初的无脑堆payload,到现在会去分析代理与服务器的行为逻辑,这个过程真的比绕过本身更有价值,协议走私WAF绕过就像是在雷区里跳芭蕾,你得知道哪一步该轻、哪一步该重,稍有差池,就粉身碎骨。

我把自己收集整理的一些关于HTTP协议走私和WAF绕过的典型案例放在这了,点击协议走私WAF绕过详细分析就能看到,这也是我踩坑无数后的心血总结,希望能让你少走点弯路,里面的环境搭建和检测思路,确实帮了不少人开窍。

协议走私WAF绕过

行了,今天就跟大伙儿唠这么多,如果你也对网络安全这块感兴趣,不管是想学东西还是想找同好交流,学习网络安全可以加QQ:3382681,咱们一起探讨攻防技术,分享实战干货!下次咱们再聊聊别的骚操作,不过记住,搞技术可以狂,但做人要稳,有授权再动手,别把红队技术干成了黑产工具,共勉吧!

文章版权声明:除非注明,否则均为咸鱼-即刻攻防原创文章,转载或复制请以超链接形式并注明出处。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码