Ya sea por obtener información o para realizar pruebas, es posible saber la versión de PHP y el software que utiliza un servidor remoto. Esta información se suele utilizar también con fines estadísticos.
Existen varios modos de descubrir la versión de PHP de un servidor remoto desde cualquier sistema operativo Unix/Linux. Vamos a ver dos métodos muy sencillos.
Usando el comando curl
[usuario@server /]# curl -I http://ejemplo.com
Mediante este comando obtenemos datos como:
HTTP/1.1 200 OK Date: Thu, 17 Sep 2015 20:15:42 GMT Server: Apache/2.0.65 (Debian) PHP/5.1.3-1+b1 mod_ssl/2.0.55 OpenSSL/0.9.8b Content-Type: text/html; charset=UTF-8 Content-Length: 1051 X-Powered-By: PHP/5.2.42 Connection: close Last-Modified: Fri, 12 Jun 2015 19:02:24 GMT Connection closed by foreign host.
Como veis, tanto el tipo de servidor utilizado como la versión de Apache y otros datos importantes están expuestos al público. Vamos a ver ahora el otro método.
Usando una petición HEAD
Basta con escribir el siguiente comando:
[usuario@server /]# HEAD http://ejemplo.com
Y estos son los resultados:
200 OK Cache-Control: no-store, no-cache, must-revalidate Connection: close Date: Wed, 13 Mar 2019 16:05:08 GMT Pragma: no-cache Server: nginx Content-Type: text/html; charset=utf-8 Expires: Thu, 19 Nov 1981 08:52:00 GMT Client-Date: Wed, 13 Mar 2019 16:05:08 GMT Client-Peer: 91.121.89.171:80 Client-Response-Num: 1 Set-Cookie: PHPSESSID=65850d8caa60d2f6569f046c32bba4bd; path=/ X-Powered-By: PHP/5.1.3
Vemos que además de usar PHP, también se utiliza el servidor nginx para archivos estáticos.
Usando Telnet
Podemos utilizar una sencilla conexión Telnet en el puerto 80 de otro servidor y luego, hacer una petición para obtener contenido, que puede ser por ejemplo «HEAD / HTTP/1.0» o cualquier otra (tendremos que introducirla cuando se nos pida).
[usuario@server /]# telnet ejemplo.com 80 Connected to servidor_remoto.com. Escape character is '^]'. [usuario@server /] HEAD /index.php
Seguidamente nos aparecerá la información del servidor que estamos buscando.
Resultados
Como veis, tanto el tipo de servidor utilizado como la versión de Apache y otros datos importantes están expuestos al público. En este último caso el servidor está utilizando la versión 2.0.65 de Apache y la versión 5.2.42 de PHP. Esto podría hacer que algunas personas con malas intenciones sepan la versión de PHP que estamos usando en nuestro servidor, pudiendo atacar ciertas vulnerabilidades de la versión que estamos utilizando.
Existen dos prácticas con respecto a la visibilidad de los datos. Por una parte algunos piensan que es mejor que los datos sean visibles para no crear una falsa sensación de seguridad, cuando en realidad podría existir un problema. La otra opinión es que es mejor ocultar los datos relativos al software que utilizamos en el servidor para agregar una capa adicional de seguridad a través de la ocultación de los datos.