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

Advisory 06/2006: PHProjekt (Remote) Include Vulnerabilities



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


                        Hardened-PHP Project
                        www.hardened-php.net

                      -= Security  Advisory =-


     Advisory: PHProjekt (Remote) Include Vulnerabilities
 Release Date: 2006/09/29
Last Modified: 2006/09/29
       Author: Stefan Esser [sesser@xxxxxxxxxxxxxxxx]

  Application: PHProjekt 5.1.1
     Severity: An unverified path may allow an attacker to inject 
               and execute arbitrary PHP code
         Risk: Critical
Vendor Status: Vendor has a released an updated version
   References: http://www.hardened-php.net/advisory_062006.129.html


Overview:

   Quote from http://www.phprojekt.com
   "PHProjekt is a modular application for the coordination of group 
   activities and to share informations and document via intranet and 
   internet. Components of PHProjekt: Group calendar, project 
   management, time card system, file management, contact manager, 
   mail client and 9 other modules ...(feature list).
   PHProjekt supports many protocols like ldap, soap and webdav and is 
   available for 36 languages and 7 databases."
   
   While searching for applications that are vulnerable to a new class 
   of vulnerabilities inside PHP applications we took a quick look 
   into the current PHProjekt source code and discovered that a (remote)
   include vulnerability had been (re)introduced.
   
   By overwriting a variable with user input it is possible to inject
   and execute arbitrary PHP code. Overwriting this variable is possible
   regardless of the register_globals setting.
   
   It is recommended to install our Suhosin (http://www.suhosin.org)
   PHP extension, because it is the only solution that stops 100% of
   all URL includes. Please note that allow_url_fopen is NOT a 100%
   protection because it does NOT stop all URL types.

Details:

   PHProjekt includes several files from different paths. In earlier
   versions it was possible to overwrite the base path variable 
   $path_pre from the outside and use it to include arbitrary files
   or URLs. This vulnerability had been fixed by checking the content
   of $path_pre and bailing out of the PHP script in case of an
   attack.
   
   Unfortunately the code within PHProjekt was moved around, which
   resulted in $lib_path and $lang_path beeing filles before the 
   request variables are extracted into the global namespace by the
   PHP script. (This globalisation is done by the code of PHProjekt
   and has nothing todo with PHP's register_globals feature).
   
   Because of this construction it is possible to include arbitrary
   PHP files by filling $lib_path or $lang_path through f.e. the URL.
   
   This vulnerability was now fixed by modifying all include paths
   to use constants instead of variables, because constants cannot
   be overwritten once they are set.
   

Proof of Concept:

   The Hardened-PHP Project is not going to release exploits for
   this vulnerability to the public.


Disclosure Timeline:

   21. September 2006 - Contacted PHProjekt developers by email
   28. September 2006 - Updated PHProjekt was released
   29. September 2006 - Public Disclosure


Recommendation:

   It is strongly recommended to upgrade to the newest version of
   PHProejekt 5.1.2 which you can download at:

   http://www.phprojekt.com/download/phprojekt.tar.gz
   
   As usual we very stronlgy recommend to install our Suhosin PHP 
   extension, because it is the only solution that stops all
   PHP remote URL includes. The often advertised allow_url_fopen
   configuration directive does NOT protect against 'php://input'
   or 'data:' URL types. Suhosin additionally can stop several 
   directory traversal attacks that try to include local files.

   Grab your copy and more information at:
   
   http://www.hardened-php.net/suhosin/index.html
   

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 2006 Stefan Esser. All rights reserved.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)

iD8DBQFFHQmFRDkUzAqGSqERAsoTAJ4gmFLTcReHvo6EvtxlZXHI41tPDgCg1ppS
7THEd6ldw69+Hx9dO9zkcew=
=NXXs
-----END PGP SIGNATURE-----