2008-10-03 11 views
61

Necesito encontrar un archivo en el que está codificada la versión o una forma de sondearla en la web para que revele su versión. El servidor se está ejecutando en un host que no me proporcionará acceso a la línea de comandos, aunque puedo navegar por la ubicación de instalación a través de FTP.¿Cómo encuentro la versión de Apache ejecutándose sin acceso a la línea de comando?

He intentado con HEAD y no me informan el número de versión.

Si intento que falte una página para obtener un 404, se intercepta y se devuelve una página de stock que no contiene información del servidor. Supongo que eso apunta al endurecimiento del servidor.

Aún no está más cerca ...

pongo un archivo PHP como se sugiere, pero no puede navegar a la misma y no se puede averiguar por la ruta URL que cargarlo. En cualquier caso, recibo muchos mensajes de acceso denegado y la misma página 404 de stock. Me reconforta saber que el servidor está bastante protegido.

+0

¿Puede ejecutar comandos de shell en scripts en el servidor? – workmad3

+0

buena pregunta, no sé. Voy a probar – Simon

+0

Puedes instalar PHPShell desde http://phpshell.sourceforge.net/, que te permitirá echar un vistazo alrededor de –

Respuesta

116

El método

Conectar al puerto 80 en el host y enviarlo

HEAD/HTTP/1.0 

Esto debe ser seguido por el retorno de carro + salto de línea dos veces

que pondremos algo como esto

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 

Luego puede extraer la versión apache del Servidor: he Ader

herramientas típicas puede utilizar

podría utilizar la utilidad de cabeza que viene con una instalación completa de LWP biblioteca de Perl, por ejemplo,

HEAD http://your.webserver.com/ 

O utilice la utilidad curl, p.

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

También es posible usar una extensión del navegador que permite ver los encabezados de servidor, como Live HTTP HeadersFirebug o para Firefox, o Fiddler para IE

Stuck con Windows?

Finalmente. Si estás en Windows, y no tienen nada más a su disposición, abra un símbolo del sistema (Menú Inicio-> Ejecutar, escriba "cmd" y pulse retorno) y escriba este

telnet your.webserver.com 80 

A continuación, escriba (con cuidado , sus personajes no se hicieron eco de la espalda)

HEAD/HTTP/1.0 

Prensa retorno dos veces y verá los encabezados de servidor.

Otros métodos

Como se mencionó por cfeduke y Veynom, el servidor se pueden establecer para devolver información limitada en el Servidor: cabecera.Tratar de cargar un script PHP a su anfitrión con esto en él

<?php phpinfo() ?> 

Solicitud a la página con un navegador web y debería ver la versión de Apache informó allí.

También podría tratar de utilizar PHPShell tener un empuje alrededor, trata de un comando como

/usr/sbin/apache2 -V 
+5

tan cerca. Sin embargo, el servidor simplemente dice "Apache" sin detalles de la versión en absoluto – Simon

+0

Justo lo que escribí también. :) Solo Apache en algunos casos. – Veynom

+7

Además, al usar el símbolo del sistema en Windows 7, es importante tener en cuenta que Telnet debe estar habilitado: Inicio> Panel de control> Programas y características> Activar o desactivar las características de Windows> Asegúrese de que "Cliente Telnet" esté marcado> Aceptar Aceptar – gmeben

1

Telnet al host en el puerto 80.

Tipo:

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

Se es una especie de solicitud HTTP, pero no es válida, por lo que el error 500 que le da probablemente le proporcione la información que desea. Las líneas en blanco al final son importantes; de lo contrario, parecerán colgarse.

0

Si tienen páginas de error habilitadas, puede ir a una página que no existe y buscar en la parte inferior de la página 404.

+0

Si el host tiene habilitado un controlador 404 personalizado, esto no funcionará, p. http://www.microsoft.com/this_is_a_made_up_page – ConroyP

0

En la instalación por defecto, llamar a una página que aún no existe y se produce un error con la versión al final:

Objeto no encontrado!

La URL solicitada no se encontró en este servidor. Si ingresó la URL manualmente, por favor, revise su ortografía y vuelva a intentarlo.
Si cree que se trata de un error del servidor, póngase en contacto con el webmaster.
Error 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

5

En raras ocasiones, un servidor HTTP reforzado se configura para no dar información del servidor o información engañosa del servidor. En esos escenarios si el servidor tiene habilitado PHP se puede añadir:

<?php phpinfo(); ?> 

en un archivo y navegar a la misma y buscar la entrada

_SERVER["SERVER_SOFTWARE"] 

. Esto es susceptible a la misma falta de información/confusión, aunque supongo que no se modificará a menudo, porque este método primero requiere acceso a la máquina para crear el archivo PHP.

+0

Mi servidor reforzado también tiene 'Apache' para $ _SERVER ["SERVER_SOFTWARE"] – PaulH

4

Advertencia, algunos servidores Apache no siempre envían su número de versión cuando se utiliza la cabeza, como en este caso:

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. 

Si se instala PHP a continuación, de hecho, sólo tiene que utilizar el comando PHP info:

<?php phpinfo(); ?> 
+1

'phpinfo()' tampoco siempre revela la versión de Apache, al menos no cuando se usa CGI/FastCGI. –

3

El nivel de información de versión entregado por un servidor Apache se puede configurar mediante la configuración ServerTokens en su configuración.

Creo que también hay una configuración que controla si la versión aparece en las páginas de error del servidor, aunque no recuerdo qué es lo que está fuera de mi cabeza. Si no tiene acceso directo al servidor, y el administrador del servidor es competente y no quiere que sepa la versión que están ejecutando ... creo que puede ser SOL.

0

Su mejor opción es a través de PHP: No se puede confiar en todas las solicitudes de versión desde el lado del cliente ya que su Apache se puede configurar con ServerTokens Prod y ServerSignature Off. Ver: http://www.petefreitag.com/item/419.cfm

41

httpd -v le dará la versión de Apache ejecutándose en su servidor (si tiene acceso SSH/shell).

La salida debería ser algo como esto:

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

Como se ha sugerido también se puede hacer apachectl -v que le dará el mismo resultado, pero será apoyado por más sabores de Linux.

+14

en Ubuntu, el binario se llama 'apache2', no' httpd' –

+1

+1 - phpinfo() y curl no dio suficiente información para un host compartido que estaba usando. Esto hizo. – jontyc

+1

OP está pidiendo solución sin shell :) Dado que esto se publica de todos modos, sugiero usar 'apachectl' para una mayor independencia de la plataforma. – Konzula

0

simplemente usar algo como lo siguiente - la cadena debe estar allí ya:

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

uso de este script PHP:

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

Se apache_get_version.

+0

Las funciones de Apache solo están disponibles cuando se ejecuta PHP como módulo de Apache. – PaulH

Cuestiones relacionadas