来自 localhost 的这些 .env GET 请求是否表明存在攻击?

Do these .env GET requests from localhost indicate an attack?

在 Heroku 托管站点上出现一些间歇性 5xx 错误后,我正在查看我们的日志,在那里我发现许多错误是从本地主机发出的,并且是对隐藏文件的请求,通常是 .env,但也有类似的东西诸如“.well-known/assetlinks.json”之类的东西,偶尔在不存在的子文件夹中使用 .env。

请求不频繁(每天 15 - 30 次),但似乎已经持续了一周。他们还遇到了“规则禁止访问”,据我所知是 nginx。

请求类似于:

2020/09/28 14:37:44 [error] 160#0: *1928 规则禁止访问,客户端:10.45.153.152,服务器:localhost,请求:“GET /.env HTTP/1.1",主机:已删除

我服务器上没有任何ENV文件,nginx好像是阻塞了请求,所以感觉没有什么坏处。重新启动所有测功机似乎已经杀死了 activity(基于几个小时过去了),但让我担心的是这些似乎“来自屋内”。这里有什么我应该关心的吗?这是机器人利用具有本地访问权限的系统中的错误的情况吗?

/.env 的请求无论如何都是恶意的。

许多应用程序(例如 Laravel 基于)使用 .env 文件来保存非常敏感的数据,例如数据库密码。 Hackers/their 自动化脚本尝试检查 .env 是否 public 可访问。

如果他们首先可以红色 .env 文件,这表明服务器配置不当,服务器管理员以如此糟糕的方式设置服务器,应被视为对后果负责。 ..

后果通常是一回事。黑客一旦获得 .env 数据,便拥有数据库凭据,并且几乎不需要嗅探,就可以找到 PhpMyAdmin 的 URL。因为通常,“错误的配置”包括public可访问的 PhpMyAdmin。

接下来你会知道,他们会通过电子邮件告诉你你的数据库不见了,但他们有。除非你有备份,否则取回它的唯一方法是支付一些加密货币。

做什么

首先确保 .env 不在 public 可访问的目录中。 即使他们是,让 NGINX 拒绝访问他们,例如拒绝访问所有隐藏文件:

location ~ /\. {
    deny all;
}

无论您的系统上是否有任何 .env 文件,您都可以确定与在网络上请求它们相关的流量是恶意的。要减少任何 CPU 负载并防止他们进一步尝试查找网站漏洞,您可以使用 honeypot approach,例如:

location ~ /\.env$ {
    include includes/honeypot.conf;
}

... 将触发 立即 防火墙禁止试图读取 .env 文件的 IP。 这被证明是有用的,因为 .env 利用可能只是许多其他可能攻击中的一种,并且由于相关 IP 被阻止,它无法再尝试。

我有一个用于 404 的 CGI 脚本,每当我收到对 .env 的请求时,它就会发送一个二进制文件。我认为黑客会尝试解析 .env,我希望他的解析器不会喜欢二进制文件。然后我黑洞发出请求的 IP。