<<< Date Index >>>     <<< Thread Index >>>

Advisory 13/2005: Remote code execution in SysCP



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

                        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@xxxxxxxxxxxxxxxx>
  Application: SysCP 1.2.10 and prior
     Severity: Arbitrary remote code execution
         Risk: Critical
Vendor Status: Vendor has released an updated version
   References: http://www.hardened-php.net/advisory_132005.64.html


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:

   All of these vulnerabilities could have been mitigated by using our
   Hardening Patch for PHP [1], which includes protection against URL includes
   as well as eval() function protection.
   Apart from that, the vendor has released an updated version that add-
   resses the issue [2].

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/.


Links:

   [1] http://www.hardened-php.net/downloads.13.html
   [2] http://www.syscp.de/forum/viewtopic.php?t=1772


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.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQFC9zaIRDkUzAqGSqERArfZAKDXgmFdPQSONdLNXFNhMqApTYqUIwCgxzjb
T/i48IH5hId5eOLuXvWaVY0=
=KSeh
-----END PGP SIGNATURE-----