Как мне найти версию Apache, работающую без доступа к командной строке? - PullRequest
68 голосов
/ 03 октября 2008

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

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

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

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

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

Ответы [ 11 ]

125 голосов
/ 03 октября 2008

Способ

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

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

Вы можете использовать утилиту 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» и нажмите клавишу возврата), а затем введите

telnet your.webserver.com 80

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

HEAD / HTTP/1.0

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

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

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

<?php phpinfo() ?>

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

Вы также можете попробовать PHPShell , чтобы поэкспериментировать, попробуйте команду вроде

/usr/sbin/apache2 -V
43 голосов
/ 24 августа 2012

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

Вывод должен быть примерно таким:

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

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

5 голосов
/ 03 октября 2008

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

<?php phpinfo(); ?>

в файле и найдите его и найдите

_SERVER["SERVER_SOFTWARE"]

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

4 голосов
/ 03 октября 2008

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

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

4 голосов
/ 03 октября 2008

Предупреждение, некоторые серверы 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(); ?>
1 голос
/ 03 октября 2008

Telnet к хосту через порт 80.

Тип:

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

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

0 голосов
/ 17 августа 2015

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

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

Se apache_get_version .

0 голосов
/ 24 мая 2014

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

<?php
   if(isset($_SERVER['SERVER_SOFTWARE'])){
      echo $_SERVER['SERVER_SOFTWARE'];
   }
?>
0 голосов
/ 03 октября 2008

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

0 голосов
/ 03 октября 2008

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

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

Запрошенный URL не найден на этом сервере. Если вы ввели URL-адрес вручную, пожалуйста, Проверьте правильность написания и повторите попытку.
Если вы считаете, что это ошибка сервера, обратитесь к веб-мастеру.
Ошибка 404
местный хост
03.10.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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...