文件上传深度剖析

概述

文件上传深度剖析_第1张图片

上传流程

文件上传深度剖析_第2张图片

 

前端绕过

前端的js做了限制

我们找到上传点不急着上传文件,先看看控制台是不是前台用js做了限制只能上传jpg,png等

文件上传深度剖析_第3张图片

看到有个onchange参数  我们看看页面源码

文件上传深度剖析_第4张图片

果然只是通过前端的js验证

这个时候我们在控制台里面把onchange参数设置为空  上传个php文件试试

文件上传深度剖析_第5张图片

上传php文件

文件上传深度剖析_第6张图片

上传成功

 

后台绕过

content-type做了限制

文件上传深度剖析_第7张图片

绕过MIME验证

我们找到上传点,上传一个jpg的文件抓包  看content-type是什么

文件上传深度剖析_第8张图片

此时我们看到content-type是image/png

这个时候回显是文件上传成功

但是我们如果上传一个php文件呢

文件上传深度剖析_第9张图片

回显是text/php 此时回显的上传文件不符合要求

这个时候我们上传php文件,把content-type修改为 image/png

文件上传深度剖析_第10张图片

此时回显上传成功

绕过getimagesize验证

这个验证是16进制验证了上传文件的头信息和文件的大小

我们使用xxd来看一下正常图片的头部信息

文件上传深度剖析_第11张图片

这个时候上传图片格式回显上传成功,但是上传php文件就会回显上传不符合要求

次数我们就要使用图片木马了

文件上传深度剖析_第12张图片

这个就不用说了  图片木马肯定可以上传成功了

文件上传深度剖析_第13张图片

 

此时虽然上传成功了,但是这个图片木马却不能执行,这个时候就显得这个漏洞很鸡肋

但是我们找到了这个站还存在文件包含的漏洞,来一波漏洞组合拳吧

文件上传(图片马)+文件包含(本地包含)

上面提到了图片马已经上传成功,路径也回显出来了

文件上传深度剖析_第14张图片

但是这个路径是不全的我们要加上上传目录的路径,构造一个新的路径

文件上传深度剖析_第15张图片

 

此时我们找到存在文件包含的位置

文件上传深度剖析_第16张图片

然后把这个路径修改为图片马的路径,同时我们不确定是不是图片马的路径是不是文件包含的子目录,所以我们要使用../来跳出这个目录直到跳到图片马在服务器的绝对路径

../这个可以试着去跳,一个不行就用两个

文件上传深度剖析_第17张图片

此时我们可以看到加了两个../之后就找到了图片马的绝对路径,因为我们图片马里面加是代码而不是shell所以就直接执行了这段代码

防御

文件上传深度剖析_第18张图片

 

 

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