我们如何判断用于呈现HTML文档的语言/技术?

时间:2009-10-05 00:40:38

标签: web-applications web fingerprinting

通常,Web应用程序可以呈现它喜欢的任何HTML。因此,从理论上讲,任何语言都可以呈现相同的HTML输出。

但是,我们可以通过一些方法来推断运行服务器端的内容。例如,文件扩展名通常是一个死的赠品(尽管它们在技术上可能是伪造的)。由于我在ASP.NET方面的经验,我知道我们可以识别ASP.NET应用程序的一种方法是在呈现的文档中存在VIEWSTATE,尽管缺少viewstate并不一定意味着应用程序不是在ASP.NET上运行

我们可以在服务器上运行一些操作系统/服务器指纹识别,但总的来说这没什么用 - 现在,即使是Windows服务器也可以运行很多应用程序平台。

还有哪些其他分析技术可以帮助我们确定服务器上运行的是什么?某些语言会留下什么其他线索?

如果我们能够更好地理解我们的应用程序正在离开的工件,可能很小,以至于我们没有注意到它们,我们可以通过从输出中删除它们来开始更好的安全性。

3 个答案:

答案 0 :(得分:2)

检查HTTP标头是一个好的开始。 IIS6和ASP.Net默认情况下似乎插入一个X-Powered-By Header,ASP.Net作为值。

答案 1 :(得分:0)

在HTTP标头中,您(通常但不总是)会找到名为Server的标头,该标头指示用于为网页提供服务的Web服务器。有时您会找到一个名为X-Powered-By的标题,表示Web服务器使用的平台/技术。

答案 2 :(得分:0)

https://addons.mozilla.org/en-US/firefox/addon/2166

正如其他人提到的,您可以查看ServerX-Powered-By标题。例如,stackoverflow的服务器是Server: Microsoft-IIS/7.0,所以我可以推断这是ASP驱动的。

以下是我访问的一些随机网站和一些X-Powered-By标题:

  • X-Powered-By: PHP/5.2.9。 (php论坛)
  • X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.0.3(rubyonrails.org)

其他Web应用程序在页脚中有一个可以看到的签名,例如Powered-By(应用程序名称)。