检测Rails是否正在运行站点

Joe*_*oey 6 ruby apache ruby-on-rails passenger nginx

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

我注意到在一些Apache部署中,有一个有用的Passenger Header:

X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.0.3
Run Code Online (Sandbox Code Playgroud)

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

Bek*_*Bek 5

每个Rails站点都有:

meta content="authenticity_token" name="csrf-param'
Run Code Online (Sandbox Code Playgroud)

至少那是我一直以来所看到的。

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

Server:Apache/2.2.14 (Ubuntu)
Server:nginx
Server: thin 1.4.1 codename Chromeo
Run Code Online (Sandbox Code Playgroud)

您知道nginx和Thin在Rails社区中很流行,但这还不足以说服它背后有Rails。您将需要运行一个脚本,该脚本会抓取该网站并在上方查找元标记。如果您的脚本将使用Python,则BeautifulSoup会非常不错。如果您要使用Ruby,则机械化 gem很棒。