当前位置: 首页 > news >正文

《Web安全基础》04. 文件操作安全

web

  • 1:文件操作安全
  • 2:文件上传漏洞
    • 2.1:简介
    • 2.2:防护与绕过
    • 2.3:WAF 绕过
      • 2.3.1:数据溢出
      • 2.3.2:符号变异
      • 2.3.3:数据截断
      • 2.3.4:重复数据
  • 3:文件包含漏洞
  • 4:文件下载漏洞
  • 5:文件读取漏洞


本系列侧重方法论,各工具只是实现目标的载体。
命令与工具只做简单介绍,其使用另见《安全工具录》。

靶场参考:upload-labs,pikachu。

1:文件操作安全

在这里插入图片描述

文件操作,包含以下四个方面:

  • 文件上传
  • 文件包含
  • 文件下载
  • 文件读取

文件被解析,则是文件包含漏洞。
显示源代码,则是文件读取漏洞。
提示文件下载,则是文件下载漏洞。

2:文件上传漏洞

在这里插入图片描述

2.1:简介

文件上传漏洞,指程序对文件的上传未作全面限制,导致用户可以上传一些超越用户权限的文件。可以是木马,shell 脚本,病毒等。

上传文件和文件执行是两个东西。

文件上传漏洞查找及判断

  • 黑盒测试:使用工具扫描网站,测试会员中心、后台等。
  • 白盒测试:直接分析源代码。

上传参数名解析

  • Content-Disposition:一般可更改
  • name:表单参数值,不能更改
  • filename:文件名,可以更改
  • Content-Type:文件 MIME,视情况更改

漏洞分类

  • 解析漏洞
  • CMS 漏洞
  • 编辑器漏洞
  • CVE 漏洞

安全修复方案

  • 后端验证:采用服务端验证模式
  • 后缀检测:基于黑名单,白名单过滤
  • MIME 检测
  • 内容检测:文件头,完整性检测
  • 自定义函数过滤
  • WAF 防护产品

2.2:防护与绕过

文件上传常见检测

  • 检测后缀名,MIME 信息,文件头内容等
  • 黑名单
  • 白名单

常见检测绕过

  • 文件头伪造
  • 图片马
  • 二次渲染绕过
  • 条件竞争
  • 文件使用目录命名方式(但操作系统实际保存时仍为文件)
  • 系统漏洞
  • 数组接受(传递数据时,一次性写入多个相同的参数,但参数内容不同)
  • 截断绕过
  • 大小写绕过
  • 空格绕过

2.3:WAF 绕过

WAF 常见绕过方法

  • 数据溢出
  • 符号变异
  • 数据截断
  • 重复数据

以下是一些 WAF 绕过的例子:

2.3.1:数据溢出

数据溢出,添加垃圾数据以致防火墙数据溢出:

在这里插入图片描述

2.3.2:符号变异

符号变异,破坏数据包原本符号对:

在这里插入图片描述

符号变异,破坏数据包原本符号对:

在这里插入图片描述

符号变异,文件名混淆:

在这里插入图片描述

符号变异,文件名混淆:

在这里插入图片描述

2.3.3:数据截断

数据截断,文件名换行。

在这里插入图片描述

2.3.4:重复数据

重复数据,传递多个同名数据:

在这里插入图片描述

重复数据,将一个 HTTP 头重复写入文件名:

在这里插入图片描述

重复数据,将一个 HTTP 头重复写入文件名:

在这里插入图片描述

3:文件包含漏洞

在这里插入图片描述

文件包含允许程序在执行过程中动态引入其他文件的内容,可提高代码的可维护性、可复用性和组织性。

文件包含漏洞,如果不正确处理文件包含,攻击者可能会利用它来包含恶意文件并执行恶意代码。

文件包含漏洞成因

  • 可控变量
  • 文件包含函数

分类

  • 本地文件包含(Local File Inclusion,LFI)
  • 远程文件包含(Remote File Inclusion,RFI)

参考资料:

  • php伪协议
    https://www.cnblogs.com/endust/p/11804767.html

4:文件下载漏洞

在这里插入图片描述

文件下载漏洞允许攻击者下载未经授权的文件。

凡是存在文件下载的地方都可能存在文件下载漏洞。

敏感文件下载

  • 配置文件
  • 接口、密匙信息文件

5:文件读取漏洞

在这里插入图片描述

文件读取漏洞允许攻击者访问或读取未经授权的文件或数据。

参考资料:

  • 小米路由器远程任意文件读取漏洞
    https://www.seebug.org/vuldb/ssvid-98122

半世浮萍随逝水,一宵冷雨葬名花。

——《山花子》(清)纳兰性德

相关文章:

《Web安全基础》04. 文件操作安全

web 1:文件操作安全2:文件上传漏洞2.1:简介2.2:防护与绕过2.3:WAF 绕过2.3.1:数据溢出2.3.2:符号变异2.3.3:数据截断2.3.4:重复数据 3:文件包含漏洞4&#xf…...

docker-compose安装nginx

基于docker-compose安装nginx 目录 一、目录结构 1、docker-compose.yml 2、nginx.conf 3、default.conf 4、index.html 二、访问测试 一、目录结构 1、docker-compose.yml version: 3 services:nginx:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/nginx:1.21.1…...

报错处理:MySQL无法启动

报错环境: Linux MySQL 具体报错: Cant connect to local MySQL server through socket /var/run/mysqld/mysqld.sock 排错思路: 当尝试启动MySQL服务时,如果出现无法连接到MySQL服务的错误,可能是由于MySQL服务未正确…...

Vue中表单手机号验证与手机号归属地查询

下面是一篇关于Vue中如何进行表单手机号验证与手机号归属地查询的Markdown格式的文章,包含代码示例。 Vue中表单手机号验证与手机号归属地查询 手机号验证和归属地查询是许多Web应用程序中常见的功能之一。在Vue.js中,我们可以轻松地实现这两个功能。本…...

初高(重要的是高中)中数学知识点综合

1. 集合 1.1 集合的由来和确定性 确定对象构成的整体称为集合(组成集合的元素必须是确定的 ),每个集合内的对象个体成为元素(Element)。确定性: 给定一个集合,任何一个对象是不是这个集合内的元素,就已经确…...

Fiddler 系列教程(二) Composer创建和发送HTTP Request跟手机抓包

Fiddler Composer介绍 Composer的官方帮助文档:http://www.fiddler2.com/fiddler/help/composer.asp Fiddler的作者把HTTP Request发射器取名叫Composer(中文意思是:乐曲的创造者), 很有诗意 Fiddler Composer的功能就是用来创建HTTP Request 然后发送…...

淘宝平台开放接口API接口

淘宝平台开放接口API接口是指淘宝平台提供给第三方开发者的一组接口,用于实现与淘宝平台的数据交互和功能扩展。通过API接口,第三方开发者可以获取淘宝平台上的商品信息、订单信息、用户信息等数据,也可以实现商品的发布、订单的创建和支付等…...

缓存夺命连环问

1. 为什么要用缓存? 用缓存,主要有两个用途:高性能、高并发。 高性能 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 MySQL,半天查出来一个结果,耗时 600m…...

模型生成自动化测试用例

自动产生的测试用例本就应该由程序自动执行,这其实也就是NModel推荐的模式。先回过头来看看文章中制作的模型,模型里面将登录、注销、用户名以及密码等要素都抽象出来了,而NModel是以这些抽象出来的动作(登录、注销)和…...

归并排序-面试例子

小数和问题 描述 在一个数组中,一个数左边比它小的数的总和,叫数的小和,所有数的小和累加起来,叫数组小和。求数组小和。 例子 5 2 6 1 7 小和原始的求法是:任何一个数左边比它小的数累加起来。 5左边比它小数累加…...

docker 生成镜像的几个问题

docker 生成镜像的几个问题 根据jdk8.tar.gz 打包Jdk8 镜像失败运行镜像报错差不多是网络ip错误,在网上说重启docker即可解决运行mysql5.7.25 镜像失败向daemon.json文件添加内容导致docker重启失败docker run 命令常用参数根据jdk8.tar.gz 打包Jdk8 镜像失败 首选做准备工作…...

云计算时代的采集利器

大家好!在今天的知识分享中,我们将探讨一个在云计算环境中的爬虫应用利器——独享IP。如果你是一名爬虫程序员,或者对数据采集和网络爬虫有浓厚的兴趣,那么这篇文章将向你展示独享IP在云计算环境下的应用价值。 1. 什么是独享IP&…...

【Unity编辑器扩展】| Inspector监视器面板扩展

前言【Unity编辑器扩展】| Inspector监视器面板扩展一、ContextMenu和ContextMenuItem二、Custom Editors 自定义编辑器三、Property Drawer 属性绘制器总结前言 前面我们介绍了Unity中编辑器扩展的一些基本概念及基础知识,还有编辑器扩展中用到的相关特性Attribute介绍。后面…...

Redis配置

关系型数据库和非关系型数据库 ①了解关系和非关系 关系型数据库 一个结构化的数据库,创建在关系模型基础上,一般面向于记录,包括Oracle、MySQL、SQL Server、Microsoft Access、DB2、postgreSQL等 非关系型数据库 除了主流的关系型数据库…...

CSDN每日一练 |『小艺照镜子』『Ctrl+X,Ctrl+V』『括号上色』2023-09-11

CSDN每日一练 |『小艺照镜子』『Ctrl+X,Ctrl+V』『括号上色』2023-09-11 一、题目名称:小艺照镜子二、题目名称:Ctrl+X,Ctrl+V三、题目名称:括号上色一、题目名称:小艺照镜子 时间限制:1000ms内存限制:256M 题目描述: 已知字符串str。 输出字符串str中最长回文串的长度…...

React 全栈体系(四)

第二章 React面向组件编程 六、组件的生命周期 1. 效果 需求:定义组件实现以下功能&#xff1a; 让指定的文本做显示 / 隐藏的渐变动画从完全可见&#xff0c;到彻底消失&#xff0c;耗时2S点击“不活了”按钮从界面中卸载组件 <!DOCTYPE html> <html lang"e…...

各种UI库使用总结

各种UI库使用总结 工作了这么年&#xff0c;使用了一些UI库&#xff0c;简单的总结一下&#xff0c;UI库也是五花八门&#xff0c;根据自己的产品&#xff0c;应用场景吧&#xff0c;没有绝对合适的&#xff0c;各有各的应用场景吧&#xff01; QT 这几年前后在一些嵌入式上…...

2023Web前端开发面试手册

​​​​​​​​ HTML基础 1. HTML 文件中的 DOCTYPE 是什么作用&#xff1f; HTML超文本标记语言: 是一个标记语言, 就有对应的语法标准 DOCTYPE 即 Document Type&#xff0c;网页文件的文档类型标准。 主要作用是告诉浏览器的解析器要使用哪种 HTML规范 或 XHTML规范…...

一文了解数据科学Notebook

编者按&#xff1a; 主要介绍什么是Notebook&#xff0c;Notebook在数据科学领域的应用的重要性与优势&#xff0c;以及数据科学家/算法团队在选择Notebook时需考虑哪些关键因素。同时&#xff0c;基于Notebook的筛选考量维度&#xff0c;对常见的Notebook进初步对比分析&#…...

2020年12月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:数组指定部分逆序重放 将一个数组中的前k项按逆序重新存放。例如,将数组8,6,5,4,1前3项逆序重放得到5,6,8,4,1。 时间限制:1000 内存限制:65536 输入 输入为两行: 第一行两个整数,以空格分隔,分别为数组元素的个数n(1 < n…...

关于ChatGPT的个人的一些观点

问题 1 Q: 你认为ChatGPT是一款非常有用的工具吗&#xff1f; A: 我认为ChatGPT是一款非常有用的工具。它可以帮助人们解决各种问题&#xff0c;包括技术问题、心理问题、生活问题等等。同时&#xff0c;ChatGPT也可以成为人们分享想法和交流的平台&#xff0c;增强人与人之间…...

Solidity 小白教程:13. 继承

Solidity 小白教程&#xff1a;13. 继承 这一讲&#xff0c;我们介绍solidity中的继承&#xff08;inheritance&#xff09;&#xff0c;包括简单继承&#xff0c;多重继承&#xff0c;以及修饰器&#xff08;modifier&#xff09;和构造函数&#xff08;constructor&#xff…...

队列(Queue)的顶级理解

目录 1.队列(Queue) 的概念 2.单链表模拟实现队列 2.1创建队列 2.2入队列 2.3判断是否为空 2.4出队列 2.5获取队头元素 2.6完整代码&#xff1a; 2.7双向链表模拟实现队列代码 3.数组模拟实现队列代码 3.1创建队列 3.2判断是否为满 3.3检查是否为空 3.4插入元素 3…...

选择 Guava EventBus 还是 Spring Framework ApplicationEvent

文章首发地址 Spring Framework ApplicationEvent Spring Framework 的 ApplicationEvent 是 Spring 框架提供的一种事件机制&#xff0c;用于实现发布和订阅事件的功能。它基于观察者模式&#xff0c;允许应用程序内的组件之间进行松耦合的通信。 下面是关于 Spring Frame…...

Linux下go环境安装、环境配置并执行第一个go程序

一、安装 1.Golang对Linux的内核版本要求 GO对Linux内核版本最低要求是 2.6.23&#xff0c;对应要求操作系统版本是&#xff1a; RHEL 6.0CentOS 6.0即&#xff0c;不支持 (RHEL 和 CentOS) 的 (4.x or 5.x)。2.下载golang的代码版本 Golang的官网下载地址&#xff1a;https:…...

自定义Dynamics 365实施和发布业务解决方案 - 5. 高级自定义

本章的目的是探索可应用于Dynamics365的高级自定义。这包括使用插件和自定义工作流活动实现复杂的业务流程。此外,您还将了解如何使用SPKL任务运行器来部署这些,这在第2章中进行了讨论。最后,您还将看到使用Web API查询数据。 准备工作 若要从高级自定义开始,必须首先创建…...

软件测试下的AI之路(2)

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…...

前端面试的话术集锦第 7 篇:高频考点(浏览器渲染原理 安全防范)

这是记录前端面试的话术集锦第七篇博文——高频考点(浏览器渲染原理 & 安全防范),我会不断更新该博文。❗❗❗ 1. 浏览器渲染原理 注意:该章节都是⼀个⾯试题。 1.1 渲染过程 1.1.1 浏览器接收到HTML⽂件并转换为DOM树 当我们打开⼀个⽹⻚时,浏览器都会去请求对应的…...

打印剪刀手“耶”(V形)

用给定单个字符和首行宽度(奇数)&#xff0c; 打印首行宽度为给定奇数“V”字形状)。 (本笔记适合Py 推崇的插件字符串格式化的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全…...

eNSP基本命令大全

单交换机VLAN划分 进入系统视图 system 进入系统视图 system-view 退到系统视图 quit 删除vlan 20 undo vlan 20 交换机命名 sysname 显示vlan disp vlan 创建vlan(也可进入vlan 20) vlan 20 把端口1-5放入VLAN 20 中 port e1/0/1 to e1/0/5 显示vlan里的端口20 disp v…...

网站开发广告宣传/推广信息哪个平台好

oracle92在线文档链接:http://www.oracle.com/pls/db92/homepage?remarktahiti来自 “ ITPUB博客 ” &#xff0c;链接&#xff1a;http://blog.itpub.net/39335/viewspace-350661/&#xff0c;如需转载&#xff0c;请注明出处&#xff0c;否则将追究法律责任。 转载于:http:…...

邯郸网站建设的地方/新手如何学seo

1、类SQL PLUS窗口:File->New->Command Window&#xff0c;这个类似于oracle的客户端工具sql plus&#xff0c;但比它好用多了。2、设置关键字自动大写:Tools->Preferences->Editor&#xff0c;将Keyword case选择Uppercase。这样在窗口中输入sql语句时&#xff0c…...

大型综合新闻门户网站织梦模板/公司推广咨询

多态性意味着有多重形式。在面向对象编程范式中&#xff0c;多态性往往表现为"一个接口&#xff0c;多个功能"。 多态性可以是静态的或动态的。在静态多态性中&#xff0c;函数的响应是在编译时发生的。在动态多态性中&#xff0c;函数的响应是在运行时发生的。 静…...

高校网站建设 网站群/搜索引擎优化的主要策略

(1).介绍turtle库也叫海龟库&#xff0c;是turtle绘图体系的Python实现。turtle库是Python语言的标准库之一&#xff0c;是入门级的图形绘制函数库。turtle绘图体系&#xff1a;也叫海龟绘图系统&#xff0c;它是在1969年诞生&#xff0c;主要用于程序设计入门的一种绘图方式。…...

网站图片命名规范/如何建立公司网站网页

一、Md5()加密算法 单项加密&#xff0c;无法解密。 md5(string $str[, bool $raw_output false]); //计算md5散列值 对于可选参数raw_output。如果设置为true&#xff0c;那么MD5报文摘要将以16字节长度的原始二进制格式返回。false返回32位字符十六进制数字形式返回散列…...

网站开发常问的技术性问题/西安关键词排名提升

http://blog.csdn.net/tcjiaan/article/details/8493072...