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. 定期扫描已上传的文件
相关推荐
数字护盾(和中)29 分钟前
和中科技剖析 EDR 绕过全链路,AMSI、ETW 规避技术与防御对策
运维·网络·人工智能·科技·安全·web安全
i love you china1 小时前
问卷系统调查博客项目测试报告
笔记
疯狂打码的少年1 小时前
【数据结构】板块总结 + 下期预告(数据库技术)
数据结构·笔记·算法
zQ.ii1 小时前
WPF 触发器学习笔记
笔记·学习·wpf
乐橙开放平台2 小时前
老旧社区双通道笔记:周界 hoveringAlarm / aiPerArea + 电梯 aiNonVehDetect,一套 callback 做 24h 防护
笔记·物联网·音视频·智能家居
想要成为老金高手2 小时前
Kubernetes 实战笔记(一):Pod 管理与 kubectl 核心命令全解
笔记·容器·kubernetes
程序员麻辣烫2 小时前
反曲弓射箭笔记
笔记·生活
网安蟹佬霸2 小时前
区块链与智能合约安全实战:从Solidity审计到DeFi漏洞深度剖析
运维·前端·网络·安全·自动化·区块链·智能合约
摇滚侠3 小时前
《SpringBoot 3:入门与应用实战》第 7 章 AOP 思想与实现 阅读笔记 13
java·spring boot·笔记
摇滚侠4 小时前
《SpringBoot 3:入门与应用实战》第 6 章 Spring Boot 最佳实践 阅读笔记 12
android·spring boot·笔记