检测Rails是否正在运行站点

时间:2013-01-10 18:27:52

标签: ruby-on-rails ruby apache nginx passenger

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

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

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

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

5 个答案:

答案 0 :(得分: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是很棒的。

答案 1 :(得分:0)

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

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

或者搜索一些标准的Rails文件;如果您正在运行,请使用findlocate

答案 2 :(得分:0)

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

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

Wappalyzer脚本使用这三个标准,并认为两个共现表示一个Rails应用程序。

答案 3 :(得分:0)

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

我为banklook.com做这件事 - 我跑了大约6800家银行来挖掘安全风险的细节。

如果您需要更多详细信息或信息,请与我们联系。

答案 4 :(得分:0)

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