phpBMS

Show
Ignore:
Timestamp:
01/01/10 23:10:02 (2 years ago)
Author:
brieb
Message:
  • Fixed several SQL injection vulnerabilities
  • Fixed several XSS vulnerabilities due to PHP_SELF and REQUREST_URI
  • Fixed severa path disclosure errors
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/phpbms/modules/base/include/myaccount.php

    r646 r704  
    11<?php 
    22 
    3 function displayRoles($db){ 
    43 
    5         $uuid = $_SESSION["userinfo"]["uuid"]; 
     4class myAccount{ 
     5 
     6    var $db; 
     7    var $userUUID; 
     8 
     9    function myAccount($db, $userUUID){ 
     10 
     11        $this->db = $db; 
     12 
     13        $this->userUUID = $userUUID; 
     14 
     15    }//end function init 
     16 
     17 
     18    function displayRoles(){ 
    619 
    720        $querystatement = " 
     
    1225                        `roles` INNER JOIN `rolestousers` ON `rolestousers`.`roleid`=`roles`.`uuid` 
    1326                WHERE 
    14                         `rolestousers`.`userid` = '".mysql_real_escape_string($uuid)."' 
     27                        `rolestousers`.`userid` = '".$this->userUUID."' 
    1528                "; 
    16         $assignedquery = $db->query($querystatement); 
    17         while($therecord = $db->fetchArray($assignedquery)) 
     29 
     30        $queryresult = $this->db->query($querystatement); 
     31 
     32        while($therecord = $this->db->fetchArray($queryresult)) 
    1833                echo "<li>".$therecord["name"]."</li>"; 
    19 } 
    2034 
    21 function changePassword($variables,$id,$db){ 
    22         if(DEMO_ENABLED=="false"){ 
    23                 $querystatement="SELECT id FROM users WHERE id=".$id." AND password=ENCODE(\"".$variables["curPass"]."\",\"".mysql_real_escape_string(ENCRYPTION_SEED)."\")"; 
    24                 $queryresult=$db->query($querystatement); 
    25                 if($queryresult) 
    26                         if ($db->numRows($queryresult)){ 
    27                                 $querystatement="UPDATE users SET password=ENCODE(\"".$variables["newPass"]."\",\"".ENCRYPTION_SEED."\") WHERE id=".$id; 
    28                                 $queryresult=$db->query($querystatement); 
    29                                 return "Password Updated"; 
    30                         } else 
    31                                 return "Current Password Incorrect"; 
    32         } else 
    33                 return "Changing password is disabled in demonstration mode."; 
    34 } 
    35  
    36 function updateContact($variables,$id,$db){ 
    37         $querystatement="UPDATE users SET email=\"".$variables["email"]."\", phone=\"".$variables["phone"]."\" WHERE id=".$id; 
    38         $queryresult=$db->query($querystatement); 
    39         $_SESSION["userinfo"]["email"]=$variables["email"]; 
    40         $_SESSION["userinfo"]["phone"]=$variables["phone"]; 
    41         return "Contact Information Updated"; 
    42 } 
     35    }//end function displayRoles 
    4336 
    4437 
    45 if(isset($_POST["command"])) 
    46         switch($_POST["command"]){ 
    47                 case "Change Password": 
    48                         $statusmessage=changePassword(addSlashesToArray($_POST),$_SESSION["userinfo"]["id"],$db); 
    49                 break; 
    50                 case "Update Contact": 
    51                         $statusmessage=updateContact(addSlashesToArray($_POST),$_SESSION["userinfo"]["id"],$db); 
    52                 break; 
    53                 default: 
    54                         $statusmessage="\"".$_POST["command"]."\""; 
    55                 break; 
    56         } 
     38    function changePassword($oldPassword, $newPassword){ 
     39 
     40        if(DEMO_ENABLED !== "false") 
     41            return "Cannot change password when in demonstration mode."; 
     42 
     43        $querystatement = " 
     44            SELECT 
     45                `id` 
     46            FROM 
     47                `users` 
     48            WHERE 
     49                `uuid` = '".$this->userUUID."' 
     50                AND password = ENCODE('".mysql_real_escape_string($oldPassword)."', '".mysql_real_escape_string(ENCRYPTION_SEED)."')"; 
     51 
     52        $queryresult = $this->db->query($querystatement); 
     53 
     54        if($this->db->numRows($queryresult)){ 
     55 
     56            $updatestatement = " 
     57                UPDATE 
     58                    `users` 
     59                SET 
     60                    `password` = ENCODE('".mysql_real_escape_string($newPassword)."', '".mysql_real_escape_string(ENCRYPTION_SEED)."') 
     61                WHERE 
     62                    `uuid` = '".$this->userUUID."'"; 
     63 
     64            $this->db->query($updatestatement); 
     65 
     66            return "password changed"; 
     67 
     68        }else 
     69            return "Current password incorrect"; 
     70 
     71    }//end function changePassword 
     72 
     73 
     74    function update($variables){ 
     75 
     76        $updatestatement = " 
     77            UPDATE 
     78                `users` 
     79            SET 
     80                `email` = '".mysql_real_escape_string($variables["email"])."', 
     81                `phone` = '".mysql_real_escape_string($variables["phone"])."' 
     82            WHERE 
     83                `uuid` = '".$this->userUUID."'"; 
     84 
     85        $this->db->query($updatestatement); 
     86 
     87        $_SESSION["userinfo"]["email"] = $variables["email"]; 
     88        $_SESSION["userinfo"]["phone"] = $variables["phone"]; 
     89 
     90        return "Record Updated"; 
     91 
     92    }//end function update 
     93 
     94}//end class 
     95 
    5796?> 
phpBMS vulnerability assesment provided by Orvant Inc. Copyright © 2010 Kreotek, LLC. All Rights reserved.