文件上传漏洞是指用户上传了一个可以实行的脚本文件,并且可以通过该文件得到做事器的权限的一种漏洞。

(2)事理

网站Wb运用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实当代码没有严格校验上传文件的后缀和文件类型,此时攻击者就可以上传一个webshell到一个Web可访问的目录上,并将恶意文件通报给如PHP阐明器去实行,之后就可以在做事器上实行恶意代码,进行数据库实行、做事器文件管理,做事器命令实行等恶意操作。
还有一部分是攻击者通过Wb做事器的解析漏洞来打破Web运用程序的防护。

后缀为什么变成jsp文件下载文件上传破绽是什么这么通俗易懂的讲授真的很可贵 Java

2、文件上传漏洞的危害上传文件是病毒或木马时,紧张用于诱骗用户或者管理员下载实行或者直接运行。
上传文件是Flash的策略文件crossdomain.xml时,黑客用于掌握Flash在该域下的行为。
上传文件是钓鱼图片或者包含了脚本的图片,在某些版本的浏览器中会被作为脚本实行,被用于钓鱼和敲诈。

二、文件上传漏洞分类

1、客户端校验

js检讨:随便上传一个文件看是否会有提示,只许可什么格式的文件进行上传。

2、黑名单绕过

(1)扩展名绕过

这个就很大略便是利用burp 抓包改包。

先对web上传一个含有木马的txt文本,通过抓包改成后缀名为jsp/php/asp后缀的文件,这便是客户端校验。

(2)后缀大小写绕过

后缀名会显示造孽的时候,有时候可以考试测验大小写进行绕过 例如:PhP、pHP等等

例如:

text.php改为text.Phptext.PhP.......

(3)双层后缀绕过

web代码中会将可能存在漏洞的脚本文件后缀名进行过滤,大部分情形下只能过滤一层,以是可以考试测验双写后缀名进行绕过

例如:

text.php改为text.pphphp

(4)空格绕过

这个要理解ur编码,文件上传过程中,有时候会碰着一些情形,正常的php脚本不可以绕过,但是后面加上一个空格即可绕过,以是利用这个特性,可以进行上传。

例如:

1.php改为1.php (这里有一个空格,为了更直不雅观的看到我在这里备注一下)

(5)点绕过

这个要理解ur编码,文件上传过程中,有时候会碰着一些情形,正常的php脚本不可以绕过,但是后面加上一个点(.)即可绕过,以是利用这个特性,可以进行上传。

例如:

1.php改为1.php.(这里有一个空格,为了更直不雅观的看到我在这里备注一下)

(6)上传.htaccess

.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。
供应了针对目录改变配置的方法,即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,

以浸染于此目录及其所有子目录。
作为用户,所能利用的命令受到限定。
管理员可以通过Apache的AllowOverride指令来设置。

方法:直接上传这个文件,看是否可以得到权限。

(7)::$DATA绕过

在window的时候如果文件名+"::D A T A " 会 把 : : DATA"会把::DATA"会把::DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的便是不检讨后缀名.

方法:抓包改包

例如:

1.php改为1.php::DATA

3.白名单绕过

(1)web解析绕过

1.IIS

这里做事器职员进常用的是宝塔IIS

下载连接: IIS.

(1) 当建立.asa、.asp格式的文件夹时,其目录下的任意文件都将被IIS当作为asp文件解析。
(2) 当上传文件.asp;.jpg

IIS6.0会将文件当做asp文件解析。

2.Apache

如果对方中间件是apache属于低版本,我们可以利用文件上传,上传一个不识别的文件后缀,利用解析漏洞规则成功解析文件,个中的后门代码被实行。
例如:x.php.aaa.bbb.ccc.ddd,可以被当作php文件进行解析,从末了一个.ddd开始,apache不认识,就往前走,一贯到.php,这样即绕过了验证,有可以进行解析。

3.Nginx

上传可以上传的文件,在文件地址后加上/x.php,可以让文件以php代码去实行。

这里实在我个人的理解还是要多理解中间件的特性,其余须要多看一些技能帖,多复现一些漏洞。

(2)00截断绕过

0x00截断事理:

0x00是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个字符当做结束符。
系统在对文件名的读取时,如果碰着0x00,就会认为读取已结束。
这个可以用在对文件类型名的绕过上。
但要把稳是文件的16进制内容里的00,而不是文件名中的00.便是说系统是按16进制读取文件(或者说二进制),碰着ascii码为零的位置就停滞,而这个ascii码为零的位置在16进制中是00,用0x开头表示16进制,也便是所说的0x00截断。
%00是被做事器解码为0x00发挥了截断浸染。

(3)mime文件绕过

方法:抓包改包

客户端软件,区分不同种类的数据,例如web浏览器便是通过MIME类型来判断文件是GIF图片,还是可打印的PostScript文件。
web做事器利用MIME来解释发送数据的种类,

web客户端利用MIME来解释希望吸收到的数据种类。

三、漏洞修复1、漏洞修复的方法

(1)做事器配置问题

办理方法:重新配置做事器。

(2)开源编辑器问题

办理方法:如果新版本已经修复,直接升级新版本即可。

(3)本地上传文件限定绕过

办理方法:在做事器后端对可以实现绕过的文件进行过滤。

(4)设置文件上传的目录为不可实行

办理方法:只要web无法解析目录,那马纵然攻击者上传了脚本也没什么浸染,做事器不受任何影响。

(5)判断文件后缀的漏洞

办理方法:在判断文件类型的时候,利用MIME,Type后缀检讨,个中对图片的处理可以利用,压缩函数,或者resize函数,在处理图片时毁坏图片中包含额html代码。

(6)利用随机数改写文件名和文件路径

办理方法:文件上传要实行代码的情形下,则须要用户访问到这个文件才可以(在这里加入限定)。
在一些情形下,文件可以上传,但是无法访问。

(7)单独设置文件做事器的域名

办理方法:由于不同浏览器的策略不一样,客户端攻击就会失落效。

末了,如果我的文章对你有所帮助或者有所启示,欢迎关注"大众年夜众号(微信搜索"大众年夜众号:首席架构师专栏),里面有许多技能干货,也有我对技能的思考和感悟,还有作为架构师的验验分享;关注后回答 【口试题】,有我准备的口试题、架构师大型项目实战视频等福利 , 小编会带着你一起学习、发展,让我们一起加油!