文件上传限制绕过

栏目: 服务器 · Apache · 发布时间: 6年前

内容简介:本文将讨论Web应用程序如何处理文件上传的方法,以及如何验证发送到服务器的文件以及如何绕过这些验证。客户端验证是一种在输入内容实际发送到服务器之前进行的验证。它通过JavaScript,VBScript或HTML5属性在Web浏览器上进行。程序员使用此类验证通过在浏览器级别快速响应来提供更好的用户体验。

作者: {Persist}@ArkTeam

本文将讨论Web应用程序如何处理文件上传的方法,以及如何验证发送到服务器的文件以及如何绕过这些验证。

  • 客户端过滤验证

客户端验证是一种在输入内容实际发送到服务器之前进行的验证。它通过JavaScript,VBScript或HTML5属性在Web浏览器上进行。程序员使用此类验证通过在浏览器级别快速响应来提供更好的用户体验。

  • 客户端过滤绕过

通过关闭浏览器上的JavaScript或在请求退出浏览器之后以及在将其发送到服务器之前篡改HTTP请求,可以轻松绕过这种类型的验证。

文件上传限制绕过

图1 客户端过滤绕过

我们能够通过浏览器上传常规图像然后通过更改请求来绕过这种类型的验证。在这种情况下,我们重命名该文件并使用.php扩展名而不是.jpeg扩展名,我们还用恶意代码替换了该文件的内容。

  • 文件扩展名验证

文件名验证是指服务器通过检查其扩展名来验证正在上载的文件时,此验证基于许多方法进行,但两种最常用的方法是黑名单文件扩展名和白名单文件扩展名。黑名单文件扩展名是一种保护类型,其中只有特定的扩展名被拒绝从服务器,如php,aspx。 虽然白名单文件扩展名正好相反,但只允许将少量文件扩展名上传到服务器,例如jpg,jpeg,gif。

文件上传限制绕过

图2 文件扩展名名白名单验证

  • 文件扩展名绕过

一些文件名验证方法可以通过上传不同的不受欢迎的扩展或在上传文件时使用一些技巧绕过这种类型的验证来绕过。

绕过黑名单和白名单:

  • 黑名单绕过

可以通过上传不受欢迎的 php 扩展来绕过黑名单。如:pht,phpt,phtml,php3,php4,php5,php6。

文件上传限制绕过

图3 文件扩展名黑名单验证绕过

如图3所示,我们可以上传php文件但是使用.php5扩展名来绕过验证,而且Apache服务器可以把它自动识别为PHP文件运行。

  • 白名单绕过

可以通过上传具有某种类型技巧的文件来绕过白名单,例如添加空字节注入,如(shell.php%00.gif)。 或者对上传的文件使用双扩展名(shell.jpg.php)。

文件上传限制绕过

图4 文件扩展名白名单验证绕过

如图4所示,我们能够通过上传带有双扩展名的php文件来绕过此验证,以通过将”shell.jpg.php”上传到服务器来绕过此类验证。

  • 内容类型验证

内容类型验证是指服务器通过检查文件的MIME类型来验证文件的内容,该类型可以在http请求中显示。例如,某些图像文件上传通过检查文件的内容类型是否为图像类型来验证上载的图像。

文件上传限制绕过

图5 内容类型验证

  • 内容类型绕过

可以通过将文件名更改为”shell.php”或”shell.aspx”,但将”Content-Type”参数保持为”image / *”Content-Type来绕过此类验证。 例如”image / png”,”image / jpeg”和”image / gif”。

文件上传限制绕过

图6 内容类型绕过

我们可以通过上传可执行文件轻松绕过这种类型的验证,在我们操作请求并将”Content-Type”字段更改为Web服务器接受的图像的MIME类型之后。

  • 内容长度验证

内容长度验证是指服务器检查上载文件内容的长度并限制不能超过的文件大小,虽然这种类型的验证不是很流行,但它可以显示在某些文件上传中。

  • 内容长度绕过

这种类型的验证可以通过在上传文件中上传非常短的恶意代码来绕过,具体取决于Web服务器上的最大大小限制。我们可以通过使用不同的文件大小和检查来模糊文件上载器来计算Web服务器上的特定大小 是否接受该文件。


以上所述就是小编给大家介绍的《文件上传限制绕过》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C语言进阶

C语言进阶

牟海军 / 机械工业出版社 / 2012-7 / 59.00元

C语言是编程语言中的一朵奇葩,虽已垂垂老矣,但却屹立不倒,诞生了数十年,仍然是最流行的编程语言之一。C语言看似简单,却不易吃透,想要运用好,更是需要积淀。本书是一本修炼C程序设计能力的进阶之作,它没有系统地去讲解C语言的语法和编程方法,而是只对C语言中不容易被初学者理解的重点、难点和疑点进行了细致而深入的解读,揭露了C语言中那些鲜为普通开发者所知的秘密,旨在让读者真正掌握C语言,从而编写出更高质量......一起来看看 《C语言进阶》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具