如何在没有访问命令行的情况下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 。