5.基础漏洞——文件上传漏洞

目录

一.文件上传漏洞原理

二.文件上传漏洞条件:

三.上传限制手段分为两大类

(1)客户端校验

(2)服务端校验

四.具体实现

1.文件上传漏洞——绕过JS检测

2.文件上传漏洞——绕过MIME类型检测

3.文件上传漏洞——绕过黑名单检测

绕过方式:(1)

绕过方式:(2)

绕过方式:(3)

绕过方式:(4)

绕过方式:(5)

4.解析绕过

1)Apache解析漏洞 

2)IIS解析漏洞

3)Nginx解析漏洞

5.图片码绕过

五.文件上传漏洞的威胁

六.文件上传漏洞的防护

七.文件上传的绕过方法(总结)


一.文件上传漏洞原理

web应用在文件上传过程中没有进行过滤,或者是过滤不严格,攻击者通过上传webshell等恶意文件对服务进行攻击,导致服务器沦陷。

二.文件上传漏洞条件:

1.有上传文件的功能

2.上传文件的目录,能够解析脚本语言(否者,405)

3.能够访问到上传的文件

符合以上三点,就可能存在文件上传漏洞。

三.上传限制手段分为两大类

(1)客户端校验

客户端校验就是Javascript校验等:修改客户端代码/上传过程修改

(2)服务端校验

MIME类型(后缀):上传过程修改MIME类型

扩展名校验:特殊扩展名/截断上传/解析漏洞

文件内容:上传图片木马/代码混洗

四.具体实现

1.文件上传漏洞——绕过JS检测

2.文件上传漏洞——绕过MIME类型检测

请求行中的conTent-TYPE:

用bp截取数据包,修改concent-type。

3.文件上传漏洞——绕过黑名单检测

黑名单检测:一般有个专门的 blacklist 文件,里面会包含常见的危险脚本文件扩展名,如:php、asp、aspx;

绕过方式:(1)

使用大小写绕过(针对对大小写不敏感的系统如windows),如:PhP;

 流程

(1)上传正常的php文件,无法上传;

(2)将文件后缀.php修改为.Php;

(3)上传.Php文件,上传成功;

绕过方式:(2)

黑白名单绕过(php、php2.php3、php5、phtml、asp、aspx、ascx、ashx、cer、asa、jsp、jspx、cdx)

流程

(1)上传正常的php文件,无法上传;

(2)将文件后缀.php修改为黑名单中不存在的后缀

(3)文件上传成功;(上传成功了也不一定会执行,需要看服务器是否支持)

绕过方式:(3)

特殊文件名绕过(后缀加.或者空格)

修改数据包里的文件名改为test.php.或者test.php(有空格)

由于这种命名格式在windows系统里是不允许的。所以在绕过上传之后windows系统会自动去掉点和空格。 Unix/Linux系统没有这个特性

绕过方式:(4)

面试回问到,但其他时候一般没什么用,因为现在版本修复了

0x00截断绕过文件名后缀就一个%00字节,可以截断某些函数对文件名的判断。在许多语 言函数中,处理

字符串的函数中0x00被认为是终止符。

(1)上传正常的php文件,无法上传

(2)将文件后缀.php修改为.php.jpg上传,burp抓包16进制模式php后面添加00;

(3)文件,上传成功;

绕过方式:(5)

.htaccess文件攻击

修通过move uploadedfile函数把自己写的.htaccess文件覆盖掉服务器上的这样就可以解析定义名单了.

.htaccess文件用处:

通过.htaccess文件调用php解释器去解析一个文件名中只要包含“aa”这个字符串的任意文件,无论你文件名是什么样子,只要包含”aa”这个字符串,都可以被以php的方式来解析。

(1)上传正常的php文件,无法上传

(2)将文件修改为文件名带aa的,后缀随便,例:aa123.txt;

(3)文件,上传成功;

代码:

<FilesMatch"aa" >
 SetHandler application/x-httpd-php
 </FilesMatch>

4.解析绕过

1)Apache解析漏洞 

一个文件名为test. php.aaa. bbb.ccc的文件,Apache会从ccc的位置往php的位置开始尝试解析,如果ccc不属于Apache能解析的后缀名,那么 Apache就会尝试去解析bbb,这样一直往前尝试,直到遇到一个能解析的扩展名为止。

2)IIS解析漏洞

#1 IIS6.0

@1:新建一文件名字为:任意文件名.asp;   任意文件名jpg 此文件会当成脚本运行   (1.asa;1jpg,2.cdx;2.txt)

@2:新建一个文件夹,名字为任意文件名.asp;

  那么在这个文件夹里的内容全部会被当场脚本取运行。

@3:服务器配置错误(put 协议)

这里一般会和MOVE协议一起使用,先上传txt文件,在将txt文件修改为执行文件,php,aspaspx。移动并改名,但你要有他的原文件的路径

#2 IIS7.0,7.5

@1:正常路径:uploads/1jpg

@2:把php文件修改后缀为jpg进行上传

@3:黑客思路:uploads/1jpg/任意文件名.php 访问方式

@4:这个文件就会被当成脚本去执行。

3)Nginx解析漏洞

#1

@1:正常路径:uploads/1.jpg

@2:黑客思路:uploads/1.jpg/任意文件名.php 访问方式

#2 Nginx 0.5.* Nginx 0.6.* Nginx0.7

对低版本的Nginx可以在任意文件名后面添加%00.php进行解 析攻击。

正常路径:uploads/1jpg

黑客思路:uploads/1.jpg%00.php 当做正常脚本执行

#3 Nginx 0.8.41~1.4.3 ;1.5

在linux系统里,以上Nginx容器的版本下

正常路径:uploads/1jpg

黑客思路:uploads/1.jpg%20%00.php 当做正常脚本执行

5.图片码绕过

把代码文件和图片文件进行二进制编码合并形成新的图片,进行上传.注意2.php代码最前面需要有一个空格

cmd下执行:建议使用小图片

window和linux合层图片木马的命令

copy/b 1.jpg+2.php=3.jpg

五.文件上传漏洞的威胁

1.上传webshell,控制服务器,远程命令执行。

2.上传系统病毒,木马文件进行挖矿。

3.进行提权操作。

4.修改web页面,制作钓鱼网站,挂马。

5.进行内网渗透。

六.文件上传漏洞的防护

1.前端校验,后端校验。

2.对MIME类型进行检验。

3.创建黑白名单,进制执行文件上传。

4.隐藏上传的路径。

5.将上传的文件名更改。

七.文件上传的绕过方法(总结)

1.前端绕过

2.MIME类型绕过

3.后缀大小写绕过

4.00截断攻击

5.双写文件后缀绕过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值