0

我有一个 Rails 应用程序(v4.2)。我有两个操作允许使用回形针上传图像。我对 mime 类型进行了回形针验证。

服务器上的反恶意软件在 /tmp 中发现了一堆 PHP 文件,如下所示:

/tmp/RackMultipart20190610-9668-u9nebk.php

我假设它们是在文件上传过程中创建的。

两个问题:

  1. 我如何追踪他们来自哪里?在我的 production.log 中,我看到一堆 404 用于发布到虚假 joomla 和 wordpress .php 路径的帖子,但没有任何内容可能导致这些上传。

  2. 以后如何防止它们?

我正在使用机架攻击,并且可以阻止 .php 文件扩展名,但是如何阻止表单中的文件上传?

我们有两个地方可供登录会员上传图片或 PDF。如何阻止所有其他上传文件的尝试?

4

1 回答 1

2

文件上传旁路是上传 webshel​​l 和其他东西的常用技术。

有 2 种基本方法可以帮助您减少上传到服务器的文件数量:

MIME 内容类型验证:如果您验证上传文件的内容类型(因为您只需要图像),您可以确保只上传图像类型文件:

:content_type => ["image/gif", "image/jpg", "image/jpeg", "image/png", "image/bmp", "image/x-bmp"]

但这仍然可以绕过,因此您需要添加另一个验证:

文件扩展名验证:您还应该添加文件扩展名验证,以确保您只允许上传图像类型的扩展名。

我找到了一篇很酷的帖子,其中展示了文件扩展名验证的良好实现:https ://stevenyue.com/blogs/validate-attachment-file-size-and-type-in​​-rails/

确保你实现了这两种技术,你应该没问题。

于 2019-06-11T11:12:02.577 回答