文件上传+解析漏洞

原理:文件上传漏洞是指在需要上传文件的地方没有对上传的文件的格式进行过滤限制,从而导致恶意用户上传恶意文件,getshell。
防御:设置白名单,对用户上传的文件进行过滤限制

常用攻击方法:

1.结合服务器解析漏洞上传恶意文件**(最后总结了一下常见服务器解析漏洞,不全,欢迎大家随时来补充)

2.利用图片马绕过对文件内容检测的防御方法:检测文件内容的时候,是根据文件开头是否有GIF89A这些,以此来判断是否是图片

3.绕过前端验证

4.修改Content-Type绕过上传恶意文件

5.空字节代码绕过漏洞,也叫神奇的00截断,此处的00指的是16进制的00

文件名00截断实现过程:

1)第一种方法:上传文件名为1.php.jpg格式的图马文件,抓包后,在php后面加上一个空格字符,然后到hex中将php后面的空格字符对应的20改为00后放行即可。

2)第二种方法:上传文件名为1.php%00.jpg格式的图马文件,抓包后,将%00进行url解码后放行即可。

请求包中包含上传目录的,可以尝试对上传目录进行00截断,原理都一样,话不多说,直接上实现过程:
上传路径/upload/,直接改成/upload/%00,再将%00进行url解码后放行即可。

6.一句话各种绕过的一个网址:https://blog.csdn.net/jaivy/article/details/77611738

上传文件绕过方法的我写在另一篇文章里,有兴趣的可以看下(仅仅是几种常用的绕过方法):https://www.cnblogs.com/xiaoqiyue/p/9990600.html

下面是一个简单的文件上传webshell的实例:

页面让上传一个文件,先上传一句话,然后抓包看看结果是什么

文件上传漏洞

可以看到它不让我们上传这个文件,但是并没有提示我们应该上传什么类型的文件,猜测应该是黑名单过滤,我们把文件后缀名改成php3试一下

image

成功上传,接下来就可以去网页上看看我们上传的文件有没有被解析了

image

欧克,成功,最后就只需要连接菜刀就可以了

image

解析漏洞:

一、IIS 5.x/6.0解析漏洞利用方法有两种

1.目录解析

/xx.asp/xx.jpg

漏洞原理:在网站下建立名字为 xx.asp的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。(php的也是一样)

漏洞利用:

例如创建目录 images.php,那么如果把这个写有一句话木马的1.jpg文件上传进images.php这个目录下面,那么http://127.0.0.1/images.php/1.jpg 这个就是一个后门地址,可以直接用菜刀去连接

2.文件解析

xx.asp;.jpg (分号截断)

漏洞原理:在IIS6.0下的服务器默认不解析“;”后面的内容,也就是说xx.asp;.jpg会被服务器看成是xx.asp,解析成了asp文件

漏洞利用:上传一个写有一句话的1.asp;.jpg木马文件就可以直接用菜刀连接了(或者直接上传一个大马也可以直接访问了)

IIS6.0 默认的可执行文件除了asp还包含这三种

/xx.asa

/xx.cer

/xx.cdx

二、IIS 7.x/ Nginx <8.03解析漏洞

Nginx漏洞原理:
Nginx默认是以CGI的方式支持PHP解析的(即默认Fast-CGI为开启状态),普遍的做法是:上传一个名字为1.jpg,内容为:

');?>

的文件(其实就是利用了fputs这个函数),然后访问1.jpg/.php,在这个目录下就会生成一句话木马 shell.php

·IIS7.5解析漏洞

IIS7.5的漏洞与nginx的类似,都是由于php配置文件中,开启了cgi.fix_pathinfo,而这并不是nginx或者iis7.5本身的漏洞。

** 三、Nginx <8.03 空字节代码执行漏洞**

漏洞原理:Ngnix在遇到%00空字节时与后端FastCGI处理不一致,导致可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码

影响版本:0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37

四、利用apache解析漏洞绕过服务器端扩展名检测:

漏洞原理:Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断. 这种漏洞存在于使用module模式与php结合的所有版本的Apache。

利用方法:将木马命名为 【1.php.adc】,在连接菜刀时,应该是http://.../1.php

五,IIS7.0,7.5和Nginx<8.03畸形解析漏洞(写webshell漏洞)

原理:在上传文件所在目录下创建一个一句话木马文件

实现过程:新建一个1.txt文件,内容为:

')?>

将文件保存成1.jpg格式,上传到服务器,假设上传路径为/upload,

上传成功后,直接访问/upload/1.jpg,然后我们会发现/upload目录下创建了一个一句话木马文件shell.php

你可能感兴趣的:(文件上传+解析漏洞)