随机 URL 字符串:这是一种什么样的攻击,可以采取什么措施来阻止它?

信息安全 攻击 攻击预防 。网
2021-08-28 23:02:06

编辑:

自从发布此消息以来已经有一段时间了,但我在这里报告这似乎并不是某种攻击。

相反,这个特定的 URL 字符串表示无cookie 会话

似乎这只不过是我们的一个(或多个)用户在禁用 cookie 的情况下访问我们的网站,并且我们的应用程序没有设置为正确处理插入到 URL 字符串中的问题。

我想仍然有可能有人试图操纵这种效果(时间戳和频率很有趣),但我相信这更有可能是我们跳上“我们被攻击了!”的情况。训练有点太早了。很难找到这方面的信息!

最终,当我在我们的(隔离的)测试环境中遇到这个确切的 URL 模式并决定对这个问题做一些额外的研究时,我们发现了这一点。

感谢大家对此的帮助,如有任何混淆,我们深表歉意!我将保留最初的问题,以避免使已经存在的答案无效。

原文:

我在一家为客户提供面向公众的网站的公司工作。在过去的几周里,我们看到了一系列如下所示的日志条目:

The controller for path '/(x(1)s(mpwcjessdyhikng0a1kyud1z))/' was not found or does not implement IController.

这些条目通常相隔约 1 秒,并且总是x(1)s以随机字符串开头,然后是不同页面的各种路径,尤其是/account or /account/recoverpasswordrequest/. 这往往会持续 10 到 30 分钟,然后我们通常要到第二天才能再次看到它,尽管它几乎每天都会发生。

我们已将发生这种情况的几个 IP 列入黑名单,但此人显然使用许多不同的 IP 来运行执行此操作的任何脚本。

任何人都可以帮助我了解这里发生了什么,尤其x(1)s是这个人可能试图获得的信息或什么样的信息?攻击碰巧失败了,因为我们没有一个随机命名的控制器来接受这些信息,但是能够制止这种情况或者至少对正在发生的事情有更好的了解会很棒。

编辑:这个“请求”总是遵循相同的(x(1)s(random))模式。有 3 个 URL 主要被点击:

The controller for path '/(x(1)s(31k5il1as0vxxnbfnnsrzm3b))/' was not found or does not implement IController. The controller for path '/(x(1)s(31k5il1as0vxxnbfnnsrzm3b))/account/register' was not found or does not implement IController. The controller for path '/(x(1)s(31k5il1as0vxxnbfnnsrzm3b))/account/recoverpasswordrequest' was not found or does not implement IController.

完整的 URL 将是: https://example.com/(these requests)

该站点使用 MVC,因此这些特定的错误消息是由于我们没有一个名为(x(1)s(blah))该 URL 可以解析的控制器日志条目显示所有 3 个 URL 都使用相同的随机字符串,然后生成一个新的随机字符串并再次尝试相同的模式。

这些日志条目来自此请求失败并导致我们的应用程序逻辑异常。因此,他们绕过了防火墙,实际上在我们的代码中失败了。

4个回答

这种模式在我看来就像模糊逻辑/测试。

原因可能是对您的基础设施进行指纹识别

和/或

获取/查找您的网络软件中可以进一步开发的任何错误

和/或

在网站上查找不安全的资源以窃取一些内部/客户信息。

模糊逻辑的使用似乎也用于搜索网站/应用程序中的有效路径

PS 当然,以上是最坏的情况,但在安全方面,恕我直言,这是对特定问题进行良好评估的方法

我同意@RomeoNinov 的观点,这可能是模糊逻辑/测试,或者只是扫描所有可用应用程序的扫描仪。为了阻止这种情况,您最好将所有可接受的请求列入白名单。否则,您会通过阻止所有太大而无法跟上的不必要的请求来玩打地鼠游戏。

我的建议是利用 IIS 请求过滤,因为它是 IIS7+ 中的本机功能。将所有应用程序的 URL(即 cs-uri-stem)添加到alwaysAllowedUrls设置中。然后将允许的文件扩展名设置为以下,因为它只允许默认文档而不允许其他文档。只需将这两项放在适当的位置,就会在 IIS 管道中很早就返回 HTTP 404,因此应用程序代码不会处理该请求。

<fileExtensions allowUnlisted="false">
    <clear/>
    <add fileExtension="." allowed="true" />
</fileExtensions>

FWIW,我一直在我的博客上发布关于为 IIS 请求过滤定义阈值的文章。还有很多要补充的,但希望它能帮助你入门。

如果用户禁用了 cookie,似乎会发生这种情况,因此它回退到在 URL 中包含信息:

http://blog.syedgakbar.com/2013/02/asp-net-cookieless-session-and-absolute-urls/

一些 unix 系统不能正确处理路径名中的非转义括号,特别是如果系统正在使用某种脚本来进行 URL 重写或类似的事情。

我不知道您所说的“MVC”(System.Web.Mvc 框架?)是什么意思。

除了禁止 IP 之外,您无法阻止此类探测。以前我做web服务器的时候,我不得不封锁整个台湾岛(因为当时中国所有的流量都经过台湾)。