您现在的位置是:首页 >其他 >常见文件上传漏洞前后端绕过网站首页其他
常见文件上传漏洞前后端绕过
注意在文件上传之前,首先要搞定支持的服务端脚本是啥,可不是什么网站都是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.phpx0A 即加一个换行符绕过
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,否则被视为无危害,或者钓鱼型漏洞不收,因此还需要做以下判断:
文件上传地址、文件是否可被解析、文件是否被删除、文件是否更名、文件是否可被访问