文件上传小记

一、文件上传漏洞描述

1.1 漏洞原理

  • 网站的上传功能没有进行严格的限制,存在任意文件上传漏洞,容易被上传恶意脚本

1.2 漏洞危害

  • 攻击者可通过此漏洞上传恶意脚本文件,对服务器的正常运行造成安全威胁影响等

  • 攻击者可上传可执行的Webshell(php,jsp,asp,aspx等类型脚本木马),获取利用目录跳转上传html,gif,config覆盖系统原有的文件,达到获取系统权限的目的。

1.3 修复建议

  • 1.对上传文件格式进行严格校验及安全扫描,防止上传恶意脚本文件
    2.设置权限限制,禁止上传目录的执行权限
    3.严格限制可上传的文件类型
    4.严格限制可上传的文件路径
    5.文件扩展名服务端白名单校验
    6.文件内容服务端校验
    7.上传文件重命名
    8.隐藏上传文件路径
    9.MIME类型检测以及限制上传文件的大小,或是将上传的文件放在安全的路径下,尽量放于web server之外的远程服务器等。

二、文件上传各种姿势

2.1 前端绕过

  • 删除浏览器中的JS代码 利用插件禁用JS脚本 使用恶意文件名后缀符合白名单策略,用burp修改后缀

2.2 服务器端检测–MIME 类型(文件类型)

  • MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。MIME
    消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。常见的MIME 类型如下:

     **文件扩展名 			Mime-Type**
     		.js 			application/x-javascript
     		.html 			text/html
     		.jpg 			image/jpeg
     		.png 			image/png
     		.pdf 			application/pdf
    
  • 由于服务器在检测Content-Type 类型的时候,取得的变量来自于用户,所以可以用Burp
    抓包,修改这个字段,使其合法,即可绕过限制上传任意文件。

2.3 服务器端检测–文件内容

  • 除了检测上传文件的Content-Type 类型,为了保持安全性,服务器端还会检测文件内容。PHP
    中有一个函数getimagesize(),这个函数本意是检查图片的大小,但是在检查之前,该函数会判断目标文件是否是一张图片。因此,可以用该函数来检测文件的内容。

  • 对于文件内容检测,我们可以通过制作,上传图片木马绕过。

2.4 图片马制作

  • 1)copy 命令 copy 2.jpg/b+1.php shell.jpg
  • 2)16进制编辑器 C32等
    需要文件头(文件幻数)GIF89a等
    JPEG(jpg) FFD8FF
    PNG(png) 89504E47
    GIF(gif) 47494638

2.5 服务器端检测–后缀名

  • 服务器端还会检测⽂文件后缀名。服务器端在检测文件名的时候,依然会采用黑白名单策略。黑名单策略,不允许上传php、asp、aspx、jsp…等可执行脚本的文件;白名单策略,只允许上传jpg、gif、png、doc、rar…等格式的文件。

黑名单

  • 代码中$deny_ext
    数据就是一个黑名单,数组元素就是不允许上传的类型。对于黑名单,我们可以寻找其他可允许上传的类型来绕过限制。可以执行脚本后缀名 .php
    .php2 .php3 .php5 .phtml .asp .aspx .ascx .ashx .asa .cer .jsp .jspx

白名单

  • 对于后缀名白名单策略,我们只能上传在白名单内的文件后缀名。

2.6 00截断

00 就是Null(空)字符,URL 中表现为%00,00 截断会导致文件上传路径截断。我们以upload-labs第十一关为例子说明这个问题

在这里插试试 片描述

2.7 .htaccess 攻击

.

  • htaccess 是Apache 服务器的分布式配置文件,该配置文件会覆盖Apache 服务器的全局配置,作用域是当前目录及其子目录。如果一个Web 应用允许上传.htaccess 文件,那就意味着攻击者可以更改Apache的配置,这是十分危险。

  • .htaccess 攻击想象空间非常大。首先看Apache 的配置,允许.htaccess 文件覆盖掉Apache 的配置

  • 配置如下

将以下代码写入文件,并保存成.htaccess 名字,上传到服务器。

AllowOverride All
*将.png 文件当作PHP 文件解析

AddType application/x-httpd-php .png
*文件名中包含php 关键字

当文件名[info.php.png] 中包含关键字[.php],并且.htaccess 文件内容如下,info.php.png 中的代码会被执行

AddHandler php5-script php
*匹配文件名
以下配置是匹配文件名[MoCo],找打该文件,并执行其中的PHP 代码
<FilesMatch “MoCo”>
SetHandler application/x-httpd-php

2.8 Web容器解析漏洞

。。。

**

2.9windows文件规则

不符合windows文件规则有哪些: 
shell.php. ----------文件名后加点‘.’

shell.php(空格) ----------文件名后加括号空格

shell.php:1.jpg ----------文件名后加冒号’:’

shell.php:: D A T A − − − − − − − − − − 文 件 名 后 加 N T F S A D S 特 性 : : DATA ----------文件名后加NTFS ADS特性:: DATANTFSADS::DATA

shell.php:: D A T A . . . . . . − − − − − − − − − − 文 件 名 后 : : DATA...... ----------文件名后:: DATA......::DATA…

会被windows系统自动去掉不符合规则符号后面的内容。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值