73 votes

Comment puis-je trouver la version d'Apache en cours d'exécution sans avoir accès à la ligne de commande ?

Je dois trouver soit un fichier dans lequel la version est encodée, soit un moyen de l'interroger sur le web pour qu'il révèle sa version. Le serveur fonctionne chez un hôte qui ne me fournit pas d'accès en ligne de commande, bien que je puisse parcourir l'emplacement d'installation via ftp.

Mise à jour 1 :

J'ai essayé HEAD et je n'ai pas obtenu de numéro de version.

Si j'essaie une page manquante pour obtenir un 404, il est intercepté et une page de stock est renvoyée qui n'a aucune information sur le serveur. Je suppose que cela indique que le serveur est renforcé.

Toujours pas de rapprochement...

Mise à jour 2 : J'ai mis en place un fichier php comme suggéré, mais je ne peux pas y accéder et je n'arrive pas à trouver le chemin URL qui le chargerait. Dans tous les cas, je reçois de nombreux messages de refus d'accès et la même page 404. Je suis rassuré de savoir que le serveur est assez solidement protégé.

128voto

Paul Dixon Points 122033

La méthode

Connectez-vous au port 80 sur l'hôte et envoyez-le

HEAD / HTTP/1.0

Il doit être suivi de deux fois le retour chariot + le saut de ligne.

Vous obtiendrez quelque chose comme ceci

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

Vous pouvez ensuite extraire la version d'Apache de l'en-tête Server :.

Outils typiques que vous pouvez utiliser

Vous pouvez utiliser l'utilitaire HEAD qui est fourni avec une installation complète de Perl. LWP la bibliothèque, par exemple

HEAD http://your.webserver.com/

Ou bien, utilisez le bouclette l'utilité, par exemple

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

Vous pouvez également utiliser une extension de navigateur qui vous permet d'afficher les en-têtes du serveur, telle que En-têtes HTTP en direct ou Firebug pour Firefox, ou Fiddler pour IE

Vous êtes coincé avec Windows ?

Enfin, si vous êtes sous Windows et que vous n'avez rien d'autre à votre disposition, ouvrez une invite de commande (Menu Démarrer->Exécuter, tapez "cmd" et appuyez sur retour), puis tapez ceci

telnet your.webserver.com 80

Puis tapez (attention, vos caractères ne seront pas renvoyés en écho)

HEAD / HTTP/1.0

Appuyez deux fois sur la touche retour et vous verrez les en-têtes du serveur.

Autres méthodes

Comme mentionné par cfeduke et Veynom, le serveur peut être configuré pour renvoyer des informations limitées dans l'en-tête Server :. Essayez de télécharger un script PHP sur votre hôte avec ceci dedans

<?php phpinfo() ?>

Demandez la page avec un navigateur web et vous devriez voir la version d'Apache indiquée.

Vous pouvez également essayer d'utiliser PHPShell pour faire un tour, essayez une commande telle que

/usr/sbin/apache2 -V

43voto

crmpicco Points 2226

httpd -v vous donnera la version d'Apache qui tourne sur votre serveur (si vous avez un accès SSH/shell).

Le résultat devrait être quelque chose comme ceci :

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

Comme cela a été suggéré, vous pouvez aussi faire apachectl -v qui vous donnera le même résultat, mais qui sera supporté par plus de versions de Linux.

5voto

cfeduke Points 13153

Il arrive rarement qu'un serveur HTTP renforcé soit configuré pour ne pas donner d'informations sur le serveur ou pour donner des informations trompeuses sur le serveur. Dans ce cas, si PHP est activé sur le serveur, vous pouvez ajouter :

<?php phpinfo(); ?>

dans un fichier, naviguez jusqu'à lui et cherchez le fichier

_SERVER["SERVER_SOFTWARE"]

entrée. Cette méthode est sujette au même durcissement : manque d'informations ou tromperie, mais j'imagine qu'elle n'est pas souvent modifiée car elle nécessite d'abord un accès à la machine pour créer le fichier PHP.

4voto

Veynom Points 1625

Attention, certains serveurs Apache n'envoient pas toujours leur numéro de version lorsqu'ils utilisent HEAD, comme dans ce cas :

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 installé, il suffit d'utiliser la commande php info :

<?php phpinfo(); ?>

4voto

mmacaulay Points 2048

Le niveau d'information sur la version fournie par un serveur Apache peut être configuré par le paramètre ServerTokens de sa configuration. Je crois qu'il y a également un paramètre qui contrôle si la version apparaît dans les pages d'erreur du serveur, bien que je ne me souvienne pas de ce qu'il est au sommet de ma tête. Si vous n'avez pas d'accès direct au serveur, et que l'administrateur du serveur est compétent et ne veut pas que vous connaissiez la version qu'il utilise... Je pense que vous pouvez être SOL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X