Как узнать версию Apache работает без доступа к командной строке?

Мне нужно либо найти файл, в котором закодирована версия, либо способ опроса его через интернет, чтобы он показал свою версию. Сервер работает на хосте, который не предоставляет мне доступ к командной строке, хотя я могу просматривать местоположение установки через FTP.

Я пробовал HEAD и не получаю номер версии.

Если я попробую недостающую страницу, чтобы получить 404, она перехватывается, и возвращается страница запаса, на которой нет информации о сервере. Думаю, что указывает на закаленный сервер.

все еще не ближе...

Я поместил файл PHP, как было предложено, но я не могу перейти к нему и не могу понять путь URL, который его загрузит. В любом случае я получаю много сообщений об отказе в доступе и ту же страницу 404. Я получаю некоторое утешение, зная, что сервер довольно надежно защищен.

11 ответов


метод

подключитесь к порту 80 на хосте и отправьте его

HEAD / HTTP/1.0

за этим должен следовать carriage-return + line-feed дважды

вы получите что-то вроде этого

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

затем вы можете извлечь версию apache с сервера: header

типичные инструменты, которые вы можете использовать

вы можете использовать утилиту HEAD, которая поставляется с полной установкой Perl LWP библиотека, например,

HEAD http://your.webserver.com/

или curl утилиты, например,

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

вы также можете использовать расширение браузера, которое позволяет просматривать заголовки серверов, такие как Live HTTP заголовки или Палий для Firefox, или Саша для IE

застрял с Windows?

наконец-то. если вы находитесь в Windows, и больше ничего в вашем распоряжении, откройте командную строку (меню Пуск- > Выполнить, введите "cmd" и нажмите return), а затем введите это

telnet your.webserver.com 80

затем введите (осторожно, ваши персонажи не будут повторяться)

HEAD / HTTP/1.0

нажмите return дважды, и вы увидите заголовки сервера.

другие способы

как упоминалось 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.


редко закаленный HTTP-сервер настроен так, чтобы не давать никакой информации о сервере или вводящей в заблуждение информации о сервере. В этих сценариях, если на сервере включен PHP, вы можете добавить:

<?php phpinfo(); ?>

в файле и перейдите к нему и найдите

_SERVER["SERVER_SOFTWARE"]

запись. Это восприимчиво к тому же отсутствию информации/вводящей в заблуждение, хотя я бы предположил, что он не часто изменяется, потому что этот метод сначала требует доступа к машине для создания PHP файл.


Внимание, некоторые серверы 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, может быть настроен параметром ServerTokens в его конфигурации.

Я считаю, что есть также параметр, который контролирует, появляется ли версия на страницах ошибок сервера, хотя я не могу вспомнить, что это такое с моей головы. Если у вас нет прямого доступа к серверу, и администратор сервера компетентен и не хочет, чтобы вы знали версию, которую они запускают... Я думаю, вы можете быть соль.


Telnet к хосту на порту 80.

тип:

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

это своего рода HTTP-запрос, но он недействителен, поэтому ошибка 500, которую он дает, вероятно, даст вам нужную информацию. Пустые строки в конце важны, иначе будет казаться, что они просто висят.


Если у них включены страницы ошибок, вы можете перейти на несуществующую страницу и посмотреть в нижней части страницы 404.


ваш лучший вариант - через PHP: Всем запросам версий со стороны клиента нельзя доверять, так как ваш Apache можно настроить с помощью ServerTokens Prod и ServerSignature Off. Смотри:http://www.petefreitag.com/item/419.cfm


при установке по умолчанию, называть страницу, которая не существует и вы получите ошибку с версией в конце:

объект не найден!

запрошенный url не найден на этом сервере. Если вы ввели url вручную, пожалуйста проверьте орфографию и повторите попытку.
Если вы считаете, что это ошибка сервера, обратитесь к веб-мастеру.
Ошибка 404
имя localhost
10/03/08 14:41:45
В Apache/2.2.8 (Win32) будут в DAV/2 расширением mod_ssl/2.2.8 OpenSSL и/0.9.8 г mod_autoindex_color на PHP/5.2.5


просто используйте что - то вроде следующего-строка должна быть там уже:

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

используйте этот PHP скрипт:

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

Se apache_get_version.