Как найти версию 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.