文件上传笔记记录

文件上传

将客户端数据以文件形式封装,通过网络协议发送到服务器端,在服务器端解析数据,最终在服务端硬盘上作为真实的文件保存,通常一个文件在以HTTP协议下上传时,将以POST请求发送至Web服务器,Web服务器收到请求并同意后,用户与Web服务器将建立连接,并传输数据。

产生漏洞的原因:
1.  服务器配置不当;

2.文件上传限制被绕过

3.开源编辑器的上传漏洞

4.文件解析漏洞导致文件执行

攻击者通过上传恶意文件——恶意文件被称为WebShell

可能存在的位置:

  1. 图片上传功能;
  2. 头像上传功能;
  3. 文档上传功能;

对文件上传的检测方式:

客户端Javascript检测——检测文件扩展名——前端脚本

服务端MIME类型检测——检测content-type字段内容

服务端目录路径检测——检测跟path参数相关的内容

服务端文件扩展名检测——检测跟文件extension相关的内容

服务端文件内容检测——检测文件里的内容是否合法

文件上传的绕过:

利用bp进行抓包改包的过程,进行绕过

绕过客户检测:
原理:通常在上传页面里含有专门检测文件上传的Javascript代码,最常的就是检测文件类型和扩展名是否合法

方法:在本地浏览器客户端禁用JS即可(可使用火狐的Noscript插件、IE中禁用JS等方法)

判断该网站是否有被过滤;使用bp上传时查看情况

发现此时bp没有收到get.php的请求,说明被过滤(图中的是之前的)

思考:

检查代码

发现前端里有一个checkfile()的代码

利用前端可修改的特定,将其删除

抓包绕过

此时的请求包是发送到服务端的,此时就把前端的过滤给跳过了。

将filename改成php,点击foword,可以发现页面跳成对应的形式,这时证明上传成功

然后依之前的进行输入

过滤成功

绕过服务端的检测:
服务端的检测:

MIME类型、文件后缀、文件内容

绕过MIME类型检测:
检测图片类型文件上传过程中http包的content-type字段的值来判断上传文件是否合法。

方法:用BP截取并修改数据包中文件的conten-type类型进行绕过

绕过文件后缀检测——黑名单:

方法:

  1. 后缀大小写绕过(.Php):
  2. 空格绕过(.php )
  3. 点绕过(.php.)
  4. 后缀改写绕过(.php3、.php4、.php5.....)
  5. ::$DATA绕过(.php::$DATA)
  6. 配合Apache解析漏洞:Apache解析有一个特点,解析文件是从右往左判断的,如果不可识别解析再往左进行判断,如aa.php.owf.rar文件,Apache不可识别解析’.owf’ 和 ‘,rar’,于是就解析成.php文件。
  7. .htaccess文件:配合名单列表绕过,上传一个自定义的.htaccess,就可以绕过检测,.htaccess文件(分布式配置文件),提供了针对目录改变配置的方法;在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录作为用户,所能使用的命令受到限制。

如;            新建一个htaccess文件

               <FilesMatch “get.png”>

               SetHandler application/x-httpd-php——是apache服务端对此文件进行php解析

               </FilesMatch>

通过一个.htaccess文件调用php的解析器去解析一个文件名中只要包含“haha”这个字符串的任意文件,所以无论文件名是什么样子,只要有“haha”这个字符串,都可以被以php方式来解析,一个自定义的.htaccess文件就可以以各种各样的方式去绕过很多检测机制。

绕过文件后缀检测——白名单

不在名单里的为不合法的

绕过方法:

服务端判断文件类型是从后往前,而对文件解析是从前往后,所以利用00截断的方式进行绕过,包括%00截断与0x00截断。——截断只能用php5.2的版本

%00截断:

Url发送到服务器后被服务器解码,这时还没有传到验证函数,也就是说验证函数里接收到的不是%00字符,而是%00解码后的内容

在GET(这里的GET,不是指请求数据包的方式)的方式中

直接写入

POST的方式中:

%00是复制不出来的

需要先输入空格,

然后找到对应的编码,(空格编码为20),修改为00

保存后就是

0x00截断同理

绕过文件内容检测:

  1. 通过检测上传文件内容开始处的文件幻术书来判断

通常通过判断前10个字节,基本就能判断出一个文件的真实类型

文件幻数:用来标记文件或者协议的格式,很多文件都有幻数标志来表明文件的格式

使用winhex查看文件的十六进制的一些数据

  1. 文件加载检测

一般是调用API或函数对文件进行加载测试,常见的是图像渲染测试,以及二次渲染

放一个正常的图片并进行代码注入

在不破坏文本本身的渲染情况下找一个空白区间进行填充代码,一般是图片的注释区,这样

能保证本身文件结构是完整的

二次渲染:

Web解析漏洞简介:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值