文件上传及绕waf扩展思路

1、换行

在这里插入图片描述

2、多个等于号

在这里插入图片描述

3、单双引号替换

在这里插入图片描述

4、去掉引号

在这里插入图片描述

5、溢出Content-Disposition字段

在这里插入图片描述

6、多个Content-Disposition字段

在这里插入图片描述

7、畸形协议

在这里插入图片描述

8、boundary前加减空格

在这里插入图片描述

9、删除Content-Type: image/jpeg

在这里插入图片描述

10、溢出文件名

在这里插入图片描述

11、Accept-Encoding:

Accept-Encoding设置在请求头当中,会告诉服务器,我可以接受哪种编码压缩。
Content-Encoding设置在响应头中,会告诉客户端,我用的是哪种编码压缩。但是也可以放在Header头上
Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: identity
Accept-Encoding: *

12、分块传输

在这里插入图片描述

13、windows文件命名规范来绕过

众所周知,win的文件名是不能包含以下字符的
在这里插入图片描述
但是上传的时候我们可以构造,尝试使用(正反)斜杠、星号、冒号(冒号会将文件内容置空)、问号、|、<>绕过
在这里插入图片描述

14、三个左尖括号可以写入文件

四个也可以
在这里插入图片描述

15、尖括号代替点

在这里插入图片描述

16、…/进行跨目录上传

Get:在上传路劲处../upload/1.php%00
Post:对../upload/1.php后进行16进制hex修改为00

17、非路径截断

1.php;jpg
1.php%00.jpg
1.php/00.jpg

18、测试是否存在多个上传接口(删除或增加)

OSS这些,遇到这类接口,可以尝试更改OSSfile,test,或者删除oss,只留upload做尝试,同理也可对三级目录进行z

首先借用阿里云oss首页的介绍性文字来解释下oss是什么:
海量、安全、低成本、高可靠的云存储服务,提供99.99999999%的数据可靠性。
使用RESTful API 可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化存储成本。简单可以理解为企业自身的文件存储服务器。
问题出在站点的上传功能,存在任意文件上传,但因为上传到的是oss或文件存储服务器,所以不论是什么类型的脚本都是不解析的,访问会直接下载回来,
那作为开发者会高枕无忧了吗?然并卵,我还可以上传一个内容存在xss payload的hack.html的文件,服务器便会静态文件进行解析;
重点来了,可能企业在使用oss服务时,使用的域名是img-oss.yourcompanydomain.com,而在你公司的sso或产品为了跨域在开发时set-cookie:*.yourcompanydomain.com,
那攻击者就可以拿着img-oss.yourcompanydomain.com/hack.html找对应的场景或发给公司的员工,打开后cookie可能就被“借”走了

总结两点:

1、任意文件上传;
2、站点可以跨域

OSS

19、更改字段内容

在这里插入图片描述

20、中间件漏洞绕过

Apache HTTPD 换行解析漏洞(CVE-2017-15715) 2.4.0~2.4.29版本 【windows系统不行】
Apache HTTPD 多后缀解析漏洞
Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7 文件名逻辑漏洞(CVE-2013-4547)
Nginx 解析漏洞  (1.jpg/.php)

21、换行+Transfer-Encoding: chunked

22、遇到base64上传,修改:data:image/jpeg;

如:application/x-php
   image%2Fjpg”改成"image%2Fphp

在这里插入图片描述

23、filename改造、name改造(和filename差不多)

名字特殊符号替换以及构造异常闭合

filename='shell.jspx.jsp'
filename=shell.jspx.jsp
filename=shell.jspx.jsp'
"filename"=shell.jspx;

重写

filename=shell.jpg;filename=shell.jspx;
filename=shell.jspx;filename=shell.jpg;

大小写变化

FileName=shell.jspx.jsp'

参数污染

FileName=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaashell.jspx.jsp'
FileName =shell.jspx(加空格)
filename===="shell.jspx.jsp1"(加等号)
FileName =shell.jspx(前后加空格,中间也可以加特殊符号fuzz)

文件名字编码(filename一般为后端接收参数,编码了可能识别不到,这个就看情况)

filename=\u0073\u0068\u0065\u006c\u006c\u002e\u006a\u0073\u0070

回车换行(有时候确实挺好用的,任意位置都可以试一下)

FileName=shell.jspx.
jsp

File
Name=shell.jspx.jsp'
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值