如何在没有访问命令行的情况下find运行Apache的版本?

我需要find一个文件,其中的版本是编码或通过networking轮询它的方式,所以它显示其版本。 虽然我可以通过FTP浏览安装位置,但服务器运行在不提供命令行访问权限的主机上。

我试过HEAD,没有得到报告的版本号。

如果我尝试一个缺less的页面来获取404,它将被截取,并且返回没有服务器信息的库存页面。 我想这点指向服务器正在硬化。

仍然没有更接近…

我build议把一个PHP文件,但我不能浏览到它,不能完全找出将加载它的URLpath。 在任何情况下,我得到了大量的访问被拒绝的消息和相同的股票404页面。 我知道该服务器是相当强大的保护,我感到舒适。

方法

连接到主机上的端口80并发送

HEAD / HTTP/1.0 

这需要跟随回车+换行两次

你会回来这样的事情

 HTTP/1.1 200 OK Date: Fri, 03 Oct 2008 12:39:43 GMT Server: Apache/2.2.9 (Ubuntu) DAV/2 SVN/1.5.0 PHP/5.2.6-1ubuntu4 with Suhosin-Patch mod_perl/2.0.4 Perl/v5.10.0 Last-Modified: Thu, 02 Aug 2007 20:50:09 GMT ETag: "438118-197-436bd96872240" Accept-Ranges: bytes Content-Length: 407 Connection: close Content-Type: text/html; charset=UTF-8 

然后你可以从Server:header中提取apache版本

典型的工具,你可以使用

你可以使用Perl的LWP库完整安装的HEAD工具,例如

 HEAD http://your.webserver.com/ 

或者,使用curl工具,例如

  curl --head http://your.webserver.com/ 

您也可以使用浏览器扩展,它允许您查看服务器标题,例如Live HTTP Headers或Firebug for Firefox,或者Fiddler for IE

困在Windows中?

最后。 如果你在Windows上,并没有其他的东西在你的处置,打开一个命令提示符(开始菜单 – >运行,键入“cmd”,然后按回车键),然后键入

 telnet your.webserver.com 80 

然后键入(仔细地,你的angular色不会被回显)

 HEAD / HTTP/1.0 

按两次返回,您将看到服务器标题。

其他方法

正如cfeduke和Veynom提到的那样,服务器可能被设置为返回Server:头中的有限信息。 尝试并将PHP脚本上传到您的主机中

 <?php phpinfo() ?> 

用网页浏览器请求页面,你应该看到在那里报告的Apache版本。

你也可以尝试使用PHPShell来捅一捅,试试类似的命令

 /usr/sbin/apache2 -V 

httpd -v会给你在你的服务器上运行的Apache版本(如果你有SSH / shell的话)。

输出应该是这样的:

 Server version: Apache/2.2.3 Server built: Oct 20 2011 17:00:12 

正如已经提出的,你也可以做apachectl -v ,它会给你相同的输出,但是会受到更多的Linux的支持。

很less,一个强化的HTTP服务器被configuration为不提供服务器信息或误导性的服务器信息。 在这些情况下,如果服务器启用了PHP,您可以添加:

 <?php phpinfo(); ?> 

在一个文件中,并浏览到它并寻找

 _SERVER["SERVER_SOFTWARE"] 

条目。 虽然我会想象它不会经常被改变,但这种方法容易受到信息/误导的强化,因为这种方法首先需要访问机器来创buildPHP文件。

警告,一些Apache服务器在使用HEAD时并不总是发送他们的版本号,就像在这种情况下一样:

 HTTP/1.1 200 OK Date: Fri, 03 Oct 2008 13:09:45 GMT Server: Apache X-Powered-By: PHP/5.2.6RC4-pl0-gentoo Set-Cookie: PHPSESSID=a97a60f86539b5502ad1109f6759585c; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Connection: close Content-Type: text/html Connection to host lost. 

如果安装了PHP,那么只需使用php info命令:

 <?php phpinfo(); ?> 

Apache服务器给出的版本信息级别可以通过configuration中的ServerTokens设置进行configuration。

我相信也有一个设置来控制版本是否出现在服务器错误页面,尽pipe我不记得它是什么在我头上。 如果您没有直接访问服务器,并且服务器pipe理员有能力,并且不希望您知道他们正在运行的版本…我想你可能是SOL 。

如果启用了错误页面,则可以转到不存在的页面并查看404页面的底部。

您的最佳select是通过PHP:由于可以使用ServerTokens Prod和ServerSignature Offconfiguration您的Apache,所以客户端的所有版本请求都不可信。 请参阅: http : //www.petefreitag.com/item/419.cfm

Telnet到端口80的主机。

types:

 get / http1.1 ::enter:: ::enter:: 

这是一种HTTP请求,但它是无效的,所以它给你的500错误可能会给你你想要的信息。 最后的空白行很重要,否则它只会挂起。

在默认安装中,调用一个不存在的页面,并在最后的版本中出现错误:

找不到对象!

在此服务器上找不到请求的URL。 如果您手动inputurl,请检查拼写,然后重试。
如果您认为这是服务器错误,请与网站站长联系。
错误404
本地主机
10/03/08 14:41:45
Apache / 2.2.8(Win32)DAV / 2 mod_ssl / 2.2.8 OpenSSL / 0.9.8g mod_autoindex_color PHP / 5.2.5

简单地使用下面的东西 – string应该已经在那里了:

 <?php if(isset($_SERVER['SERVER_SOFTWARE'])){ echo $_SERVER['SERVER_SOFTWARE']; } ?> 

使用这个PHP脚本:

  $version = apache_get_version(); echo "$version\n"; 

Se apache_get_version