BugTraq
[CVE-2012-5777]EmpireCMS Template Parser Remote PHP Code Execution Vulnerability Nov 05 2012 09:51AM
machuanlei (phpsec hotmail com)


# Exploit Title: EmpireCMS Template Parser Remote PHP Code Execution Vulnerability

# Date: 2012-11-1

# Author: flyh4t

# Software Link: http://www.phome.net

# Version: EmpireCMS 6.6

# CVE :

EmpireCMS Template Parser Remote PHP Code Execution Vulnerability

---------------------------------

By fly

Mail:phpsec (at) hotmail (dot) com [email concealed]

Site:bbs.wolvez.org

---------------------------------

Empire CMS is a widely used CMS in china. Official website is www.phome.net.

I have found a remote PHP code-execution vulnerability in EmpireCMS 6.6 (the lastest version).

This issue occurs in the application's template parser.

An

attacker can exploit this issue by enticing an unsuspecting victim to

install a malicious template,can inject and execute arbitrary malicious

PHP code in the context of the webserver process.

This may facilitate a compromise of the application and the underlying system; other attacks are also possible.

[-] details :

Here is a function for template parser in /e/class/connect.php

---------------------------------

function ReplaceListVars($no,$listtemp,$subnews,$subtitle,$formatdate,$url,$havec
lass=0,$r,$field,$docode=0){

    global $empire,$public_r,$class_r,$class_zr,$fun_r,$dbtbpre,$emod_r,$class_tr,$
level_r,$navclassid,$etable_r;

    if($haveclass)

    {

        $add=sys_ReturnBqClassname($r,$haveclass);

    }

    if(empty($r[oldtitle]))

    {

        $r[oldtitle]=$r[title];

    }

    if($docode==1)

    {      

                //here is the vul code

                //$listtemp is passed to function eval and not checked.

        $listtemp=stripSlashes($listtemp);

        eval($listtemp);

    }

   

        ......

}

---------------------------------

Many other files used this function,here is one place:

---------------------------------

// /e/action/ListInfo/index.php line 120

//get template from datebase which may contain PHP code we have injected into database.

$tempr=$empire->fetch1("select

tempid,temptext,subnews,listvar,rownum,showdate,modid,subtitle,docode

from ".GetTemptb("enewslisttemp")." where tempid='$tempid'");

......

$listtemp=$tempr[temptext];

$rownum=$tempr[rownum];

if(empty($rownum))

{$rownum=1;}

$formatdate=$tempr[showdate];

$subnews=$tempr[subnews];

$subtitle=$tempr[subtitle];

$docode=$tempr[docode];

$modid=$tempr[modid];

$listvar=str_replace('[!--news.url--]',$public_r[newsurl],$tempr[listvar
]);

// $listvar contain PHP code we have injected

......

while($r=$empire->fetch($sql))

{

    $repvar=ReplaceListVars($no,$listvar,$subnews,$subtitle,$formatdate,$url
,$have_class,$r,$ret_r,$docode);

    //here lead to execute php code

------------------------------

[-] Disclosure timeline:

[19/10/2012] - Vulnerability discovered

[20/10/2012] - Vendor notifiedï¼?No responsed

[01/11/2012] - CVE number requested

[02/11/2012] - Assigned CVE-2012-5777

[05/11/2012] - Public disclosure

[ reply ]


 

Privacy Statement
Copyright 2010, SecurityFocus