我是一个团队,负责管理我公司面向公众的云平台。我们有一个庞大的用户群,运行面向互联网的VM。我想对我们的地址空间进行自动扫描,看看是否有人正在运行Rails应用程序,以便我可以通知他们升级他们的Rails版本,以避免本周出现的严重安全漏洞。
我注意到在某些Apache部署中,有一个有用的乘客标题:
X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.0.3
但是,这不可靠。我想知道是否有一种可靠的方法来检测在Web服务器后面运行的Rails,无论是响应头还是某种可以确定的GET / POST。谢谢!
答案 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文件;如果您正在运行,请使用find
或locate
。
答案 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"