phpbb bug in Activeringslink

Voor discussies rondom phpBB2. phpBB2 wordt niet meer ondersteund en deze berichten kunnen wellicht gedateerd zijn.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
Gesloten
immers
Berichten: 27
Lid geworden op: 16 feb 2005, 00:34

phpbb bug in Activeringslink

Bericht door immers » 23 okt 2005, 17:08

Hallo lieve mensen,

Ik ben er laatst achter gekomen dat iedereen offline leden weer kan activeren. Door heel simpel in de activeringslink het lidnummer te wijzigen. Ik heb gezocht en gezocht op dit forum, maar nog geen bugfix gezien voor dit probleem. Iemand nog suggesties dan behalve de goedkeuring door de beheerder in te stellen? Je zou zeggen dat dit toch te fixen moet zijn om bijvoorbeeld de activering maar eenmalig te laten plaatsvinden.

Alvast bedankt voor het meedenken!
Immers

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20315
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 23 okt 2005, 19:13

Volgens mij kan dat niet hoor, kan enkel met en de juiste user_id en de juiste code. Eventueele bugs kan je trouwens toevoegen aan de bug database op http://www.phpbb.com/bugs/

immers
Berichten: 27
Lid geworden op: 16 feb 2005, 00:34

Bericht door immers » 23 okt 2005, 19:35

Hoi Paulus,

Ja, het kan echt en het is ook nog eens kinderlijk eenvoudig!

Voorbeeld:
Orignele link van een nieuwe gebruiker: forum/profile.php?mode=activate&u=2771&act_key=7ad70b
Wijzig user 2771 bijvoorbeeld in u=15 dus forum/profile.php?mode=activate&u=6 ( dus zonder de achtervoegsels &act_key=7ad70b en het werkt!
User 15 wordt geactiveerd. Als dit geen bug is dan weet ik het niet meer. PHPBB is gelukkig nog niet af. Ik zal deze meteen plaatsen in de door jou aangegeven buglist.

Want deze bug moeten we natuurlijk gaan fixen.
Laatst gewijzigd door immers op 23 okt 2005, 19:38, 5 keer totaal gewijzigd.

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20315
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 23 okt 2005, 19:36

Ik ga eens even in de code kijken, maar geloof nog steeds niet dat het kan :)

EDIT:

Code: Selecteer alles

$sql = "SELECT user_active, user_id, username, user_email, user_newpasswd, user_lang, user_actkey 
	FROM " . USERS_TABLE . "
	WHERE user_id = " . intval($HTTP_GET_VARS[POST_USERS_URL]);
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not obtain user information', '', __LINE__, __FILE__, $sql);
}

if ( $row = $db->sql_fetchrow($result) )
{
	if ( $row['user_active'] && trim($row['user_actkey']) == '' )
	{
		$template->assign_vars(array(
			'META' => '<meta http-equiv="refresh" content="10;url=' . append_sid("index.$phpEx") . '">')
		);

		message_die(GENERAL_MESSAGE, $lang['Already_activated']);
	}
	else if ((trim($row['user_actkey']) == trim($HTTP_GET_VARS['act_key'])) && (trim($row['user_actkey']) != ''))
	{
haal ik uit usercp_activate.php
Het is dus niet mogelijk om de user_id te veranderen, BEHALVE als de activate ID hetzelfde is, en die kans lijkt me erg klein.

frop
Berichten: 1
Lid geworden op: 24 okt 2005, 08:17

Bericht door frop » 24 okt 2005, 08:32

Hmmm. Maar als je de code verder bekijkt, zie je:

Code: Selecteer alles

$sql = "UPDATE " . USERS_TABLE . "
			SET user_active = 1, user_actkey = ''" . $sql_update_pass . " 
			WHERE user_id = " . $row['user_id']; 
Dus de activation code wordt ge-reset na het activeren. En dan kom je met een lege activation key wel degelijk door het if statement (HTTP_GET_VARS['act_key'] is immers leeg)...! :?

Code: Selecteer alles

else if ((trim($row['user_actkey']) == trim($HTTP_GET_VARS['act_key'])) && (trim($row['user_actkey']) != '')) 

Overigens zit deze 'feature' (om de activation code leeg te maken) ook in het admin deel van het bord. Bijvoorbeeld in admin_users_inactive.php:

Code: Selecteer alles

$sql = "UPDATE " . USERS_TABLE . " SET user_active = 1, user_actkey = '' WHERE user_id=$to_userdata AND user_id <> " . ANONYMOUS ;

Wellicht een bug in het de-activeren van een gebruiker?

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20315
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 24 okt 2005, 14:08

frop schreef:Hmmm. Maar als je de code verder bekijkt, zie je:

Code: Selecteer alles

$sql = "UPDATE " . USERS_TABLE . "
			SET user_active = 1, user_actkey = ''" . $sql_update_pass . " 
			WHERE user_id = " . $row['user_id']; 
Dus de activation code wordt ge-reset na het activeren. En dan kom je met een lege activation key wel degelijk door het if statement (HTTP_GET_VARS['act_key'] is immers leeg)...! :?
Als die leeg zou zijn, zou deze code niet uitgevoerd worden ;)
frop schreef:

Code: Selecteer alles

else if ((trim($row['user_actkey']) == trim($HTTP_GET_VARS['act_key'])) && (trim($row['user_actkey']) != '')) 

Overigens zit deze 'feature' (om de activation code leeg te maken) ook in het admin deel van het bord. Bijvoorbeeld in admin_users_inactive.php:

Code: Selecteer alles

$sql = "UPDATE " . USERS_TABLE . " SET user_active = 1, user_actkey = '' WHERE user_id=$to_userdata AND user_id <> " . ANONYMOUS ;
Ik kan die hele file niet vinden, ik neem aan dat je bedoelt admin_users.php, wanneer daar een user geactiveerd wordt, wordt er automatische een lege string toegekent, zodat een gebruiker hem niet nogmaals hoeft te activeren.
frop schreef: Wellicht een bug in het de-activeren van een gebruiker?
Het is geen bug, de code is gewoon goed.

immers
Berichten: 27
Lid geworden op: 16 feb 2005, 00:34

Bericht door immers » 25 okt 2005, 01:04

Hallo lieve mensen,

Het probleem is nogsteeds niet opgelost en het ziet er echt uit dat het een phpbug is. Ondertussen gaat het bij ons als een lopend vuurtje en zet iedereen profielen van anderen te activeren. Dat kan toch niet de bedoeling zijn. Erg vreemd dat na al die jaren niemand eerder op het idee is gekomen of deze bug heeft ontdekt.
Nu maar hopen op een snelle bugfixs.
Groetjes,
Immers

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20315
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 25 okt 2005, 08:59

Geef jouw usercp_activate.php eens in een tekstbestand?

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 25 okt 2005, 15:51

Hallo lieve mensen,

Waarom zet je dan niet tijdelijk de activatie op beheerder, zodat activatie door gebruikers niet mogelijk is?

Groetjes, Bee
... Maar ik modereer (nog) niet.

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20315
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 25 okt 2005, 15:55

Omdat ook die buggie is? :P

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 25 okt 2005, 15:59

paulus schreef:Omdat ook die buggie is? :P
Je kan tenminste een poging doen om activaties te blokkeren :wink:
... Maar ik modereer (nog) niet.

Gesloten