Advisory 13/2005: Remote code execution in SysCP



                        Hardened PHP Project
www.hardened-php.net


-= Security Advisory =-


Advisory: Remote code execution in SysCP
Release Date: 2005/08/09
Last Modified: 2005/08/08
Author: Christopher Kunz >christopher.kunz@hardened-php.net<
Application: SysCP 1.2.10 and prior
Severity: Arbitrary remote code execution
Risk: Critical
Vendor Status: Vendor has released an updated version
References:


Overview:

SysCP is a server management application, similar to the popular Confixx and
CPanel products - but open source. It is deployed by several large german
hosting and co-location companies and can be used for complete server admin-
istration, including web and database, FTP and mail servers, reseller access
and more.
With the PHP configuration flag "register_globals On" (which is still the
case for a large installation base), a number of variables can be injected,
leading to the execution of arbitrary remote code, which can also be inclu-
ded from a remote server. This can lead to backdooring of the server in
question.
SysCP needs the MySQL root password to perform some of its functionality, so
attackers can very easily obtain this critical information from SysCP's con-
figuration file.



Details:

During a rough scan through the SysCP source code, we found two possibili-
ties to inject global variables via GET - experience shows that probably
more occurances exist.
The first of these holes allows direct inclusion of remote PHP code with
just one GET parameter. By setting the language to any value not existant
in the SysCP installation, inclusion of a language file can be forced -
there are no checks if the included file was actually user-supplied.
The second vulnerability allows passing curly brackets to SysCP's internal
template engine which then eval()s this expression. A string like
{${phpinfo();}} would then be evaluated to the phpinfo() function, which
would subsequently be executed.


Proof of Concept:

Due to the sensitive nature of the vulnerability, the Hardened PHP Project
is not going to release a proof of concept to the public.


Disclosure Timeline:

18. July 2005 - Initial vendor contact.
23. July 2005 - PoC disclosed to vendor.
04. August 2005 - Vendor has released updated version.
09. August 2005 - public disclosure


Recommendation:

One of these vulnerabilities could have been mitigated by using our
Hardening Patch for PHP, which includes protection against URL includes.


Plug:

You can discuss this and other vulnerabilities in our forum at
http://forum.hardened-php.net/ - an up-to-date list of advisories can be
found at http://www.hardened-php.net/.


GPG-Key:

http://www.hardened-php.net/hardened-php-signature-key.asc

pub 1024D/0A864AA1 2004-04-17 Hardened-PHP Signature Key
Key fingerprint = 066F A6D0 E57E 9936 9082 7E52 4439 14CC 0A86 4AA1


Copyright 2005 Christopher Kunz / Hardened PHP Project. All rights reserved.
© Hardened PHP Project