如何在不访问命令行的情况下找到运行的Apache版本?

Sim*_*mon 72 apache

我需要找到一个编码版本的文件或一种在网络上进行轮询的方式,以便显示其版本.虽然我可以通过FTP浏览安装位置,但服务器正在主机上运行,​​但不会为我提供命令行访问权限.

我已经尝试过HEAD并且没有报告版本号.

如果我尝试丢失页面来获取404它将被拦截,并返回一个没有服务器信息的库存页面.我想这表明服务器正在变硬.

仍然没有更近......

我按照建议添加了一个PHP文件,但是我无法浏览它并且无法确定将加载它的URL路径.在任何情况下,我都会收到大量访问被拒绝的消息和相同的404页面.我知道服务器受到很强的保护,我感到很欣慰.

Pau*_*xon 127

方法

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

HEAD / HTTP/1.0
Run Code Online (Sandbox Code Playgroud)

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

你会得到这样的东西

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
Run Code Online (Sandbox Code Playgroud)

然后,您可以从Server:标头中提取apache版本

您可以使用的典型工具

您可以使用完整安装Perl的LWP库附带的HEAD实用程序,例如

HEAD http://your.webserver.com/
Run Code Online (Sandbox Code Playgroud)

或者,使用curl实用程序,例如

 curl --head http://your.webserver.com/
Run Code Online (Sandbox Code Playgroud)

您还可以使用浏览器扩展来查看服务器标头,例如Live HTTP HeadersFirebug for Firefox,或Fiddler for IE

坚持使用Windows?

最后.如果您使用的是Windows,并且没有任何其他内容可供使用,请打开命令提示符("开始"菜单 - >"运行",键入"cmd"并按"返回"),然后键入此

telnet your.webserver.com 80
Run Code Online (Sandbox Code Playgroud)

然后输入(仔细,你的角色不会被回复)

HEAD / HTTP/1.0
Run Code Online (Sandbox Code Playgroud)

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

其他方法

如cfeduke和Veynom所述,服务器可能被设置为在Server:头中返回有限的信息.尝试将PHP脚本上传到主机中

<?php phpinfo() ?>
Run Code Online (Sandbox Code Playgroud)

使用Web浏览器请求页面,您应该看到在那里报告的Apache版本.

您也可以尝试使用PHPShell进行搜索,尝试使用类似命令

/usr/sbin/apache2 -V
Run Code Online (Sandbox Code Playgroud)

  • 此外,在Windows 7上使用命令提示符时,请务必注意需要启用telnet:开始>控制面板>程序和功能>打开或关闭Windows功能>确保选中"Telnet客户端">单击"确定" (7认同)
  • 很近.然而,服务器只是说"Apache",根本没有版本细节 (6认同)

crm*_*cco 43

httpd -v 将为您提供服务器上运行的Apache版本(如果您有SSH/shell访问权限).

输出应该是这样的:

Server version: Apache/2.2.3
Server built:   Oct 20 2011 17:00:12
Run Code Online (Sandbox Code Playgroud)

正如已经建议的那样,你也可以做apachectl -v同样的输出,但是会有更多版本的Linux支持.

  • 在Ubuntu上,二进制文件称为"apache2",而不是"httpd" (15认同)

cfe*_*uke 5

很少,强化的HTTP服务器配置为不提供服务器信息或误导服务器信息.在这些情况下,如果服务器启用了PHP,您可以添加:

<?php phpinfo(); ?>
Run Code Online (Sandbox Code Playgroud)

在文件中浏览并查找

_SERVER["SERVER_SOFTWARE"]
Run Code Online (Sandbox Code Playgroud)

条目.虽然我认为它不会经常改变,但是这种方法很容易受到相同的强化缺乏信息/误导的影响,因为这种方法首先需要访问机器才能创建PHP文件.


Vey*_*nom 5

警告,某些 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.
Run Code Online (Sandbox Code Playgroud)

如果确实安装了 PHP,则只需使用 php info 命令:

<?php phpinfo(); ?>
Run Code Online (Sandbox Code Playgroud)

  • `phpinfo()` 也并不总是显示 Apache 版本,至少在使用 CGI/FastCGI 时不会。 (2认同)