servidor - ¿Cómo puedo encontrar la versión de Apache ejecutándose sin acceso a la línea de comando?
ruta apache2 conf (11)
El método
Conéctese al puerto 80 en el host y envíelo
HEAD / HTTP/1.0
Esto debe ser seguido por carriage-return + line-feed dos veces
Recibirás 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
A continuación, puede extraer la versión de Apache del servidor: encabezado
Herramientas típicas que puedes usar
Puede usar la utilidad HEAD que viene con una instalación completa de la biblioteca LWP de Perl, por ejemplo
HEAD http://your.webserver.com/
O bien, use la utilidad curl , por ejemplo
curl --head http://your.webserver.com/
También puede usar una extensión del navegador que le permite ver los encabezados del servidor, como Live HTTP Headers o Firebug para Firefox, o Fiddler para IE.
¿Atascado con Windows?
Finalmente. si está en Windows y no tiene nada más a su disposición, abra un símbolo del sistema (Menú Inicio-> Ejecutar, escriba "cmd" y presione regresar), y luego escriba esto
telnet your.webserver.com 80
Luego escribe (cuidadosamente, tus personajes no se repetirán)
HEAD / HTTP/1.0
Presione regresar dos veces y verá los encabezados del servidor.
Otros metodos
Como se menciona en cfeduke y Veynom, el servidor puede configurarse para devolver información limitada en el encabezado Servidor :. Intenta subir un script PHP a tu host con esto en él
<?php phpinfo() ?>
Solicite la página con un navegador web y debería ver la versión de Apache allí.
También puedes probar y usar phpshell.sourceforge.net para tener un poke alrededor, prueba un comando como
/usr/sbin/apache2 -V
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.
He intentado con HEAD y no me han informado un 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.
Todavía no más cerca ...
Puse un archivo PHP como se sugirió, pero no puedo buscarlo y no puedo entender la ruta de URL que lo cargaría. 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.
Advertencia, algunos servidores Apache no siempre envían su número de versión cuando usan HEAD, 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 PHP está instalado, entonces, simplemente use el comando php info:
<?php phpinfo(); ?>
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 .
En la instalación predeterminada, llame a una página que no existe y obtendrá 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, verifique 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
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 PHP habilitado, puede agregar:
<?php phpinfo(); ?>
en un archivo y buscarlo y buscar el
_SERVER["SERVER_SOFTWARE"]
entrada. 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.
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.
Simplemente use algo como lo siguiente: la cadena ya debería estar allí:
<?php
if(isset($_SERVER[''SERVER_SOFTWARE''])){
echo $_SERVER[''SERVER_SOFTWARE''];
}
?>
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
Telnet al host en el puerto 80.
Tipo:
get / http1.1
::enter::
::enter::
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.
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 puede hacer apachectl -v
que le dará el mismo resultado, pero será respaldado por más sabores de Linux.