6

我是管理公司面向公众的云平台的团队的一员。我们拥有大量运行面向互联网的虚拟机的用户群。我想对我们的地址空间进行自动扫描,看看是否有人在运行 Rails 应用程序,以便通知他们升级他们的 Rails 版本以避免本周出现的严重安全漏洞。

我注意到在一些 Apache 部署中,有一个有用的乘客标头:

X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.0.3

但是,这并不可靠。我想知道是否有一种可靠的方法来检测在 Web 服务器后面运行的 Rails,无论是使用响应标头还是某种可以确定的 GET / POST。谢谢!

4

5 回答 5

5

每个 Rails 站点都有:

meta content="authenticity_token" name="csrf-param'

至少这是我一直看到的。

标头响应不可靠,以下是来自各个 Rails 站点的三个:

Server:Apache/2.2.14 (Ubuntu)
Server:nginx
Server: thin 1.4.1 codename Chromeo

您知道 nginx 和 Thin 在 Rails 社区中很受欢迎,但这还不足以说明它背后有 Rails。您需要运行一个脚本来抓取该站点并查找上面的元标记。如果您的脚本将使用 Python, BeautifulSoup非常好。如果您使用 Ruby,Mechanize gem 非常棒。

于 2013-01-10T19:01:02.383 回答
0

根据允许的配置,Rails 应用程序可以在许多不同的端口上运行。再加上应用程序可能无法以您可以识别的方式响应这一事实,这似乎是一种“次优”的查找方式。

相反,如果您拥有主机,则您拥有支持应用程序的驱动器和系统。为什么不grep跨系统运行,寻找匹配 Rails 的字符串。

或者搜索一些标准的 Rails 文件;使用find,或者locate如果您正在运行它。

于 2013-01-10T18:48:52.440 回答
0

Rails 另一个通常保持不变的默认设置是主 /assets/application-<hex hash>.{css,js}文件的名称。

我不认为存在检测 Rails 的单一可靠方法,但是通过使用authenticity_token、默认资产名称和 HTTP 标头的组合,您应该能够识别绝大多数 Rails 应用程序。

Wappalyzer脚本使用这三个标准,并认为两个同时出现表示 Rails 应用程序

于 2013-01-10T20:55:20.623 回答
0

Wappalyzer 是一个不错的选择,而且(无耻的插件)你看过Spotkick吗?我们现在处于私有测试阶段,但它是一个用于运行开源应用程序的分布式引擎,因此您可以在所有站点上运行 Wappalyzer 以查看可能正在运行的轨道。

我为 banklook.com 做这件事——我运行了大约 6800 家银行来挖掘有关安全风险的详细信息。

如果您需要更多详细信息或信息,请告诉我。

于 2013-03-02T17:33:12.640 回答
0

大多数 Rails 应用程序都有一个提交按钮,其中name="commit"

于 2017-01-12T20:33:34.473 回答