文件上传漏洞(三)

第一部分:文件上传基本概述

1、文件上传漏洞简介


文件上传漏洞就是指攻击者上传了一个可执行文件如木马,病毒,恶意脚本,WebShell等到服务器执行,并最终获得网站控制权限的高危漏洞。

2、文件上传漏洞产生的原因


文件上传漏洞是由于程序员未对上传的文件进行严格的验证和过滤,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

########################        产生原因        #######################
(1)服务器配置不当(iis6.0 put 直接写文件)
(2)本地文件上传限制被绕过(javascript验证)
(3)服务端过滤不严格被绕过 ()
(4)文件路径截断 (0x00)
(5)文件解析漏洞导致文件执行(iis,apache,nginx)
(6)开源编辑器上传漏洞(fckeditor 自定义文件名,文件夹结合iis6.0解析漏洞,杀伤力*****ewebeditor :可以登录后台,配置允许上传的文件类型.asp)

3、漏洞危害


网站被控制,对文件增删改查,执行命令,链接数据库
如果服务器长久未更新,可以利用exp提权,导致服务器沦陷
同服务器的其他网站沦陷

4、文件上传漏的防御


上传文件的存储目录不给执行权限
文件后缀白名单,注意0x00截断攻击(PHP更新到最新版本)
不能有本地文件包含漏洞(include dama.jpg)
及时更新web应用软件避免解析漏洞攻击

第二部分:文件上传基本操作

1.修改文件名后缀

正常图片文件后缀一般为jpg png gif等

首先上传一个图片码,然后通过抓包修改后缀为.php实现简单的绕过.

2.修改文件Content-Type类型(MIME)

正常图片类型为:image/gif image/png image/jpeg等

上传一个php文件,通过bp抓包将php的Content-Type修改为正常图片的类型实现绕过.

3.上传php3 php4 php5 phtml等文件后缀

如果对方黑名单只对php后缀进行过滤,未考虑php5这类,那么可以直接上传php3这类后缀的后门

4.上传 (.htaccess) 的文件,然后上传图片木马

5.大小写、末尾加空格和点、::$DATA绕过

当对方未对这四种的其中一种或者多种进行过滤的时候,使用bp抓包后修改实现绕过

6.叠加末尾的空格和点绕过、叠加php绕过

叠加末尾的空格和点绕过:当对方黑名单对空格和点的检测只有一次的时候,可以叠加绕过.

叠加php绕过:当对方黑名单会对php这类后缀去除掉并只去除一次的时候,可以叠加绕过.

第三部分:白名单绕过

1.%00截断(判断GET还是POST接受参数)

(1)如果是GET接受值、上传一个jpg图片,然后修改路径,如下图:

(2)如果是POST接受值、上传一个jpg图片,然后修改路径,再将%00进行URL编码:

2. 图片+php代码,组成一个图片码进行上传

前提:想解析出图片中的php代码,网站要存在包含漏洞。

首先制作一个图片码,可以直接用Notepad直接打开图片后面加一个php代码,但是需要16进制,要不然图片可能出错。也可以cmd进行生成,命令语句:copy 14.jpg /b + 14.php /a webshell.jpg 如图所示,我们在上传这个生成后的图片。

上传后进行访问

3. getimagesize()函数

原理:这个函数的意思是:会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求的

绕过:测试可不可以配合文件包含漏洞绕过。

4. exif_imagetype()函数

原理:读取一个图像的第一个字节并检查其签名。

绕过:测试可不可以配合文件包含漏洞绕过。

第二种:

5. move_uploaded_file()函数

第一种:

原理及其绕过:函数中的img_path是由post参数save_name控制的,可以在save_name利用%00截断(注意php版本低于5.3)。

第二种:

move_uploaded_file()有这么一个特性,会忽略掉文件末尾的 /.

6.二次渲染

绕过imagecreatefromjpeg()函数

按照原来的方法进行上传,我们可以发现还是可以上传的,但是配合包含漏洞却无法解析,这时我们把上传的图片复制下来用Notepad打开,发现我们原来写的php代码没有了,这就是二次渲染把我们里面的php代码删掉了。

我们把原图和他修改过的图片进行比较,看看哪个部分没有被修改。将php代码放到没有被更改的部分,配合包含漏洞,就可以了。使用HxD Hex Editor进行比较:

具体实现需要自己编写Python程序,人工尝试基本是不可能构造出能绕过渲染函数的图片webshell的,知道怎么解就可以了

注意:如果人家二次渲染先验证在进行上传那就没有办法了。

7.条件竞争

原理:我们看代码他是先将图片上传上去,才开始进行判断后缀名、二次渲染。如果我们在上传上去的一瞬间访问这个文件,那他就不能对这个文件删除、二次渲染。这就相当于我们打开了一个文件,然后再去删除这个文件,就会提示这个文件在另一程序中打开无法删除

8.数组绕过

Upload_labs解答链接:https://www.cnblogs.com/-an-/p/12666933.html

9.配合解析漏洞绕过

(1)IIS 6.0解析漏洞

(2)Apache解析漏洞

(3)Nginx解析漏洞

(4)Windows文件命名

文章部分参考,原文链接:https://blog.csdn.net/weixin_39190897/article/details/85334893

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值