常见文件上传漏洞前后端绕过

注意在文件上传之前,首先要搞定支持的服务端脚本是啥,可不是什么网站都是php哦,还有jsp、asp、asp.net、jsp等等

1.前端(客户端)检验绕过


1)使用FireBug调试

将上传事件绑定的onsubmit事件(内含有判断文件类型的js程序)给去掉,即可绕过js函数验证

2)本地构造html上传

在已知文件上传的接口之后,自己写个html(action属性值就写接口url),上传文件,无需前端验证

3)BP中间人构造

先上传正常的文件扩展名(代码是webshell代码),然后利用webshell抓包,将合法的扩展名改为对应服务器支持脚本的扩展名例如 .jpg---->.php 再放包

注意:如果文件为asdfjkl.jpg 修改成了 1.php则对应content-length也要减去6(7-1),否则可能会上传失败

4)上传图片马

如果jpg文件是合法的则可以配合一些工具,或者windows直接cmd命令,把webshell写到图片里面再配合解析漏洞运行

.

2.后端(服务端)检验绕过


1)黑名单绕过

将不同扩展名都试一遍:jsp、asp、php、php5、asa、aspx、cer......

除此之外,如果确定是windows系统,则文件后缀名可以是"jsp."、"jsp_"、"jsp "(空格)

如果是阿帕奇的"phpml"、"php3"可以解析为php

大小写绕过: "Php"

2)白名单绕过

上传带有木马的xxx.asp;1.jpg 配合IIS6.0的解析漏洞当作asp执行

3)MIME类型验证绕过

如果上传php文件,则数据包中的content-type则为application/php

发现之后将会组织上传,但是如果改为 image/jpeg说不定就能成功上传了

4)上传到其他目录配合解析漏洞

前端或者抓包的方式修改文件上传的地址,使上传至pentest.asp目录下,配合IIS6(目录下的文件都会视为asp文件执行)上传图片马即可

5)00截断

文件上名为1.asp空格1.jpg 利用bp抓包修改十六进制数20改为00,再发送数据包,即可成功上传

6)扩展名加上::$DATA

上传文件名为 1.php::$DATA 有可能就不会检测扩展名

7)扩展名加上\x0A

1.php\x0A 即加一个换行符绕过

8)一次性过滤的绕过

如果程序会过滤点"php" 则可以尝试1.pphphp 过滤一次之后 -----> 1.php

9)垃圾数据溢出(慎用)

利用数据包中的Content-Disposition name filename等参数之间加入垃圾数据

例如:name="xxx";大量垃圾数据asdfasdf;filename=""

注:请谨慎使用该方法,严重的话可能造成服务器崩溃

10)waf引号匹配缺陷绕过

有的waf是去匹配filename=""的引号,可是尝试引号不闭合 没有引号

例如:filename="1.php     filename =1.php

11)waf分号匹配缺陷绕过

filename="x.jpg;1.php"此例中waf只会检验分号前面的内容是否合法就不会检验后面的1.php,成功上传之后就是后缀名为php文件了

12)编辑器漏洞

很多具有文件上传功能的页面,会直接使用一些编辑器,比如kindeditor等xxxeditor,可以试试这些编辑器历史的漏洞尝试能否利用

文件上传成功之后并不是就大功告成了,仅仅是上传了恶意脚本文件有的平台是不收的,会让你去证明文件可被解析并getshell,否则被视为无危害,或者钓鱼型漏洞不收,因此还需要做以下判断:

文件上传地址、文件是否可被解析、文件是否被删除、文件是否更名、文件是否可被访问


欢迎大佬多多纠正,多多补充,多多评论!!
 

感谢观看,希望对您有用!!


猜你喜欢

转载自blog.csdn.net/qq_63217130/article/details/130223419
今日推荐