Как узнать версию 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'];
}
?>