====Zenk Roulette 6 : B2evolution====
**Date :** Mercredi 24 novembre 2010 de 19h à 00h00.
**Application auditée :** B2evolution Beta 4.0.0.1 http://b2evolution.net/
**Description :** CMS pour multi blogs
**Pad :** http://piratepad.net/S3wvHmgcFH
------------------------------------------------------------------------------
**Défauts de sécurité :**
------------------------------------------------------------------------------
**Fichier** : gettext/xg.php
**Ligne** : 113
elseif( isset($argv[2]) && strtoupper($argv[2]) == 'MERGE' )
{
$action = 'merge';
if( ! isset($argv[3]) ) // the to-get-merged locale
{
echo_usage();
exit(1);
}
$locales_to_merge = array_slice( $argv, 3 );
}
**Ligne** : 254
if( $action == 'merge' )
{ // Merge with existing .po files:
if( ! @is_readable( $file_pot ) )
{
echo "FATAL: $file_pot is not readable!\n";
exit(1);
}
foreach( $locales_to_merge as $l_locale )
{
$l_file_po = $dir_root.'locales/'.$l_locale.'/LC_MESSAGES/messages.po';
echo 'Merging with '.$l_locale.'.. ';
if( ! file_exists( $l_file_po ) )
{
echo "PO file $l_file_po not found!\n";
continue;
}
system( 'msgmerge -U -F --no-wrap '.escapeshellarg($l_file_po).' '.escapeshellarg($file_pot) );
# delete old TRANS comments and make automatic ones valid comments:
system( 'sed -i -r "/^#\\s+TRANS:/d; s/^#\\. TRANS:/# TRANS:/;" '.$l_file_po );
echo "Written $l_file_po .\n";
echo "\n";
}
exit(0);
}
**Exécution possible de commande : **
Si $l_file_po = "\00 && commande #" marche uniquement sous windows pour le null-byte poisoning.
Car file_exists( $dir_root.'locales/' ) renvoi true et system( 'sed -i -r "/^#\\s+TRANS:/d; s/^#\\. TRANS:/# TRANS:/;" '.$l_file_po ); oublie de escapeshellarg.
**Ligne** : 291
$l_file_po = $dir_root.'locales/'.$l_locale.'/LC_MESSAGES/messages.po';
$global_file_path = $dir_root.'locales/'.$l_locale.'/_global.php';
**Ligne** : 304
$r = $POFile->write_evo_trans($global_file_path, $l_locale);
**Fichier** : blogs/inc/locales
**Ligne** : 223
function write_evo_trans($file_path, $locale)
**Ligne** : 241
fwrite( $fp, '$trans[\''.$locale."'] = array(\n" );
Si $l_locale = "../blogs/index.php\0'] = array(); code_php/*"
Normalement, ca passe les file_exists. A voir si cela passe le $trans[\''.$locale."'] toujours sous windows.
**Ligne** : 52
param( 'redirect_to', 'string', '' );
La fonction param() prend en argument des variable $_GET comme $_POST. Il est possible d'agir sur la variable $redirect_to depuis l'url : register.php?redirect_to=[fake_url] et de redirigé le nouveau membre vers une page qui n'a rien à voir avec celle du site de base. Pas pris le temps de chercher dans le fichier les lignes vulnérable au niveau de la non verification de l'url.
**Cotés admin** :
**Fichier** : htsrv/async.php:
**Ligne** : 142
http://localhost/b2evolution/blogs/htsrv/async.php?action=get_login_list&q=admin'%20union%20select%20user()%20--%20a#
**SQL Injection**
**Fichier** : _commentquery.class.php:
**Ligne** : 270
$this->WHERE_and( $this->dbprefix.'author_url '.$url_match.' ("'.$author_url.'")'.$include_empty );
* PHP_INFO non enlevé à l'install
Pour le compte rendu... Malheuresement pas tres concluant :dodgy: Mais on peut pas gagner a tous les coups ! En tout cas merci au personne presente : K1wy, Essandre et Tishrom.