【文件上传】绕过总结

一般绕过会分为黑名单绕过、白名单绕过、特殊类型绕过

以下为文件上传后缀绕过

黑名单绕过

1、大小写绕过

eg :   a.JSP、a.Jsp 、a.jsP、a.jSP等等

2、空格绕过

一般保存文件名前后带空格,保存时都会被忽略掉

而php在传输中,可识别

eg:黑名单过滤中只有".php",没有".php "、“ .php”

 空格filename.php
filename.php空格

3、点号绕过

文件后缀加点,保存后系统自动过滤末尾的点

eg:"a.php.",黑名单没有对"php."过滤,则绕过

4、::$data绕过(只适用于windows)

a.php::$data   相当于访问a.php

ab:a.php::$data    相当于访问ab文件夹下的a.php

eg: a.php改为 a.php::$data

5、单次过滤绕过

思路:已知过滤规则,假如都是过滤一次,则可尝试两次绕过

6、后缀双写绕过

场景:过滤规则检测到黑名单后缀时,将文件名中对应后缀删除的情况

eg:a.pphphp 从左到右识别,识别第二到第四位的php时,即"pphphp",判定后缀名存在黑名单,将识别到的php删除,后缀只剩下字符组合php,故此时变为a.php

程序认为处理完毕,不拦截,故绕过

白名单绕过

1、MIME类型绕过

MIME多用途网络邮件扩展类型,称为Content-type

eg:若后台根据MIME判断文件类型,则存在绕过

改为没允许上传的类型,即可绕过验证

2、路径栏00截断绕过

条件:

1)php版本<5.3

2)配置文件php.ini中magic_quotes_gpc必须为off,上传路径可控

原理:

0x00是字符串的结束标识符

攻击者可利用手动添加标识符的方式将后面的内容进行截断,标识符后面的内容可以帮我们绕过检测

%00是结束符的url编码格式

eg:允许上传.jpg,不允许上传.php,如何绕过传.php一句话木马呢?

选中a.php(写入一句话木马)上传并抓包,修改文件保存路径和文件名

保存路径(带参数:/upload/test/index.php?save_path=../upload/aa.php%00):../upload/   改  ../upload/aa.php%00

文件名(filename):a.php  改 a.jpg

最后会拼接为:../upload/aa.php%00a.jpg

过滤规则只对文件名生效,目标允许jpg上传,可绕过

3、数据栏00截断绕过

路径作为数据传入,使用00截断,不能使用%00(文件保存路径是作为数据传输,而不是URL中)

00截断方法:

1)文件保存路径添加文件名+任意符号

../upload/test.php;

2)修改文件名的后缀为允许上传的后缀(及白名单中的内容)

上传的test.php可以修改为test.jpg

3)将特殊符号";"的16进制编码修改为00

【文件上传】绕过总结_第1张图片

 【文件上传】绕过总结_第2张图片

 此时发包就可以绕过一些过滤

4、图片马检测绕过

图片马

特殊类型绕过

你可能感兴趣的:(网络安全)