Página 1 de 1

phpBB 2.0.15 Released

Publicado: 08 May 2005, 09:46
por ThE KuKa
Ayer phpBB anuncio el lanzamiento de phpBB 2.0.15 llamado, "summer needs to be hot"
Este lanzamiento corrige algunos errores, uno de ellos serio o critico y esa es la parte a tener mas en cuenta, otro de los apuntes especiales es la seguridad a la hora de acceder al [acronym="Panel de control del Administrador"]ACP[/acronym] con la re-autentificacií?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?³n del Administrador.

Aqui pongo el error critico y el que antes debeis corregir:

Abrir el archivo includes/bbcode.php

BUSCAR:

Código: Seleccionar todo

{
   global $lang, $bbcode_tpl;
DESPUES Aí?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?ADIR:

Código: Seleccionar todo

$text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text);
BUSCAR:

Código: Seleccionar todo

*/
function make_clickable($text)
{
DESPUES Aí?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?ADIR:

Código: Seleccionar todo

$text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text);
Para bajar la ultima version, acceder a la seccion de Descargas de phpBB

Mas abajo os pongo el resto de cambios de codigo para los que querais hacerlo a mano (porque tengais muchos MODs)

Cambios de codigo - 1

Publicado: 08 May 2005, 09:57
por ThE KuKa
Cambios de codigo de phpBB 2.0.14 a phpBB 2.0.15

Despues de aí?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?±adir los cambios indicados, debeis ejecutar el archivo /nstall/update_to_latest.php desde vuestro navegador, una vez hecho esto, borrar la carpeta /install/

  • admin/admin_forums.php
  1. BUSCAR - Linea 236

    Código: Seleccionar todo

    
    	if( $mode == "addforum" )
    	{
    		list($cat_id) = each($HTTP_POST_VARS['addforum']);
    
    DESPUES Aí?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?ADIR

    Código: Seleccionar todo

    
    		$cat_id = intval($cat_id);
    
  • admin/admin_smilies.php
  1. BUSCAR - Linea 450

    Código: Seleccionar todo

    
    			$smile_code = ( isset($HTTP_POST_VARS['smile_code']) ) ? $HTTP_POST_VARS['smile_code'] : $HTTP_GET_VARS['smile_code'];
    			$smile_url = ( isset($HTTP_POST_VARS['smile_url']) ) ? $HTTP_POST_VARS['smile_url'] : $HTTP_GET_VARS['smile_url'];
    			$smile_emotion = ( isset($HTTP_POST_VARS['smile_emotion']) ) ? $HTTP_POST_VARS['smile_emotion'] : $HTTP_GET_VARS['smile_emotion'];
    
    DESPUES Aí?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?ADIR

    Código: Seleccionar todo

    
    			$smile_code = trim($smile_code);
    			$smile_url = trim($smile_url);
    			$smile_emotion = trim($smile_emotion);
    
  • admin/pagestart.php
  1. BUSCAR - Linea 62

    Código: Seleccionar todo

    
    	redirect("index.$phpEx?sid=" . $userdata['session_id']);
    }
    
    
    DESPUES Aí?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?ADIR

    Código: Seleccionar todo

    
    if (!$userdata['session_admin'])
    {
    	redirect(append_sid("login.$phpEx?redirect=admin/&admin=1", true));
    }
    
    
  • db/postgres7.php
  1. BUSCAR - Linea 126

    Código: Seleccionar todo

    
    			$query = preg_replace('#(.*WHERE.*)(username|user_email|ban_email) = \'(.*)\'#ise', "\"\\1LOWER(\\2) = '\" . strtolower('\\3') . \"'\"", $query);
    
    REEMPLAZAR POR

    Código: Seleccionar todo

    
    //			$query = preg_replace('#(.*WHERE.*)(username|user_email|ban_email) = \'(.*)\'#ise', "\"\\1LOWER(\\2) = '\" . strtolower('\\3') . \"'\"", $query);
    
  • groupcp.php
  1. BUSCAR - Linea 340

    Código: Seleccionar todo

    
    			if ( !($row = $db->sql_fetchrow($result)) )
    
    REEMPLAZAR POR

    Código: Seleccionar todo

    
    			if ( !($row = $db->sql_fetchrow($result)) || $row['is_auth_mod'] == 0 )
    
  • includes/bbcode.php
  1. BUSCAR - Linea 127

    Código: Seleccionar todo

    
    {
    	global $lang, $bbcode_tpl;
    
    
    DESPUES Aí?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?ADIR

    Código: Seleccionar todo

    
    	$text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text);
    
    
  2. BUSCAR - Linea 197

    Código: Seleccionar todo

    
    	// [img]image_url_here[/img] code..
    	// This one gets first-passed..
    	$patterns[] = "#\[img:$uid\](.*?)\[/img:$uid\]#si";
    
    REEMPLAZAR POR

    Código: Seleccionar todo

    
    	// [img]image_url_here[/img] code..
    	// This one gets first-passed..
    	$patterns[] = "#\[img:$uid\]([^?].*?)\[/img:$uid\]#i";
    
  3. BUSCAR - Linea 210

    Código: Seleccionar todo

    
    	// [url=xxxx://www.phpbb.com]phpBB[/url] code..
    	$patterns[] = "#\[url=([\w]+?://[^ \"\n\r\tsql_query($sql) || !$db->sql_affectedrows() )
    	{
    		$session_id = md5(uniqid($user_ip));
    
    		$sql = "INSERT INTO " . SESSIONS_TABLE . "
    			(session_id, session_user_id, session_start, session_time, session_ip, session_page, session_logged_in)
    			VALUES ('$session_id', $user_id, $current_time, $current_time, '$user_ip', $page_id, $login)";
    
    REEMPLAZAR POR

    Código: Seleccionar todo

    
    		SET session_user_id = $user_id, session_start = $current_time, session_time = $current_time, session_page = $page_id, session_logged_in = $login, session_admin = $admin
    		WHERE session_id = '" . $session_id . "' 
    			AND session_ip = '$user_ip'";
    	if ( !$db->sql_query($sql) || !$db->sql_affectedrows() )
    	{
    		list($sec, $usec) = explode(' ', microtime());
    		mt_srand((float) $sec + ((float) $usec * 100000));
    		$session_id = md5(uniqid(mt_rand(), true));
    
    		$sql = "INSERT INTO " . SESSIONS_TABLE . "
    			(session_id, session_user_id, session_start, session_time, session_ip, session_page, session_logged_in, session_admin)
    			VALUES ('$session_id', $user_id, $current_time, $current_time, '$user_ip', $page_id, $login, $admin)";
    
  4. BUSCAR - Linea 180

    Código: Seleccionar todo

    
    	{// ( $userdata['user_session_time'] > $expiry_time && $auto_create ) ? $userdata['user_lastvisit'] : ( 
    		$last_visit = ( $userdata['user_session_time'] > 0 ) ? $userdata['user_session_time'] : $current_time; 
    
    
    DESPUES Aí?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?ADIR

    Código: Seleccionar todo

    
    		if (!$admin)
    		{
    
  5. BUSCAR - Linea 189

    Código: Seleccionar todo

    
    
    		$userdata['user_lastvisit'] = $last_visit;
    
    		$sessiondata['autologinid'] = ( $enable_autologin && $sessionmethod == SESSION_METHOD_COOKIE ) ? $auto_login_key : '';
    
    REEMPLAZAR POR

    Código: Seleccionar todo

    
    		}
    
    		$userdata['user_lastvisit'] = $last_visit;
    
    		$sessiondata['autologinid'] = (!$admin) ? (( $enable_autologin && $sessionmethod == SESSION_METHOD_COOKIE ) ? $auto_login_key : '') : $sessiondata['autologinid'];
    
  6. BUSCAR - Linea 204

    Código: Seleccionar todo

    
    	$userdata['session_page'] = $page_id;
    	$userdata['session_start'] = $current_time;
    	$userdata['session_time'] = $current_time;
    
    DESPUES Aí?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?ADIR

    Código: Seleccionar todo

    
    	$userdata['session_admin'] = $admin;
    
  7. BUSCAR - Linea 294

    Código: Seleccionar todo

    
    					$sql = "UPDATE " . SESSIONS_TABLE . " 
    						SET session_time = $current_time, session_page = $thispage_id 
    
    REEMPLAZAR POR

    Código: Seleccionar todo

    
    					// A little trick to reset session_admin on session re-usage
    					$update_admin = (!defined('IN_ADMIN') && $current_time - $userdata['session_time'] > ($board_config['session_length']+60)) ? ', session_admin = 0' : '';
    
    					$sql = "UPDATE " . SESSIONS_TABLE . " 
    						SET session_time = $current_time, session_page = $thispage_id$update_admin
    
Sigue mas abajo...

Cambios de codigo - 2

Publicado: 08 May 2005, 10:04
por ThE KuKa
  • includes/smtp.php
  1. BUSCAR - Linea 109

    Código: Seleccionar todo

    
    	if( !$socket = fsockopen($board_config['smtp_host'], 25, $errno, $errstr, 20) )
    
    REEMPLAZAR POR

    Código: Seleccionar todo

    
    	if( !$socket = @fsockopen($board_config['smtp_host'], 25, $errno, $errstr, 20) )
    
  • includes/usercp_viewprofile.php
  1. BUSCAR - Linea 36

    Código: Seleccionar todo

    
    }
    $profiledata = get_userdata($HTTP_GET_VARS[POST_USERS_URL]);
    
    
    DESPUES Aí?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?ADIR

    Código: Seleccionar todo

    
    if (!$profiledata)
    {
    	message_die(GENERAL_MESSAGE, $lang['No_user_id_specified']);
    }
    
    
  • language/lang_english/lang_main.php
  1. BUSCAR - Linea 1021

    Código: Seleccionar todo

    
    $lang['An_error_occured'] = 'An Error Occurred';
    $lang['A_critical_error'] = 'A Critical Error Occurred';
    
    
    DESPUES Aí?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?ADIR

    Código: Seleccionar todo

    
    $lang['Admin_reauthenticate'] = 'To administer the board you must re-authenticate yourself.';
    
    
  • language/lang_spanish/lang_main.php
  1. BUSCAR - Linea 1021

    Buscar la linea entera, yo pongo solo una parte...

    Código: Seleccionar todo

    
    $lang['An_error_occured']
    $lang['A_critical_error']
    
    
    DESPUES Aí?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?ADIR

    Código: Seleccionar todo

    
    $lang['Admin_reauthenticate'] = 'Para administrar el Foro, usted debe autentificarse de nuevo.';
    
    
  • login.php
  1. BUSCAR - Linea 55

    Código: Seleccionar todo

    
    	if( ( isset($HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']) ) && !$userdata['session_logged_in'] )
    
    REEMPLAZAR POR

    Código: Seleccionar todo

    
    	if( ( isset($HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']) ) && (!$userdata['session_logged_in'] || isset($HTTP_POST_VARS['admin'])) )
    
  2. BUSCAR - Linea 80

    Código: Seleccionar todo

    
    					$session_id = session_begin($row['user_id'], $user_ip, PAGE_INDEX, FALSE, $autologin);
    
    REEMPLAZAR POR

    Código: Seleccionar todo

    
    					$admin = (isset($HTTP_POST_VARS['admin'])) ? 1 : 0;
    					$session_id = session_begin($row['user_id'], $user_ip, PAGE_INDEX, FALSE, $autologin, $admin);
    
  3. BUSCAR - Linea 162

    Código: Seleccionar todo

    
    	if( !$userdata['session_logged_in'] )
    
    REEMPLAZAR POR

    Código: Seleccionar todo

    
    	if( !$userdata['session_logged_in'] || (isset($HTTP_GET_VARS['admin']) && $userdata['session_logged_in'] && $userdata['user_level'] == ADMIN))
    
  4. BUSCAR - Linea 211

    Código: Seleccionar todo

    
    
    		make_jumpbox('viewforum.'.$phpEx, $forum_id);
    		$template->assign_vars(array(
    			'USERNAME' => $username,
    
    			'L_ENTER_PASSWORD' => $lang['Enter_password'],
    
    REEMPLAZAR POR

    Código: Seleccionar todo

    
    		$s_hidden_fields .= (isset($HTTP_GET_VARS['admin'])) ? '' : '';
    
    		make_jumpbox('viewforum.'.$phpEx, $forum_id);
    		$template->assign_vars(array(
    			'USERNAME' => $username,
    
    			'L_ENTER_PASSWORD' => (isset($HTTP_GET_VARS['admin'])) ? $lang['Admin_reauthenticate'] : $lang['Enter_password'],
    
  • viewtopic.php
  1. BUSCAR - Linea 1110

    Código: Seleccionar todo

    
    		$message = str_replace('\"', '"', substr(@preg_replace('#(\>(((?>([^>\\\\1', '\\0')", '>' . $message . '(((?>([^>\\\\1', '\\0')", '>' . $message . 'sql_query($sql);
    
    		$group_user = array();
    		while ($row = $db->sql_fetchrow($result))
    		{
    			$group_user[$row['user_id']] = $row['user_id'];
    		}
    		$db->sql_freeresult($result);
    
    		$sql = "SELECT ug.user_id, COUNT(auth_mod) AS is_auth_mod 
    			FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug 
    			WHERE ug.user_id IN (" . implode(', ', $group_user) . ") 
    				AND aa.group_id = ug.group_id 
    				AND aa.auth_mod = 1
    			GROUP BY ug.user_id";
    		if ( !($result = $db->sql_query($sql)) )
    		{
    			message_die(GENERAL_ERROR, 'Could not obtain moderator status', '', __LINE__, __FILE__, $sql);
    		}
    
    		while ($row = $db->sql_fetchrow($result))
    		{
    			if ($row['is_auth_mod'])
    			{
    				unset($group_user[$row['user_id']]);
    			}
    		}
    		$db->sql_freeresult($result);
    
    		if (sizeof($group_user))
    		{
    			$sql = "UPDATE " . USERS_TABLE . " 
    				SET user_level = " . USER . " 
    				WHERE user_id IN (" . implode(', ', $group_user) . ")";
    			if ( !($result = $db->sql_query($sql)) )
    			{
    				message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql);
    			}
    		}
    
  • includes/usercp_register.php
  1. BUSCAR - Linea 414

    Código: Seleccionar todo

    
    			if (strtolower($username) != strtolower($userdata['username']))
    
    REEMPLAZAR POR

    Código: Seleccionar todo

    
    			if (strtolower($username) != strtolower($userdata['username']) || $mode == 'register')
    
Eso es todo, hasta otro lanzamiento... :wink:

Publicado: 14 May 2005, 20:14
por ThE KuKa
Hola,

Otro pequeí?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?Â?í?±o cambio para nuestros foros, es un error que se arregla en 2 min.

Este es el tema original:
http://www.phpbb.com/phpBB/viewtopic.php?f=14&t=290149

Abrir admin/admin_ug_auth.php

BUSCAR - Linea 546 aprox.

Código: Seleccionar todo

WHERE user_id IN (" . implode(', ', $group_user) . ")";
REEMPLAZAR POR:

Código: Seleccionar todo

WHERE user_id IN (" . implode(', ', $group_user) . ") AND user_level = " . MOD;
S@lu2