全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

常见6种WAF绕过和防护原理

发布时间:2022-09-30 14:59:17
发布人:wjy

  今天就聊聊关于上传绕过WAF的姿势,WAF(Web Application Firewall)简单的来说就是执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。

  上传绕过不算什么技术了,正所谓未知防,焉知攻,先来了解一下网站的防御措施吧!

  一、Bypass Waf

  1.一般开发人员防御策略

  客户端javascript校验(一般只校验后缀名)服务端校验1>文件头content-type字段校验(image/gif)2>文件内容头校验(GIF89a)3>后缀名黑名单校验4>后缀名白名单校验5>自定义正则校验6>WAF设备校验(根据不同的WAF产品而定)。

  2.Bypass

  2.1 有些waf不会防asp/php/jsp后缀的文件,但是他会检测里面的内容。

  eg1:

  1.先上传一个内容为木马的txt后缀文件,因为后缀名的关系没有检验内容

  2.然后再上传一个.php的文件。

  此时,这个php文件就会去引用txt文件的内容,从而绕过校验,下面列举包含的语法:

常见6种WAF绕过和防护原理1

  访问shell.php就可以执行php代码 尝试修改压缩文件后缀为zip、phar、rar发现都是可以的。

  2.2 WTS-WAF Bypass

常见6种WAF绕过和防护原理2

  2.3 Baidu cloud Bypass

  发现百度云目前正在拦截后缀,百度云过上传还跟?php前面是否有代码还有很大关系,在这里就不要废话了,大家自己去研究一下吧。

常见6种WAF绕过和防护原理3

  百度云绕过就简单的很多很多,在对文件名大小写上面没有检测php是过了的,Php就能过,或者PHP,一句话自己合成图片用Xise连接即可。

  2.4 阿里云WAF

  Content-Disposition: form-data; name=“img_crop_file”; filename="1.jpg .Php"Content-Type: image/jpeg

  Bypass:

  Content-Disposition: form-data; name=“img_crop_file”; filename=“1.php”

  Note:你看的没错,删除Content-Type: image/jpeg即可绕过。

  2.5 安全狗上传Bypass(最新版不可绕)

  Content-Disposition: form-data; name=“image”; filename="085733uykwusqcs8vw8wky.png"Content-Type: image/png

  Bypass:

  Content-Disposition: form-data; name=“image”; filename=“085733uykwusqcs8vw8wky.png

  C.php”

  Note:删掉ontent-Type: image/jpeg只留下c,将.php加c后面即可,但是要注意额,双引号要跟着c.php".原理就不多说了,自己研究。

  2.6 云锁上传Bypass

  Content-Disposition: form-data; name=“up_picture”; filename=“xss.php”

  二、Defense

  详细说一下Type绕过防御机制,其他的防御机制自己可以下去研究。

  1.目录设为不可执行:

  只要web容器无法解析该目录下的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,所以此点至关重要。

  2.判断文件类型:

  判断文件类型时,应结合MIME-Type、后缀检查等方式、推荐使用白名单的方式。

  3.用随机数改写:

  文件上传如果要执行代码,则需要用户能访问到这个文件。在某些环境下,用户能上传,但是不能访问。

  三、Summary

  研究WAF的绕过手段,是为了更好的提升WAF的防御能力。在研究突破的过程中,不要只是仅仅停留在正则表达式、基本漏洞原理,需要对涉及并深入更多的领域,例如HTTP协议理解和PHP、Tomcat对HTTP协议源码分析,MySQL词法分析,和Fuzz的思路等。在此过程中,会有许多乐趣,也会有各方面能力的提升。\

相关文章

敏捷开发和迭代式开发的根本区别是什么?

敏捷开发和迭代式开发的根本区别是什么?

2023-10-14
flutter和uni-app在应用层面有什么区别?

flutter和uni-app在应用层面有什么区别?

2023-10-14
Flutter和 qt的区别都有什么?

Flutter和 qt的区别都有什么?

2023-10-14
rnn和lstm中batchsize和timestep的区别是什么?

rnn和lstm中batchsize和timestep的区别是什么?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取