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

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

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

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

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

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

Ответ 1

Метод

Подключитесь к порту 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

Затем вы можете извлечь версию apache из заголовка Server:

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

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

HEAD http://your.webserver.com/

Или используйте утилиту curl, например

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

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

Застрял в Windows?

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

telnet your.webserver.com 80

Затем введите (осторожно, ваши символы не будут отозваны обратно)

HEAD / HTTP/1.0

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

Другие методы

Как упоминалось cfeduke и Veynom, сервер может быть установлен для возврата ограниченной информации в заголовок Server:. Попробуйте загрузить PHP script на ваш хост с этим в нем

<?php phpinfo() ?>

Запросите страницу с помощью веб-браузера, и вы должны увидеть версию Apache, указанную там.

Вы также можете попытаться использовать PHPShell, чтобы попытаться сделать что-то вроде

/usr/sbin/apache2 -V

Ответ 2

httpd -v предоставит вам версию Apache, запущенную на вашем сервере (если у вас есть доступ к SSH/shell).

Результат должен быть примерно таким:

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

Как было предложено, вы также можете сделать apachectl -v, который даст вам тот же результат, но будет поддерживаться большим количеством возможностей Linux.

Ответ 3

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

<?php phpinfo(); ?>

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

_SERVER["SERVER_SOFTWARE"]

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

Ответ 4

Предупреждение. Некоторые серверы 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(); ?>

Ответ 5

Уровень информации о версии, выданный сервером Apache, можно настроить с помощью настройки ServerTokens в своей конфигурации.

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

Ответ 6

Telnet для хоста на порту 80.

Тип:

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

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

Ответ 7

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

Ответ 8

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

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

Запрошенный 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.8g mod_autoindex_color PHP/5.2.5

Ответ 9

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

Ответ 10

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

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

Ответ 11

Используйте этот PHP script:

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

Se apache_get_version.