目录
𝓲’𝓶 𝓪 𝓵𝓾𝓷𝓪𝓽𝓲𝓬, 𝓱𝓪𝓱𝓪𝓱𝓪𝓱𝓪, 𝓪𝓷𝔂𝔀𝓪𝔂, 𝓲𝓯 𝔂𝓸𝓾 𝓭𝓸𝓷’𝓽 𝔀𝓾𝓷𝓭𝓮𝓻𝓼𝓽𝓪𝓷𝓭, 𝓘 𝓳𝓾𝓼𝓽 𝔀𝓻𝓲𝓽𝓮 𝓲𝓽 𝓬𝓪𝓼𝓾𝓪𝓵𝓵𝔂, 𝓘’𝓶 𝓪 𝓵𝓾𝓷𝓪𝓽𝓲𝓬
什么是文件上传漏洞?
当服务器允许用户在不验证文件名称、大小、类型、内容等的情况下上传文件时,就会出现文件上传漏洞。在本文中,我们将了解可用于利用不当文件上传功能并绕过常见防御机制的常见攻击媒介。
文件上传请求如何工作
在深入研究文件上传功能的利用部分之前,让我们更深入地了解文件上传请求。文件上传请求有 5 个部分,如下所示:
- 文件名:这是上传文件的文件名。
- Content-Type : Content-Type 头用于指示上传文件的内容类型。例如:对于 png 文件,它是“image/png”,对于文本文件,它是“text/plain”。
- 幻数:幻数是文件开头的一系列十六进制值,用于确定文件内容的类型。
- 文件内容:这是文件的主要内容。
现在我们了解了文件上传请求及其组件的基础知识,让我们探索一些用于利用文件上传的技术。
为什么文件上传漏洞是个问题?
文件上传漏洞往往被标记为高严重性。以下是文件上传功能实施不当带来的一些风险:
- 服务器端攻击:文件上传漏洞可以通过上传恶意 web-shell 来破坏,该 web-shell 允许攻击者运行任意命令、浏览本地文件等。
- 客户端攻击:文件上传漏洞还使应用程序容易受到跨站点脚本攻击或跨站点内容劫持。
- DoS 攻击:文件上传功能的不当实施也会导致拒绝服务攻击。
- 文件上传页面有时会在错误消息中泄露内部敏感信息,例如服务器内部路径。
从某种意义上说,文件上传漏洞是许多其他可能严重危害您的应用程序的安全漏洞的“网关漏洞”。现在我们来看看攻击者用来利用此漏洞的一些具体技术。
漏洞 #1:通过文件内容
远程代码执行(Web Shell 上传)
让我们从一个基本的 web shell 上传开始,它允许您在易受攻击的服务器上运行任意命令。在下面的示例中,该应用程序在易受攻击的服务器上没有安全性,这允许攻击者上传具有以下有效负载的恶意 php 文件:
<?php echo</