No.19 笔记 | WEB安全 - 任意文件操作详解 part 1

1. 任意文件上传漏洞基础

什么是文件上传功能?

在网站和应用中,我们经常会看到允许用户上传文件的功能,比如:

  • 更换头像:让用户上传自己的照片作为头像
  • 发布图片:在社交媒体或论坛上传图片
  • 提交文档:在办公系统中上传Word、Excel等文档

这些都是常见的文件上传功能。

任意文件上传漏洞是什么?

简单来说,这个漏洞就是:

  • 网站本来只想让用户上传正常的文件(如图片、文档)
  • 但由于网站没有正确检查上传的文件
  • 导致攻击者可以上传危险的文件(如包含恶意代码的脚本文件)

为什么这个漏洞很危险?

如果攻击者成功上传了恶意文件:

  1. 他们可能获得对网站的控制权
  2. 可以查看、修改甚至删除网站的数据
  3. 严重情况下,可能获得整个服务器的控制权

什么是Webshell?

Webshell是攻击者最常用的一种恶意文件:

  • 本质上是一段代码,通常伪装成普通网页文件
  • 允许攻击者远程执行命令,控制服务器
  • 常见类型有PHP、ASP、JSP等,取决于服务器使用的技术

Webshell分为几种:

  1. 大马:功能强大,体积较大,容易被发现
  2. 小马:功能简单(通常只能上传文件),体积小,不易被发现
  3. 一句话木马:极其简洁,通常只有一行代码,非常隐蔽

2. 文件上传漏洞利用条件和过程

成功利用的必要条件

要成功利用文件上传漏洞,需要满足以下条件:

  1. 木马上传成功:攻击者的恶意文件成功上传到服务器,且没有被安全软件删除
  2. 知道木马位置:攻击者需要知道上传文件在服务器上的具体路径
  3. 木马可以执行:服务器需要能够解析并执行这个恶意文件

典型的文件上传过程

一个完整的文件上传过程通常包括以下步骤:

  1. 客户端检查:使用JavaScript在浏览器中初步验证文件
  2. MIME类型检查:服务器检查文件的MIME类型是否合法
  3. 路径检查:确保文件不会被上传到危险的目录
  4. 扩展名检查:验证文件扩展名是否在允许列表中
  5. 内容检查:分析文件内容,确保没有恶意代码

3. 如何利用文件上传漏洞(GETSHELL)

基本步骤如下:

  1. 准备木马文件:创建一个包含恶意代码的文件
  2. 上传木马:将这个文件上传到存在漏洞的网站
  3. 获取路径:从服务器的响应中找出上传文件的存储路径
  4. 连接木马:使用专门的工具(如中国菜刀)连接到这个木马文件
  5. 执行操作:通过木马在服务器上执行各种操作

4. 常见的上传绕过技术

绕过JavaScript验证

原理:JavaScript验证在浏览器端进行,容易被绕过 方法:

  1. 使用浏览器开发者工具删除验证代码
  2. 使用Burp Suite等工具拦截并修改请求

绕过MIME类型验证

原理:服务器通过检查Content-Type字段判断文件类型 方法:

  1. 使用Burp Suite拦截上传请求
  2. 修改Content-Type为允许的类型(如image/jpeg)
  3. 发送修改后的请求

绕过文件扩展名验证

方法:

  1. 双扩展名:example.php.jpg
  2. 大小写混合:example.pHp
  3. 空格和点:example.php(空格).
  4. 特殊字符:example.php%00.jpg(需要PHP版本较低)

绕过内容检查

方法:

  1. 在正常文件中插入木马代码
  2. 使用编码或加密隐藏恶意代码

5. 防御措施

  1. 严格限制上传文件类型
  2. 使用白名单而不是黑名单
  3. 重命名上传的文件
  4. 将上传目录设置为不可执行
  5. 使用Web应用防火墙(WAF)
  6. 定期扫描已上传的文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/897117.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ系列学习笔记(四)--消息应答机制

文章目录 一、消息应答详解1、基本概念2、自动应答3、手动应答4、自动重新入队5、手动应答代码6、手动应答演示 二、不公平分发三、预取值机制 本文参考: 尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmq RabbitMQ 详解 Centos7环境安装Erlang、RabbitMQ详细过程…

如何去掉歌曲的人声只剩伴奏?伴奏独享的方法

在音乐制作、后期处理或是个人娱乐中,我们经常遇到需要将歌曲中的人声去除,仅保留伴奏的情况。虽然这一过程可能听起来颇为复杂,但实际上,借助现代音乐技术和软件,我们可以较为轻松地达成这一目标。本文将介绍三种常见…

[AWS]RDS数据库版本升级

背景:由于AWS上mysql5.7版本不再支持,需要进行版本升级。 吐槽:每年都要来那么几次,真的有病一样,很烦。 步骤一、升级检查 AWS提供了一个python的升级检测脚本,可以按照一下脚本下载测试: [r…

机器视觉基础系列2—简单了解用神经网络进行深度估计

机器视觉基础系列2—简单了解深度估计 深度估计 深度估计通俗的来讲就是要得到一张图像当中,哪些区域离得比较近,哪些区域离得比较远。 输入一张彩色得图像,我们输出深度估计得图像,深浅即为远近(从而完成了离相机距离…

Git安装与配置(2.47.0版本超详细)

一、背景 1.什么是gitt?(官网引用) Git 是一个快速、可扩展的分布式版本控制系统,它拥有异常丰富的命令集,可以提供高级操作和对内部的完全访问。 参阅 gittutorial[7] 开始使用,然后查看 giteveryday[7] …

【2022统考真题】计算时间复杂度

目录 一、题目描述 二、思路分析 三、易错提醒 四、同级和嵌套的关系 一、题目描述 下列程序段的时间复杂度是&#xff08;&#xff09; int sum 0; for (int i 1; i < n; i * 2) for (int j 0; j < i; j) sum; A. O(logn) B. O(n) C. O(nlogn) D…

使用Radzen Blazor组件库开发的基于ABP框架炫酷UI主题

一、项目简介 使用过ABP框架的童鞋应该知道它也自带了一款免费的Blazor UI主题&#xff0c;它的页面是长这样的&#xff1a; 个人感觉不太美观&#xff0c;于是网上搜了很多Blazor开源组件库&#xff0c;发现有一款样式非常不错的组件库&#xff0c;名叫&#xff1a;Radzen&am…

iEnglish「速成」板块上线,快速提升英语能力

10月17日&#xff0c;iEnglish智能升级版正式推出了「速成」板块&#xff0c;这一创新举措不仅是AI教育深度融合的体现&#xff0c;还为用户提供了更为高效的个性化学习体验。 据悉&#xff0c;「速成」板块旨在通过个性化的学习模式和多元化的练习方式&#xff0c;帮助用户实…

SSD |(九)ECC原理 | LDPC

文章目录 &#x1f4da;信号和噪声&#x1f4da;通信系统模型&#x1f4da;纠错编码的基本思想&#x1f407;编码距离&#x1f407;线性纠错码的基石——奇偶校验&#x1f407;校验矩阵H和生成矩阵G &#x1f4da;LDPC原理简介&#x1f407;LDPC是什么&#x1f407;Tanner图 &a…

scrapy案例——当当网的爬取一

项目名称&#xff1a;当当网的爬取一——爬取青春文学的书籍数据 案例需求&#xff1a; 1.使用scrapy爬虫技术爬取当当网中青春文学的书籍数据&#xff0c;包括&#xff08;标题、现价、定价、作者、出版日期、出版社、书本详情和书本图片url&#xff09; 2.将获取到的数据保…

免费开源的微信开发框架

近年来&#xff0c;随着人工智能技术的快速发展&#xff0c;聊天机器人在各个领域得到了广泛的应用。在社交媒体中&#xff0c;自动回复成为了一个流行的功能&#xff0c;让用户可以方便地与机器人进行互动。gewe框架&#xff0c;一个开源的微信聊天机器人框架&#xff0c;实现…

高刚性重切削数控走心机

高刚性重切削数控走心机&#xff0c;作为现代精密加工领域的佼佼者&#xff0c;以其卓越的性能和广泛的应用领域&#xff0c;赢得了众多行业的青睐。下面&#xff0c;我将从多个方面为您详细解析这种数控走心机。 ‌一、定义与特点‌ ‌定义‌&#xff1a;高刚性重切削数控走心…

【Java 并发编程】单例模式

前言 单例模式是一种十分常用但却相对而言比较简单的单例模式。虽然它简单但是包含了关于线程安全、内存模型、类加载机制等一些比较核心的知识点。本章会介绍单例模式的设计思想&#xff0c;会去讲解了几种常见的单例实现方式&#xff0c;如饿汉式、懒汉式、双重检锁、静态内部…

C++和OpenGL实现3D游戏编程【连载16】——详解三维坐标转二维屏幕坐标(向量和矩阵操作实战)

&#x1f525;C和OpenGL实现3D游戏编程【目录】 1、本节课要实现的内容 在上一课我们了解了着色器&#xff0c;了解了部分核心模式编程内容&#xff0c;从中接触到了线性代数中向量和矩阵相关知识&#xff0c;我们已经能够感受到向量和矩阵在OpenGL编程中的重要性。特别是后期…

Linux——传输层协议

目录 一再谈端口号 1端口号范围划分 2两个问题 3理解进程与端口号的关系 二UDP协议 1格式 2特点 3进一步理解 3.1关于UDP报头 3.2关于报文 4基于UDP的应用层协议 三TCP协议 1格式 2TCP基本通信 2.1关于可靠性 2.2TCP通信模式 3超时重传 4连接管理 4.1建立…

MySQL数据库的高可用

一、MHA工作原理 1、MHA的工作原理 1、MHA利用 select 1 as value 指令判断master服务器的健康性&#xff0c;一旦master宕机&#xff0c;MHA从宕机崩溃idmaster保存二进制日志事件&#xff08;binlog events&#xff09; 2、识别含有最新更新的slave 3、应用差异的中继日志&a…

bcprov-jdk15on-1.52.0.jar has unsigned entries - org/bouncycastle/LICENSE

报错界面如上图 解决办法&#xff1a; 1.修改引用jar包&#xff0c;将build.gradle里面的依赖为 implementation org.bouncycastle:bcprov-jdk15on:1.52 2.到maven上下载最新的bcprov-jdk15on-1.52.0.jar,替换文件夹中原有的jar包

C/C++每日一练:实现一个环形队列

队列&#xff08;queue&#xff09; 队列是一种先进先出&#xff08;FIFO&#xff0c;First In First Out&#xff09; 的数据结构&#xff0c;类似于排队的场景。最先进入队列的元素最先被处理&#xff0c;而后加入的元素则排在队列的末尾。 常见的队列操作&#xff1a; 入队…

第二届中国楚域品牌文化创新发展大会暨楚域尚品发布会在汉圆满落幕

10 月 19 日&#xff0c;“第二届中国楚域品牌文化创新发展大会暨楚域尚品发布会”在武汉市光谷九通海源大酒店隆重举行。本次大会由中国商业文化研究会传承创新工作委员会、楚域品牌文化传承创新工作委员会、华夏品牌文化创新发展大会组委会主办&#xff0c;湖北省企业文化促进…

python爬虫简易入门示例

版本环境 win11python 3.12.4 目标&#xff1a;爬取https://gitee.com/explore的列表内容&#xff0c;并写入txt文本 效果 开始 1.安装依赖 pip install requests beautifulsoup42.编写代码&#xff0c;如下&#xff0c;详见注释 import requests from bs4 import Beauti…