我在我的网站上运行了一个恶意软件扫描程序,它将一堆压缩的 EXE 文件标记为潜在的风险文件(这些文件是由用户上传的)。由于我能够在我的 Mac 上解压缩文件,我假设这些是真正的 ZIP 文件,而不仅仅是重命名的 PHP 文件。
所以 ZIP 文件不应该对我的网络服务器有任何风险,对吧?
我在我的网站上运行了一个恶意软件扫描程序,它将一堆压缩的 EXE 文件标记为潜在的风险文件(这些文件是由用户上传的)。由于我能够在我的 Mac 上解压缩文件,我假设这些是真正的 ZIP 文件,而不仅仅是重命名的 PHP 文件。
所以 ZIP 文件不应该对我的网络服务器有任何风险,对吧?
如果它们确实是压缩的 Windows exe 文件,它们应该对你的 Linux 系统无害,除非你有类似 Wine 之类的东西可以尝试执行它们。
但是,如果它们在您的网络路径中,它们可能是恶意软件,并对您网站的访问者构成巨大风险(反过来,如果您最终被标记为恶意软件来源,并且用户在尝试访问您的网站时会收到丑陋的警告)地点)。
虽然在这种情况下您可能是对的,但您的假设可能并不总是成立。即使您在 ZIP 存档中添加任意数据,它仍然有效,因此很有可能创建一个文件,该文件同时是一个有效的 ZIP 存档,其中包含无害数据和恶意 PHP 脚本。这甚至不是特别难。只需连接 PHP 代码和 ZIP 文件,并确保(例如使用
__halt_compiler()
)PHP 不会尝试解析附加的 ZIP 存档数据。这个技巧被合法地用于创建自解压 ZIP 文件,但完全有可能以相同的方式将任何其他隐藏数据或可执行代码添加到 ZIP 文件中。某些程序可能会拒绝打开此类修改过的 ZIP 文件(但如果是这样,它们在技术上违反了 ZIP 格式规范),或者默认情况下它们可能会将文件识别为 ZIP 文件以外的东西,但通常,如果您提供这样的文件转换为需要 ZIP 文件的代码,它可能会被接受为一个。
此类技巧的更常见恶意使用是将基于 ZIP 的容器(例如 JAR 文件)中的漏洞利用代码伪装成无害的东西(例如 GIF 图像,如GIFAR漏洞利用中的),但没有理由不能这样做也用于另一个方向,例如绕过一个禁止上传 PHP 脚本但允许 ZIP 文件的简单文件上传过滤器,而不检查上传的文件是否可能同时存在。
您应该考虑至少两个值得注意的注意事项:
因此,根据您的服务器执行的操作,该文件可能对您的服务器或其他用户有害。由于我对从 Internet 下载的 EXE 非常警惕,我想说可能的下载者是这里最有风险的潜在用户。
file FILENAME.exe
您可以通过简单地使用命令检查这些文件是否恰好可以在您的 Linux 服务器上运行。Elf 二进制文件(Linux 上使用的可执行格式)可以用.exe
扩展名来命名,以混淆毫无戒心的 Linux 管理员,因此在盲目相信这些文件不可运行之前进行检查可能是个好主意。我很惊讶没有人提到任何数据可能碰巧(或被制造)对任何(有缺陷的)程序有害。这就是模糊的基础。例如,您可能有一个 JPEG(或类似 JPEG)文件,该文件会导致(特定?)JPEG 解码器上的缓冲区溢出,从而导致从拒绝服务到任意代码执行的任何事情。这是关于颠覆现有的数据处理程序;无需引入新的可执行文件!这就是为什么需要沙盒、输入清理和最小权限原则的原因。
因此,在您的情况下,您可能有一个 ZIP 文件导致(特定?)ZIP 解码引擎出现问题。ZIP 文件不需要包含本机可执行文件,因为它是有害的。
话虽如此,您的扫描仪正在另一个更粗略的水平上工作。如果我正在谈论的那种风险存在于这些文件中,那么您在处理它们的那一刻就已经受到打击:)。
存在嵌入数据但仍将文件显示为有效的攻击。在配置错误的服务器或编码错误的应用程序中,这些可能会导致代码在您的服务器中执行。
所以,也要小心。
理想情况下,您应该进行的另一项检查是使用php finfo 方法来检查用户上传的文件是否实际上是您允许的,而不是用户重命名文件只是为了欺骗系统。
解压后的 .exe 对 Linux 服务器也是无害的。