网络安全——文件上传

news/2025/2/19 14:27:30/

1.文件

动态文件:具有交互性的文件

格式:.py .php 等与代码相关的文件,与后台进行交互

静态文件:不具有交互性的文件

格式:.jpg .txt .mp3(二进制流通过播放器所呈现的效果).html(将二进制流发送至用户端,浏览器对页面信息进行解析)

当静态文件当成动态文件同样会被执行,某些漏洞也会导致静态文件被执行

漏洞—动态文件:上传、找到路径调用

​ —静态文件:上传、找到路径、利用可执行的漏洞进行调用

2.文件上传漏洞

概述

我们在上网时经常会使用文件上传的功能,比如上传一个头像图片,上传一个文件,上传一个视频等等,我都知道这是一个正常的功能,但是大家有没有想过文件上传后,服务器是怎么处理或者解析这些文件的呢,如果服务器在处理这些上传文件的时候做的不够安全,就会导致安全事件的发生:比如,

  • 上传web脚本文件让服务器执行

  • 上传木马病毒文件诱导用户或者管理员下载

  • 上传钓鱼文件

  • 上传欺诈文件

文件上传漏洞核心

要使得文件上传攻击能够成功,一般需要满足俩个要素:

  • 包含webshell文件能够成功被上传到服务器上
  • 该文件能够被服务器解析或者我们能访问到该上传文件

实现核心—上传绕过技术

一般而言文件上传遇到的检测技术:

  • 客户端 javascript 检测 (通常为检测文件扩展名)

  • 服务端 MIME 类型检测 (检测 Content-Type 内容)

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

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

  • 服务端文件内容检测 (检测内容是否合法或含有恶意代码)

客户端检测绕过(javascript 检测)

这类检测通常在上传页面里含有专门检测文件上传的 javascript 代码最常见的就是检测扩展名是否合法,这类绕过很简单。

  1. 在页面禁用JS
  2. 用代理修改
  3. 复制页面代码,去掉JS防御检查,补充一些上传指令。(最好学会此种方法)

做法:制作webshell文件(比如shell.php)—>修改为合法扩展名(shell.png)—>burp拦截改为(shell.php) —>上传

服务端检测绕过(MIME 类型检测)

该检测是在服务器上进行,主要检查的是content-type类型值(白名单或者黑名单)。当然这个绕过也简单。
做法:制作webshell文件(比如shell.php,Content-Type: text/plain)—>burp拦截改为(sontent-Type: image/gif) —>上传

服务器检测绕过(目录路径检测)

该检测是在服务器上进行,一般就检测路径是否合法,但稍微特殊一点的都没有防御。
比如,shell.php.[\0].png [\0]就是0x00是php,c语言的截断符,就是说服务器在读文件的时候读到shell.php碰到【\0】就截止了当做shell.php执行了。
类似还有post提交文件shell.php%00.png

服务端检测绕过(文件扩展名检测)

顾名思义就是检查文件扩展名,一般通过白黑名单防御。

  • 黑名单
    比如扩展名不能包含 html、php、php3,php4,asp、exe、bat、jsp

    • 文件名大小写绕过用像 AsP,pHp 之类的文件名绕过黑名单检测

    • 名单列表绕过用黑名单里没有的名单进行攻击,比如黑名单里没有 asa 或 cer 之类

    • 特殊文件名绕过
      比如发送的 http 包里把文件名改成 test.asp. 或 test.asp_(下划线为空格),这种命名方式在 windows 系统里是不被允许的,所以需要在 burp 之类里进行修改,然后绕过验证后,会被 windows 系统自动去掉后面的点和空格,但要注意 Unix/Linux 系统没有这个特性。

    • .htaccess 文件攻击
      配合名单列表绕过,上传一个自定义的.htaccess,就可以轻松绕过各种检测

    • 解析调用/漏洞绕过这类漏洞直接配合上传一个代码注入过的非黑名单文件即可,再利用解析调用/漏洞

  • 白名单检测

白名单相对来说比黑名单安全一些,但也不见得就绝对安全了

  • 0x00 截断绕过

用像 test.php%00.jpg 的方式进行截断,属于白名单文件,再利用服务端代码的检测逻辑漏洞进行攻击,目前我只遇到过 php 的程序有这种漏洞

  • 解析调用/漏洞绕过这类漏洞直接配合上传一个代码注入过的白名单文件即可,再利用解析调用/漏洞

  • .htaccess 文件攻击

在 PHP manual 中提到了下面一段话
move_uploaded_file section, there is a warning which states
‘If the destination file already exists, it will be overwritten.’
如果 PHP 安全没配置好就可以通过 move_uploaded_file 函数把自己写的.htaccess 文件覆盖掉服务器上的这样就能任意定义解析名单了

服务端检测绕过(文件内容检测)

如果文件内容检测设置得比较严格,那么上传攻击将变得非常困难也可以说它是在代码层检测的最后一道关卡如果它被突破了,就算没有代码层的漏洞也给后面利用应用层的解析漏洞带来了机会。

  • 文件幻数头检查

主要是检测文件内容开始处的文件幻数,比如:要绕过 jpg Value = FF D8 FF E0 00 10 4A 46 49 46。
要绕过 gif 文件幻数检测 Value = 47 49 46 38 39 61
要绕过 png 文件幻数检测 Value = 89 50 4E 47

  • 文件相关信息检测

图像文件相关信息检测常用的就是 getimagesize()函数只需要把文件头部分伪造好就 ok 了,就是在幻数的基础上还加了一些文件信息有点像下面的结构

GIF89a(...some binary data for image...)<?php phpinfo(); ?>
(... skipping the rest of binary data ...)
  • 文件加载检测

这个是最变态的检测了,一般是调用 API 或函数去进行文件加载测试常见的是图像渲染测试,再变态点的甚至是进行二次渲染,对渲染/加载测试的攻击方式是代码注入绕过对二次渲染的攻击方式是攻击文件加载器自身。


http://www.ppmy.cn/news/597236.html

相关文章

Linux 镜像文件ISO下载地址、centos网络配置:

Linux 镜像文件ISO下载地址: 国外: Index of /centos-vault/6.1/isos/x86_64/ 国内阿里下载: centos安装包下载_开源镜像站-阿里云 (aliyun.com)https://mirrors.aliyun.com/centos/?spm=a2c6h.13651104.0.0.440a320cBKbdJi centos下载列表: 国外下载: http://is…

nginx+ftp实现图片的上传与访问

根据项目的开发要求&#xff0c;使用ftp实现上传图片&#xff0c;通过nginx搭建图片服务器&#xff0c;即对nginx的简单功能的一种应用。 关于vsftp和nginx的安装就不在这里详细演示&#xff0c;下面的代码是关于nginx.conf的配置&#xff0c;即将ftp上传的图片路径映射到nginx…

上传文件的加密和下载文件解密

文件上传加密 在很多应用场景中&#xff0c;出于安全考虑&#xff0c;我们不得不实行上传文件时对文件进行加密&#xff0c; 存入服务器的文件就会变成二进制文件&#xff0c;当别人直接冲服务器拿到文件时&#xff0c;也无法查看&#xff0c;这就保证了安全性。 但是我们需要…

从茄子网看,一项改进能够带来网络相册的全新世界

从茄子网看&#xff0c;一项改进能够带来网络相册的全新世界 一、早期的相册 二、网民的需求 三、茄子网几个有意思的特点 四、同步翻阅功能的商业价值 五、茄子网和利基战略 分析案例&#xff1a;茄子网([url]www.qiezi.com)[/url]、网易相册、Yahoo相册、TOM相册 一、早期的相…

移动端上传图片和视频文件

手机拍摄的视频文件一般是mp4格式的&#xff0c;ios系统拍摄的视频是mov格式 上传图片功能是直接调用的摄像头&#xff0c;并且可以选择本地图片 大概页面设计如下&#xff1a; 具体实现功能&#xff1a; 1、可以调用摄像头上传图片 2、上传本地视频 3、预览已上传的图片和…

Haystack:Facebook 的照片存储系统

目录 1. 简介 2. 背景和之前的设计 3. 设计和实施 4. 评估 5. 相关工作 6. 结论 Haystack&#xff1a;Facebook 的照片存储 摘要&#xff1a;本文描述了 Haystack&#xff0c;一个为 Facebook 的照片应用程序提供优化的对象存储系统。Facebook 目前存储了超过 2600 亿张图像&a…

新浪BLOG上传图片的方法

一、你见过这个发表文章的地方吧&#xff0d;&#xff0d;这是头&#xff0c;我们要找的是尾 二、这就是尾&#xff0c;我们要找的是左下角这个“图片剪切板”&#xff01; 三、点击标题“图片剪切板”就出现很多插入图片的框框&#xff0c;看下面 四、按下“浏览”按钮&#x…

用微博图片反查上传者信息

其实微博每一种图片都包含了上传者的信息&#xff0c;只是大家平时都不会去观察或者不知道罢了&#xff0c; 我们经常会看见别的网站会有微博的外链缩略图。那么如何通过微博图片查找到其上传者呢&#xff1f; 首先第一种方法&#xff1a; 使用网站查询只要一张微博图片就可…