任意文件上传漏洞

时间:2021-09-20
本文章向大家介绍任意文件上传漏洞,主要包括任意文件上传漏洞使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、介绍

原因是服务器配置不当或者没有进行足够的过滤,用户可以上传任意文件,包括恶意脚本文件、exe程序等,这就造成了文件的上传漏洞。

其中一种引起文件上传漏洞的原因是:变量覆盖(需要代码审计)。

危害:

如果web服务器所保存上传文件的可写目录具有执行权限,那么就可以直接上传后门文件,导致网站沦陷。如果攻击者通过其它漏洞进行提权操作,拿到系统管理权限,那么直接导致服务器沦陷。同服务器下的其他网站无一幸免,均被攻击控制。

通过上传漏洞获得的网站后门,就是webshell。

漏洞利用条件:

1.web服务器要开启文件上传功能,并且上传api(接口)对外开放(web用户可访问);

2.Web用户对目标目录具有可写权限,甚至具有执行权限,一般情况下,web目录都有执行权限。

3.上传文件可执行,web可以解析上传的脚本。

4.无视以上条件的情况就是服务器配置不当,开启了put方法。

二、webshell

shell俗称“壳”,指为“使用者提供操作界面”的软件(命令解释器)。类似于windows的cmd.exe或者Linux下bash等。

Webshell是一个网站的后门,也是命令解释器,以web方式(Http协议)传递命令信息。本质上是在服务器端可运行的脚本文件,后缀名为.php/.asp/.aspx/.jsp等,也就是说webshell接收来自web用户的命令,然后在服务器端执行。

大马:Webshell可以是大马,也是网站木马。代码量比较大。

小马:一句话木马。代码量比较小。

利用中国菜刀与一句话木马配合实现三大功能:

1.文件管理

在中国菜刀页面继承了Web用户权限可以实现文件管理,包括文件查看、上传、下载、修改、删除、甚至运行exe程序等。

2.虚拟终端

在菜刀命令下可以获得类似cmd和bash的命令行接口,可以执行相关命令。

3.数据库管理

需要知道连接数据库的账密。

getshell:就是获取Web的过程和结果。文件上传是Getshell的主要方式之一。

三、中间件解析漏洞

1. Apache的解析原理是根据文件的扩展名从后往前找,遇见不认识的就往前。如文件

info.php.xxx.xx.x 最后解析为info.php

2. IIS6.0解析漏洞

方法一:time.asp;2.jpg 文件是图片文件,但是在浏览器中打开可解析其中的代码,表示当做.asp文件解析。

方法二:先建立一个文件夹1.asp,在文件夹中建立图片文件time.jpg。在浏览器中依然可以顺利解析time.jpg中的代码。也是当成.asp文件解析。

3. PHP CGI解析漏洞

需要IIS7.0/7.5 + php环境,即使用IIS中间件支持php脚本,此步骤不具体解释。

配置好环境好,漏洞复现:在URL打开一个info.png图片文件,该文件无法执行其中的php代码。

但是在路径后面加,php即可执行。此时路径为 localhost:8000/info.png/.php

防御方法很简单,只需修改一个配置。

 nginx中也存在上述问题:以上内容本质上与中间件无关,而是与php的一个配置选项有关:在php.ini中cgi.fix_pathinfo默认为1,如果将改为0即可。

4.Nginx空字节漏洞

类似于00截断,在文件路径后面加%00.php

例:localhost/info.html无法解析,但是localhost/info.html%00.php可以把.html文件当做.php解析

5.Nginx文件名逻辑漏洞

本质上也是00截断。用BP抓包,在十六进制里边改00。

四、防御与绕过

1.黑白名单策略。

2.前端限制与绕过。如,在前段用JS脚本做检测,检测文件后缀名等。

3.apache开启put方法上传文件。(具体方法略过)

4.用BP抓包改包(前端绕过)。例如:前端浏览器只允许上传.jpg文件,但目前的webshell是.php,如何绕过?

先将文件改扩展名,由.php改为.jpg,上传并抓包。此时已经绕过浏览器的前端了,离开了浏览器端。在BP包中再将.jpg改为.php,然后放包,此时.php文件成功到达服务器上,并绕过前端过滤。

5.服务器端绕过:

(1)服务器端检查content-type类型:只需要BP抓包,直接修改此类型里的内容即可。

(2)服务器端检测文件内容:函数getimagesize(),检测文件大小。很容易被图片木马绕过。如上传一个图片木马.gif。图片木马上传成功表示该上传漏洞存在。但要让服务器端执行该木马,需要结合其它漏洞,如文件包含漏洞、文件解析漏洞、数据库备份漏洞。服务器端最有效的防御图片木马的方法为二次渲染。

图片包含小马的方法:

(3)文件幻术方法制作图片木马(略过)。

(4)服务器检测文件后缀名。

黑白名单方式。

五、00截断+htaccess

(1)00就是Null(空)字符,URL中为%00,会导致文件上传路径截断。

举例:

原理:php的函数move_uploaded_file函数记录上传文件的原目录与上传目录,改变上传目录的路径,在save_path的原路径后面加(test.php),就把文件夹变为了具体的文件(相当于木马文件),但是这样后面接上传的文件会报错,所以在(test.php)后面加%00截断该路径,文件依然能上传成功,并且能显示info.php。

(2).htaccess 是Apache服务器的分布式配置文件,该配置文件会覆盖Apache服务器的全局配置,作用于是当前目录及其子目录。如果一个Web应用允许上传.htaccess 文件,那就意味着攻击者可以更改Apache的配置,相当危险。(全局配置文件为httpd.conf)

举例:

1)将.png文件当做php文件解析

在.htaccess文件中写入: AddType application/x-httpd-php .png

当访问info.png文件时,info.png文件里的php代码将被执行。

情景:如果一个网站不允许上传.php文件,但是允许修改.htaccess文件。

2)文件名包含php关键字

在.htaccess文件中写入: AddHandler php5-script php

当访问info.php.png文件时,info.php.png文件里的php代码将被执行。

3)匹配文件名

(将文件名当做php文件解析)

例文件名为ajest,在.htaccess文件中写入:

<FilesMatch "ajest">

SetHandler application/x-httpd-php

</FilesMatch>

当访问ajest文件时,ajest文件里的php代码将被执行。

六、常见编辑器上传

编辑器就是网站后台编辑网页的在线编辑器,会自动集成文件上传功能,这些编辑器的某些版本也存在文件上传漏洞。

原文地址:https://www.cnblogs.com/fengyufei/p/15314219.html