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. 定期扫描已上传的文件
相关推荐
One_Blanks2 分钟前
渗透测试-Linux基础(1)
linux·运维·安全
易云码22 分钟前
信息安全建设方案,网络安全等保测评方案,等保技术解决方案,等保总体实施方案(Word原件)
数据库·物联网·安全·web安全·低代码
Qspace丨轻空间39 分钟前
气膜场馆:推动体育文化旅游创新发展的关键力量—轻空间
大数据·人工智能·安全·生活·娱乐
芊寻(嵌入式)1 小时前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习
准橙考典1 小时前
怎么能更好的通过驾考呢?
人工智能·笔记·自动驾驶·汽车·学习方法
Suckerbin3 小时前
Hms?: 1渗透测试
学习·安全·网络安全
Diamond技术流3 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
密码小丑3 小时前
11月4日(内网横向移动(一))
笔记
Spring_java_gg3 小时前
如何抵御 Linux 服务器黑客威胁和攻击
linux·服务器·网络·安全·web安全
独行soc4 小时前
#渗透测试#SRC漏洞挖掘#深入挖掘XSS漏洞02之测试流程
web安全·面试·渗透测试·xss·漏洞挖掘·1024程序员节