文件上传详解

文件上传概念

       文件上传是由于对上传文件未作过滤或过滤机制不严(文件后缀或类型),导致恶意用户可以上传脚本 文件,通过上传文件可达到控制网站权限的目的。

文件上传原理

        文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。

webshell

        一种网页后门,以asp、php、jsp等网页文件形式存在的一种命令执行环境。

webshell概念

        利用文件上传漏洞,通过向服务端提交一句简短代码,配合本地客户端实现webshell功能。

webshell特性

        变形多,易隐藏、难发现。

常见的文件上传点

        大部分的网站和应用系统都有上传功能,如用户头像上传,图片上传,文档上传等。

webshell分类

        webshell又称脚本木马,一般分为大马、小马、一句话木马

文件上传详解_第1张图片

文件上传上传点需要的条件

1、木马上传成功,未被杀;

2、知道木马的路径在哪;

3、上传的木马能正常运行(解析)。

文件上传绕过

绕过JS验证

利用浏览器的审查工具直接删除掉JS代码之后就可以绕过JS验证。

绕过MIME-Type验证

MIME介绍

        MIME是设定某种扩展名的文件用一 种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。

MIME-Type检测原理

        服务端MIME类型检测是通过检查http包的Content-Type字段中的值来判断上传文件是否合法的。部分网 站上传功能只对文件类型做了判断,抓包修改文件类型可绕过限制。若只允许上传图片,则文件类型可 为image/jpeg, image/png等。

Burpsuite绕过MIME-Type验证

        利用Burpsuite工具截断HTTP请求,在Repeater重放修改MIME-Type类型绕过验证。image/jpeg。

绕过黑名单验证

文件后缀名验证

介绍

对于文件上传模块来说,尽量避免上传可执行的脚本文件。为了防止上传脚本需要设置对应的验证方式。 最简单的就是设置文件后缀名验证。

分类

1、白名单验证:只针对白名单中有的后缀名

2、黑名单验证:只针对黑名单中没有的后缀名

.htaccess文件

        通过htaccess文件,可 以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录 的访问、禁止目录列表、配置默认文档等功能。

大小写绕过

        wiindows对于文件名中的大小写不敏感;Linux对于文件名中的大小写敏感。

空格绕过

        Windows系统下,对于文件名中空格会被作为空处理,程序中的检测代码却不能自动删除空格。从而绕过 黑名单。

点号绕过

        Windows系统下,文件后缀名最后一个点会被自动去除。

特殊符号绕过

        Windows系统下,如果上传的文件名中test.php::$DATA会在服务器上生成一个test.php的文件,其中内容 和所上传文件内容相同,并被解析。

路径拼接绕过

        在没有对上传的文件进行重命名的情况下,用户可以自定义文件名并在服务器中上传新建,就会造成对应的绕过黑名单。

双写绕过

        代码编写过程中,只对黑名单中的内容进行空替换,因为只替换一次所以造成双写绕过。

白名单绕过(00截断)

原理

        00截断是操作系统层的漏洞,由于操作系统是C语言或汇编语言编写的,这两种语言在定义字符串时,都 是以\0(即0x00)作为字符串的结尾。操作系统在识别字符串时,当读取到\0字符时,就认为读取到了一 个字符串的结束符号。因此,我们可以通过修改数据包,插入\0字符的方式,达到字符串截断的目的。00 截断通常用来绕过web软waf的白名单限制。

条件

php版本小于5.3.29

magic_quotes_gpc = Off

进阶版上传绕过

图片webshel

        在服务端的PHP代码中,对于用户上传的文件做文件类型检查,查看文件格式是否符合上传规范。可以检查文件二进制格式的前几个字节,从而判断文件类型是否正确。

竞争条件

        条件竞争漏洞是一种服务器端的漏洞,是由于开发者设计应用程序并发处理时操作逻辑不合理 而造成。当应用面临高并发的请求时未能同步好所有请求,导致请求与请求之间产生等待时出 现逻辑缺陷。该漏洞一般出现在与数据库系统频繁交互的位置,例如金额同步、支付等较敏感 操作处。另外条件竞争漏洞也会出现在其他位置,例如文件的操作处理等。

原理

        条件竞争的原理便是不断地上传文件,并且不断地在浏览器访问文件,当访问速度比删除速度更 快时,文件会被浏览器访问成功,这时候文件处于“打开”的状态,这个状态无法删除文件,因此木 马文件成功保存在目标服务器中。

文件上传的危害

1、攻击者可获得网站控制权限

2、查看、修改、删除网站数据

3、通过提权漏洞可获得主机权限

文件上传的防御措施

1.扩展名(后缀)黑白名单

2.MIME类型校验(image/gif)

3.文件内容头校验(GIF89a)

4.对文件内容进行二次渲染

5.对上传的文件重命名,不易被猜测

6.不要暴露上传文件的位置

7.禁用上传文件的执行权限

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