Faiblesses connues

Utiliser PHP comme un exĂ©cutable CGI est une possibilitĂ© pour les cas oĂč l'on ne veut pas l'utiliser comme un module du serveur web (comme Apache), ou bien lorsque l'on souhaite l'utiliser en combinaison avec un gestionnaire CGI complĂ©mentaire, afin de crĂ©er un environnement de script sĂ©curisĂ© (en utilisant des techniques de chroot ou setuid). Une telle dĂ©cision signifie habituellement que l'exĂ©cutable php sera installĂ© dans le rĂ©pertoire du serveur web cgi-bin. Le conseil de sĂ©curitĂ© CERT » CA-96.11 recommande de ne pas placer d'interprĂ©teurs dans le rĂ©pertoire cgi-bin. MĂȘme si le binaire php peut ĂȘtre utilisĂ© comme interprĂ©teur autonome, PHP est conçu pour prĂ©venir les attaques que cette configuration peut rendre possibles :

  • AccĂšs au systĂšme de fichiers : http://my.host/cgi-bin/php?/etc/passwd Lorsque la requĂȘte est passĂ©e dans une url, aprĂšs le point d'interrogation (?), elle est envoyĂ©e Ă  l'interprĂ©teur comme une ligne de commande par l'interface CGI. Habituellement, l'interprĂ©teur ouvre le fichier spĂ©cifiĂ© et l'exĂ©cute. Lorsqu'il est invoquĂ© comme exĂ©cutable CGI, php refuse d'interprĂ©ter les arguments de la ligne de commande.
  • AccĂšs Ă  n'importe quel document web sur le serveur : http://my.host/cgi-bin/php/secret/doc.html Le "path information" dans l'url, situĂ© juste aprĂšs le nom de l'exĂ©cutable PHP, /secret/doc.html est utilisĂ© par convention pour spĂ©cifier le nom du fichier qui doit ĂȘtre ouvert et interprĂ©tĂ© par le programme CGI. Habituellement, des directives de configuration du serveur web (pour le serveur Apache : Action) sont utilisĂ©es pour rediriger des requĂȘtes vers des documents comme http://my.host/secret/script.php vers l'interprĂ©teur PHP. Dans une telle configuration, le serveur web vĂ©rifie d'abord s'il a accĂšs au rĂ©pertoire /secret, et redirige ensuite la requĂȘte vers http://my.host/cgi-bin/php/secret/script.php. Malheureusement, si la requĂȘte est faite directement sous cette forme, aucune vĂ©rification d'accĂšs n'est faite par le serveur web pour le fichier /secret/script.php, mais uniquement pour le fichier /cgi-bin/php. De cette maniĂšre, n'importe quel utilisateur qui peut accĂ©der au fichier /cgi-bin/php peut aussi accĂ©der Ă  n'importe quel document protĂ©gĂ© sur le serveur web. Avec PHP, les options d'exĂ©cution cgi.force_redirect, doc_root et user_dir peuvent ĂȘtre utilisĂ©es pour prĂ©venir ce genre d'attaque, si des restrictions d'accĂšs sont appliquĂ©es sur les documents du serveur. Voir ci-dessous pour des explications plus complĂštes sur les diffĂ©rentes combinaisons.
add a note

User Contributed Notes

There are no user contributed notes for this page.