网站文件上传漏洞是如何利用的?

            经常遇到客户抱怨网站存在上传漏洞导致被入侵,我们来讲一下什么是文件上传漏洞,文件上传动中在我们日常的渗透当中会遇到很多,那么这个漏洞它从代码层面又是如何产生的,今天我们就是从白盒的一个方面来看一看这漏洞我们该如何去利用,如何去修复这个漏洞,这里我也是搭建了一个靶场,然后这次选用的源码是我从实战当中遇到的一套源码,我把它的代码给复制下来,给大家分析分析它这个漏洞产生的地方。

好,这里是最常见的一个上传点,我们可以在这里正常的上传一个文件,上传个1.jpg。上传后,这边可以看到它是能够成功上传的,来我们来访问一下。这个图片也是存在的,证明我们是成功传上去了。那么我们再来试试传php文件,如果我们直接传php文件,它这里肯定是不可以的,你看报错了文件类型不对,那么有人就会说我们抓包修改,我们再来看一下,我们进行一个抓包。好开启抓包工具进行上传。好。抓包修改,我们把这个jpg正常操作改为php,然后我们抓取一个响应包看一下,可以看到他返回了一个errot报错了,那么这个东西我们也是没传上去的,说明我们这样改也传不上去。那么我们再试试别的方法,有人说00截断,那我们再试一试截断,00。第二php%00点jpg,再把这个%00给进行一个编码,可以看到它也是传回一个error,那么这个我们要怎么绕过,当然我这边肯定是知道如何知道的,我们下面就从代码里面我们来看一下它是做了是什么样的一个防护。

这里就是我们刚才那个上传的一个源代码,我们可以一行一行的来分析一下。首先他这里是判断这个文件上传这个数组里面是否有error这个参数,如果有的话他这边就直接退出了,直接报错,然后就是判断这个文件大小,当然这些都不是最重要的,我们的目的是要能正常传我们的php,传我们的php就看它后缀是如何过滤的。首先这里可以看到它是验证了这个文件类型, content就是这个东西。这样我再抓个包给你们看一下,达到对皮特他这边看到这边是验证了type,这个就是这个 content,type这个文件类型,看支持jpeg,png然后还有就是jpg,如果不是这三种格式的话,他肯定就会报错。我们也可以这边来试一下,随便改一个,比如说我们给它改成一个gjf,看文件类型不对,然后我们给它改成正常的一个jpg,可以看到是能够正常上传的,那么这就说明这代码是正常的。

我们的文件名,它就是这么一个.php的一个文件,那么这个东西我们是否能够正常访问了,那当然是可以正常访问的。这是一个正常的文件好吧?然后其次再看一下我们能否绕过最后的这个东西。我们这里面传个传这4个字符进去之后,那我们到这儿我们再给打印看一下,这里面是否包含点php,这三个关键字,好,发包。可以看到我们这边得到的是一个b.php就是我们传的文件名,和他这个.php不匹配,没有匹配到.php这三个关键字,那么我们就已经成功的绕过了他这个文件上传的一个限制。

分享: