上传绕过

Zss 发表于:

上传检测一般分为两种
客户端检测,服务器检测
客户端检测一般是前段js代码来判断限制,不符合规则则不会发送请求
服务器检测一般是黑白名单的方式

前端检测的机制容易绕过
1.可以直接修改js代码,去除判断函数或者是添加自己需要上传的php格式的代码
2.使用小提琴或者是Brupsuite来突破这种限制
小提琴只在win下面有,上传一个正常格式的文件,设置断点,此时截断了此数据包然后再修改文件名称
Brupsuite截断相关的数据包,修改数据包中文件名,再放包
3.自己使用request构造数据包完全不使用前端的相关操作

服务器绕过
1.MIME类型检测
使用Brupsuite抓包,修改数据包,Content-Type:text/plain 改成Content-Type:image/gif

2.图片马上传漏洞

3.上传路径修改
(1)上传文件的时候可以抓包修改Filepath的路径,利用解析漏洞,上传到x.asp文件夹(iis漏洞)
(2);号利用,在上传的filepath加入a.asp;访问时使用x.asp;x.jpg来访问时,会以asp来解析

4.文件头欺骗漏洞
文件内容第一行添加GIF89a,JFIF,PNG来上传
JPG = FF D8 FF E0 00 10 4A 46 4946
GIF = 47 49 46 38 39 61
PNG = 89 50 4E 47

5.文件扩展名检测(黑名单和白名单)
黑名单绕过
(1).大小写绕过,修改成PhP,AsP,等格式来上传,可能黑名单中的后缀名没有作严格的限制
(2).名单爆破
自定义一个能够想到的后缀名,PHP,Php,aSp,AsP…利用burpsuite加载列表替换后缀名来爆破
(3).由于某些系统在对文件名的读取时,如果遇到0x00,就会认为读取已结束。,是可以使用00截断漏洞,修改数据包中的文件名为x.php%00.jpg,使用burpsuite选择%00然后Ctrl+Shift+U

白名单绕过
(1).00截断

6.双文件上传
使用burpsuite抓包,将数据内容段复制,再次粘贴一份,修改其中的name==””和之前的需要区别开来,filename=””修改成cer,原理检测第一个没有检测第二个

7.二次渲染(把图片马中的代码去除了)
魔术图片案例