Je dois trouver un fichier dans lequel la version est codée ou un moyen de l'interroger sur le Web afin qu'il révèle sa version. Le serveur est exécuté sur un hôte qui ne me fournira pas d'accès en ligne de commande, même si je peux parcourir l'emplacement d'installation via FTP.
J'ai essayé HEAD et ne reçois pas de numéro de version signalé.
Si j'essaie d'obtenir une 404 d'une page manquante, celle-ci est interceptée et une page stock est renvoyée sans information sur le serveur. Je suppose que cela pointe vers le serveur en cours de durcissement.
Toujours pas de plus près ...
J'ai mis un fichier PHP comme suggéré, mais je ne peux pas y accéder ni le chemin de l'URL qui le chargerait. Dans tous les cas, je reçois beaucoup d'accès messages refusés et le même stock page 404. Je suis réconforté de savoir que le serveur est protégé de manière assez robuste.
Connectez-vous au port 80 sur l'hôte et envoyez-le.
HEAD / HTTP/1.0
Ceci doit être suivi deux fois par retour chariot + saut de ligne
Vous obtiendrez quelque chose comme ça
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 Apache de l’en-tête Server:
Vous pouvez utiliser l'utilitaire HEAD qui est fourni avec une installation complète de Perl [~ # ~] lwp [~ # ~] bibliothèque, par exemple.
HEAD http://your.webserver.com/
Ou utilisez l’utilitaire curl , 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 de serveur, tels que en-têtes HTTP en direct ou Firebug pour Firefox, ou Fiddler pour IE
Finalement. si vous êtes sous Windows et que vous n'avez rien d'autre à votre disposition, ouvrez une commande Invite (Menu Démarrer -> Exécuter, tapez "cmd" et appuyez sur la touche Entrée), puis tapez ceci.
telnet your.webserver.com 80
Puis tapez (avec soin, vos personnages ne seront pas renvoyés)
HEAD / HTTP/1.0
Appuyez deux fois sur Entrée et vous verrez les en-têtes du serveur.
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
<?php phpinfo() ?>
Demandez la page avec un navigateur Web et vous devriez voir la version d'Apache indiquée ici.
Vous pouvez également essayer d’utiliser PHPShell pour faire un poke, essayez une commande comme
/usr/sbin/Apache2 -V
httpd -v
vous donnera la version d'Apache en cours d'exécution sur votre serveur (si vous disposez d'un accès SSH/Shell).
Le résultat devrait ressembler à ceci:
Server version: Apache/2.2.3
Server built: Oct 20 2011 17:00:12
Comme cela a été suggéré, vous pouvez également faire apachectl -v
qui vous donnera le même résultat, mais qui sera supporté par plusieurs versions de Linux.
Rarement, un serveur HTTP renforcé est configuré pour ne donner aucune information de serveur ou des informations trompeuses sur le serveur. Dans ces scénarios, si le serveur a PHP activé, vous pouvez ajouter:
<?php phpinfo(); ?>
dans un fichier et accédez à celui-ci et recherchez le
_SERVER["SERVER_SOFTWARE"]
entrée. Ceci est sujet au même manque d’informations/trompeur même si j’imagine que cela n’est pas souvent modifié, car cette méthode nécessite d’abord un accès à la machine pour créer le fichier PHP.
Attention, certains serveurs Apache n'envoient pas toujours leur numéro de version lors de l'utilisation de 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é, alors utilisez la commande php info:
<?php phpinfo(); ?>
Le niveau des informations de version fournies par un serveur Apache peut être configuré par le paramètre ServerTokens dans sa configuration.
Je pense qu’il existe également un paramètre permettant de contrôler si la version apparaît dans les pages d’erreur du serveur, bien que je ne me souvienne plus de quoi il s’agit. 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 exécute ... je pense que vous pouvez être SOL .
Telnet à l'hôte au port 80.
Type:
get / http1.1
::enter::
::enter::
C'est en quelque sorte une requête HTTP, mais ce n'est pas valide, donc l'erreur 500 qu'elle vous donne va probablement vous donner les informations que vous voulez. Les lignes vierges à la fin sont importantes, sinon cela semblera suspendu.
Utilisez simplement quelque chose comme ce qui suit - la chaîne devrait déjà être là:
<?php
if(isset($_SERVER['SERVER_SOFTWARE'])){
echo $_SERVER['SERVER_SOFTWARE'];
}
?>
Votre meilleure option est via PHP: toutes les demandes de version côté client ne peuvent pas être approuvées car votre Apache pourrait être configuré avec ServerTokens Prod et ServerSignature Off. Voir: http://www.petefreitag.com/item/419.cfm
Si les pages d'erreur sont activées, vous pouvez accéder à une page inexistante et consulter le bas de la page 404.
Dans l'installation par défaut, appelez une page qui n'existe pas et vous obtenez une erreur avec la version à la fin:
Objet non trouvé!
L'URL demandée n'a pas été trouvée sur ce serveur. Si vous avez entré l'URL manuellement, vérifiez votre orthographe et réessayez.
Si vous pensez que c'est une erreur de serveur, veuillez contacter le webmaster.
Erreur 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