文件上传 双写后缀

devtools/2024/11/15 0:17:23/

在CTF(Capture The Flag)竞赛中,双写后缀(Double Extension或Duplicate Suffix)是一种绕过文件上传过滤的技术,特别适用于那些基于文件扩展名来确定文件类型的Web应用。这种方法利用了Web服务器或应用程序可能存在的逻辑漏洞,即只检查文件名中的最后一个后缀来决定文件类型。

双写后缀的工作原理:

通常,Web应用会检查上传文件的扩展名,以确保只接受特定类型的文件,如图像(.jpg, .png)。但是,如果应用只是简单地检查文件名中的最后一个后缀,那么上传一个具有双后缀的文件,如shell.php.jpg,就可能绕过检查。

在这种情况下,服务器可能只看到.jpg作为文件的扩展名,认为这是一个图像文件,而忽略了前面的.php部分。然而,实际上,上传的文件包含了PHP代码,当尝试访问shell.php时,服务器可能会尝试执行它作为PHP脚本,而不是显示为图像。

如何利用双写后缀

  1. 创建文件:创建一个包含恶意代码的文件,如PHP shell,并给它一个双后缀的名称,例如shell.php.jpg

  2. 上传文件:使用Web应用的文件上传功能上传此文件。如果应用的过滤逻辑仅仅基于最后一个后缀,上传将成功。

  3. 访问文件:通过访问shell.php(忽略后面的.jpg)来执行恶意代码。如果服务器配置允许,这将使PHP代码被执行。

防御措施:

  1. 深度文件检查:除了检查文件名中的扩展名,还应该检查文件的实际内容和MIME类型,以确认文件的真实类型。

  2. 限制执行权限:确保上传目录下的文件没有执行权限,或者使用白名单机制严格控制哪些类型的文件可以被执行。

  3. 改进文件上传逻辑:不要仅仅依赖文件扩展名来确定文件类型,而应该考虑所有可能的后缀,并进行更深入的内容分析。

  4. 输入验证:对上传的文件名进行严格的验证,拒绝任何包含多个连续点(.)的文件名,以避免双写后缀的尝试。

  5. 安全文件上传处理:上传的文件应该存储在安全的位置,避免直接在Web根目录下存放,同时限制对上传文件的直接访问。


http://www.ppmy.cn/devtools/91538.html

相关文章

测试用例除了覆盖需求,还需要通过什么方式保证测试?

测试用例除了覆盖需求,还可以通过以下方式来保证测试的有效性和全面性: 首先,引入等价类划分和边界值分析的方法。等价类划分可以将输入数据划分为有效等价类和无效等价类,从而减少测试用例的数量但又能保证覆盖主要情况&#xf…

pdf怎么加密码怎么设置密码?pdf加密码的几种设置方法

在数字化时代,信息的保密性与安全性日益成为我们不可忽视的重要环节。尤其对于包含敏感信息或个人隐私的PDF文档而言,保护其免受未授权访问的侵扰显得尤为重要。通过为PDF文档设置密码保护,我们能够筑起一道坚实的防线,确保只有拥…

计算机网络基础之网络套接字socket编程(初步认识UDP、TCP协议)

绪论​ “宿命论是那些缺乏意志力的弱者的借口。 ——罗曼.罗兰”,本章是为应用层打基础,因为在写应用层时将直接通过文本和代码的形式来更加可视化的理解网络,本章主要写的是如何使用网络套接字和udp、tcp初步认识。 话不多说安…

数据中台:业务模型 VS 算法模型,到底该怎么用?

提到数据,就必须提到各种模型。小伙伴们经常有疑惑:从4P、SWOT、RFM到线性回归、决策数、Kmean聚类,都有人管它们叫模型,那这些模型到底有啥区别?今天一文讲清,大家看完再也不迷路哦。 一个例子&#xff0…

MySQL:表的增删查改——CRUD(二)

本篇博客接上篇:MySQL:表的增删查改——CRUD(一)-CSDN博客 目录 1、查询(Retrieve) 1.1 条件查询:WHERE 1.1.1 比较运算符 1.1.2 逻辑运算符 1.1.3 查询语句的执行顺序 1.1.3 SQL代码示例…

2015款到18款奔驰GLC升级为2021款的HU6主机后,实现了触摸屏人机交互和Carplay功能

奔驰GLC是北京奔驰生产的一款中型SUV。有车主将2015款奔驰GLC升级为2021款的HU6主机后,实现了触摸屏人机交互和Carplay功能。该车主分享了使用体验: • Carplay功能:可以直接在车机大屏幕上显示导航、音乐和电话信息,让用户在开车…

思码逸 信通院联合发布:《软件研发效能基准报告》

页数:47页 免费下载:https://fs80.cn/go7exq 本文共计6000字,建议阅读时间:5-10分钟。 阅读本文你将收获: 研发效能基准指标 研发效能基准指标数据:交付速率、交付质量、交付能力 研发效能综合分析&…

Unity 在Editor下保存对Text组件的文本的修改

Unity 在Editor下保存对Text组件的文本的修改 /****************************************************文件:TimeStampForText.cs作者:lenovo邮箱: 日期:2024/8/8 1:9:21功能: *************************************************…