文件上传绕过方法

绕过

前端验证绕过

对于前端验证的校验,可以直接修改前端 js ,添加允许PHP扩展名。
或者上传.gif 文件然后用burp抓包,修改文件修改成PHP。

mime 限制扩展名绕过

修改concent-type

服务端黑名单校验后缀名的绕过

黑名单的意思就是服务端不允许哪些后缀名通过,但是存在一定的遗漏,可以尝试以下的后缀名,更改大小写或双写。

php php3-5 phtml PHP pHp phtm pphphp

jsp jspx jspf

asp aspx asa cer

exe exee

phtml 被解析的条件是Apache的配置文件中 AddYtpe 去掉#号

伪静态文件绕过

先创建一个.htaccess文件上传上去
写入 SetHandler application/x-httpd-php 这样所有上传的文件都可以用php来解析执行
再上传一个恶意代码的图片文件
访问上传图片,webshell 执行成功

Apache的解析机制绕过

APACHE默认文件名中可以带.号,当解析文件遇到.号时,从右至左依次解析。比如:test.php.xxx.aaa,.xxx和.aaa这两种后缀是apache不可识别解析,apache就会把test.php.xxx.aaa解析成test.php

利用Windows操作系统的特性绕过

Winserver下的xx.jpg[空格] 或xx.jpg.这两类文件都是不允许存在的,若这样命名,windows会默认除去空格或点

所以可以利用windows默认取出后缀名的空格和点的特性,在上传文件后缀后面添加空格和点可以绕过。

利用Windows操作系统NTFS文件流格式的解析特性,在文件名后添加:: D A T A , 可 以 绕 过 。 虽 然 在 网 页 上 显 示 的 后 缀 是 带 有 : : DATA,可以绕过。 虽然在网页上显示的后缀是带有:: DATA,::DATA的,但在系统里面就没有后面的符号了,可以直接访问。

服务端白名单校验后缀名的绕过

00截断

主要存在于PHP 5.3.4以下的版本,通常存在于构造上传文件路径的时候。当服务器判断文件名后缀正常时,存入路径后便不再检查,这时候使用截断,服务器在存入路径的过程中识别到00后便抛去其后的字符。
通常使用%00或16进制0x00来截断。

服务器解析漏洞

iis5.x-6.x版本,默认不解析;号后面的内容,因此test.asp;.jpg就被当成asp文件解析;

nginx,在8.03版本以下,并且配置文件中cgi.fix_pathinfo开启为1,访问www.xxx.com/shell.jpg/1.php时,nginx会将shell.jpg当做shell.php进行解析(其中1.php是一个随意构造的不存在的文件)。

结合文件包含绕过

制作图片马,利用文件包含的漏洞来执行,将webshell和图片合二为一。
copy x.jpg/b + shell.php/a shell.jpg

检验上传文件内容

超大内容绕过

有些主机WAF软件为了不影响web服务器的性能,会对校验的用户数据设置大小上限,前面1M的内容为垃圾内容,后面才是真正的木马内容,便可以绕过WAF对文件内容的校验。

二次渲染绕过

二次渲染指的是服务器对上传的文件进行重塑,会改变原有内容,上传失败。这种情况就需要比较上传前和上传后的文件16进制数据的差异,在上传前后均没有变化的数据位置加入恶意代码。

先用开源代码生成一个1.png 文件,上传这个文件,被二次渲染并且改名为新的18233.png。直接通过文件包含访问/include.php?file=upload/18233.png&0=assert 执行成功。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值