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. 定期扫描已上传的文件
相关推荐
受之以蒙几秒前
Rust & WASM 之 wasm-bindgen 基础:让 Rust 与 JavaScript 无缝对话
前端·笔记·rust
茫忙然1 小时前
【WEB】Polar靶场 6-10题 详细笔记
笔记
eric*16881 小时前
尚硅谷张天禹老师课程配套笔记
前端·vue.js·笔记·vue·尚硅谷·张天禹·尚硅谷张天禹
小赖同学啊1 小时前
基于区块链的物联网(IoT)安全通信与数据共享的典型实例
物联网·安全·区块链
Allen_LVyingbo2 小时前
数智读书笔记系列035《未来医疗:医疗4.0引领第四次医疗产业变革》
人工智能·经验分享·笔记·健康医疗
岑梓铭2 小时前
考研408《计算机组成原理》复习笔记,第三章(3)——多模块存储器
笔记·考研·408·计算机组成原理
菜菜why2 小时前
MSPM0G3507学习笔记(一) 重置版:适配逐飞库的ti板环境配置
笔记·学习·电赛·嵌入式软件·mspm0
c7693 小时前
【文献笔记】Automatic Chain of Thought Prompting in Large Language Models
人工智能·笔记·语言模型·论文笔记
X_StarX3 小时前
【Unity笔记01】基于单例模式的简单UI框架
笔记·ui·unity·单例模式·游戏引擎·游戏开发·大学生
智者知已应修善业5 小时前
【51单片机用数码管显示流水灯的种类是按钮控制数码管加一和流水灯】2022-6-14
c语言·经验分享·笔记·单片机·嵌入式硬件·51单片机