Sicherheitsloch in phpBB2 Plus und Categories Hierarchy

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
rcbcom
Mitglied
Beiträge: 787
Registriert: 17.06.2003 02:28
Wohnort: Im Netz
Kontaktdaten:

RE

Beitrag von rcbcom »

Hallo,
wie ich weis mußt Du das Mod manuel Deinstallieren, alles rückgänig machen was in der Install.txt steht!.Hast Du ein Backup gemacht? Dann spiel das einfach wieder auf.
Benutzeravatar
Nico Haase
Mitglied
Beiträge: 1100
Registriert: 10.08.2003 15:19
Wohnort: Neu-Anspach / Darmstadt
Kontaktdaten:

Beitrag von Nico Haase »

also, auf meinem board lässt sich der fehler nicht reproduzieren. zum test habe ich beispielsweise aus dem titel eines themas im internen forum von http://www.buchtips.net/forum/ verriss eingegeben, genauso Theaterstück aus dem text eines themas. ich setze ein halb-kaputt gemoddetes 2.0.6 mit categories hack 2.0.2 ein - vielleicht ist der nicht betroffen?
Buchtips.net bietet mehr als 2500 Buchrezensionen
Benutzeravatar
Waagenbauer
Mitglied
Beiträge: 219
Registriert: 11.06.2001 02:00
Kontaktdaten:

Beitrag von Waagenbauer »

Habe das gleiche Problem mit phpBB 2.0.4 und dem Mod v2.0.4.

Meiner Meinung nach steckt der Fehler in der "function get_auth_keys".
Wird in search.php hierfür gebraucht:

Code: Alles auswählen

//-- mod : categories hierarchy --------------------------------------------------------------------
//-- delete
//		if ( $search_forum != -1 )
//		{
//			$is_auth = auth(AUTH_READ, $search_forum, $userdata);
//
//			if ( !$is_auth['auth_read'] )
//			{
//				message_die(GENERAL_MESSAGE, $lang['No_searchable_forums']);
//			}
//
//			$auth_sql = "f.forum_id = $search_forum";
//		}
//		else
//		{
//			$is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata); 
//
//			if ( $search_cat != -1 )
//			{
//				$auth_sql = "f.cat_id = $search_cat";
//			}
//
//			$ignore_forum_sql = '';
//			while( list($key, $value) = each($is_auth_ary) )
//			{
//				if ( !$value['auth_read'] )
//				{
//					$ignore_forum_sql .= ( ( $ignore_forum_sql != '' ) ? ', ' : '' ) . $key;
//				}
//			}
//
//			if ( $ignore_forum_sql != '' )
//			{
//				$auth_sql .= ( $auth_sql != '' ) ? " AND f.forum_id NOT IN ($ignore_forum_sql) " : "f.forum_id NOT IN ($ignore_forum_sql) ";
//			}
//		}
//-- add
		// get the object list
		$keys = array();
		$keys = get_auth_keys($search_where, true, -1, -1, 'auth_read');
		$s_flist = '';
		for ($i=0; $i < count($keys['id']); $i++)
		{
			if ( ($tree['type'][ $keys['idx'][$i] ] == POST_FORUM_URL) && $tree['auth'][ $keys['id'][$i] ]['auth_read'] )
			{
				$s_flist .= (($s_flist != '') ? ', ' : '') . $tree['id'][ $keys['idx'][$i] ];
			}
		}
		if ($s_flist != '')
		{
			$auth_sql .= (( $auth_sql != '' ) ? " AND" : '') . " f.forum_id IN ($s_flist) ";
		}
//-- fin mod : categories hierarchy ----------------------------------------------------------------
Ich habe schon versucht $auth_sql .= (( $auth_sql != '' ) ? " AND" : '') . " f.forum_id IN ($s_flist) "; dem alten Code anzupassen. Ohne Erfolg.

Bei mir funzt außerdem die Forum-Auswahl nicht. Es werden immer alle Beiträge aus allen Foren angezeigt. :(

NACHTRAG:
Ich habe private Unterforen in Unterkategorien, wobei hier Ansicht für 'Alle' erlaubt ist, aber lesen (auth_read) nicht erlaubt.
Wenn ich in allen Foren oder in anderen Foren aus anderen Kategorien Suchen lassen, werden keine Beiträge aus dem privaten Subforum in den Ergebnissen angezeigt. Was richtig ist.

Wenn ich aber das private auswähle, spuckt er mir als 'Gast' die privaten Posts aus.
Das heisst ich müsste alle privaten Foren verstecken, also 'Ansicht' (auth_view) nur für 'Privat' einstellen.

Das habe ich nun gemacht:
Jetzt werden die privaten bei Beitrags-Suche in allen Foren ignoriert -> wieder Richtig.
Suche ich in der Kategorie über dem 'verstecktem, privatem' Forum (alle auth auf 'Privat'), bekomme ich immer noch die Beitrags-'Vorschau'.

Vielleicht ist das eine Hilfe für andere, die auch auf der Suche nach diesem Bug sind. Ich weis immo nicht weiter.

Habe bis der Fehler gefunden wird, die Forumauswahl im Such-Formular rausgenommen.
Benutzeravatar
Bluepower
Mitglied
Beiträge: 14
Registriert: 06.04.2003 16:07
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Bluepower »

Also ich scheine dieses Sicherheitsloch nicht zu haben obwohl ich phpbbplus 1.3 einsetzte habe auch gesperrte Foren diese sind jedoch nicht per suche zu finden. Habe auf Beiträge geschalten beim suchen auch mal meinen eigenen Nick genommen und nach dem gesucht da dieser auch in einem Privatem Forum sachen rein schreibt. Nur die Suche hat davon nichts angezeigt weder beiträge noch themen.

Entweder liegt es daran weil ich von einem phpbb 2.0.6 auf ein phpbb plus 1.3 upgedatet habe.
Benutzeravatar
Waagenbauer
Mitglied
Beiträge: 219
Registriert: 11.06.2001 02:00
Kontaktdaten:

Beitrag von Waagenbauer »

Habe jetzt auf Mod v.204 geupt. Aber ohne Erfolg.

Liegt es denn an dem phpBB v2.0.4 liegen ? Aber an was ?
Benutzeravatar
Sujao
Mitglied
Beiträge: 296
Registriert: 25.12.2003 03:56
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von Sujao »

Ich hab den ersten Beitrag nicht ganz verstanden. Tritt der Bug auf wenn man beide Mods hat oder einen davon ? Ich hab nämlich 2.0.6. und den Cat-Hierarchy 2.0.4 und bei mir Tritt der Fehler nicht auf. Hab es zwei mal getestet.
There are no passangers on Spaceship Earth, we are all the crew !
Benutzeravatar
Matzecken
Mitglied
Beiträge: 74
Registriert: 21.07.2003 19:46
Wohnort: Köln
Kontaktdaten:

mini kalender

Beitrag von Matzecken »

Hallo,

also ich hab auch diese 1.3 plus und wenn ich bei dem mini Kalender links auf dem Portal als Gast ein Datum klicke wo ein Beitrag in einem geschüztem Forum geschrieben worden ist, dann kann ich den als Gast auch lesen. Hat das Problem noch einer?


Gruß
Matthias
Hab den Suchen Button benutzt :-)
Benutzeravatar
Waagenbauer
Mitglied
Beiträge: 219
Registriert: 11.06.2001 02:00
Kontaktdaten:

Fehler gefunden!!

Beitrag von Waagenbauer »

Ich habe die Ursache des Problems gefunden!!

Wie von mir vermutet (siehe oberen Post) liegt der Fehler in einem modifiziertem Code-Abschnitt in search.php.

Ursprunglich wird bei "get the object list" im modifiziertem Teil eine Liste Foren-IDs erzeugt, die vom User (Gast) gelesen werden dürfen. Sie wird dem $auth_sql hinzugefügt.

Bei der Ausgabe der Suchergebnisse werden aber so die Privaten Foren, die für Gäste gesperrt sind, mit ausgegeben.

Folgende Änderung habe ich vorgenommen:

$auth_sql wird zusätzlich eine Liste von Foren-IDs hinzugefügt, die NICHT gelesen werden dürfen.

In der SQL-Anweisung steht dann:
WHERE f.forum_id IN (zu durchsuchende Foren) AND f.forum_id NOT IN (zu ignorierende Foren)

Wenn es keine zu durchsuchenden Foren gibt, wird "No_searchable_forums" ausgegeben.

In search.php diesen Abschnitt ersetzen:

Code: Alles auswählen

//-- mod : categories hierarchy -------------------------------------------------------------------- 
//-- delete 
//      if ( $search_forum != -1 ) 
//      { 
//         $is_auth = auth(AUTH_READ, $search_forum, $userdata); 
// 
//         if ( !$is_auth['auth_read'] ) 
//         { 
//            message_die(GENERAL_MESSAGE, $lang['No_searchable_forums']); 
//         } 
// 
//         $auth_sql = "f.forum_id = $search_forum"; 
//      } 
//      else 
//      { 
//         $is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata); 
// 
//         if ( $search_cat != -1 ) 
//         { 
//            $auth_sql = "f.cat_id = $search_cat"; 
//         } 
// 
//         $ignore_forum_sql = ''; 
//         while( list($key, $value) = each($is_auth_ary) ) 
//         { 
//            if ( !$value['auth_read'] ) 
//            { 
//               $ignore_forum_sql .= ( ( $ignore_forum_sql != '' ) ? ', ' : '' ) . $key; 
//            } 
//         } 
// 
//         if ( $ignore_forum_sql != '' ) 
//         { 
//            $auth_sql .= ( $auth_sql != '' ) ? " AND f.forum_id NOT IN ($ignore_forum_sql) " : "f.forum_id NOT IN ($ignore_forum_sql) "; 
//         } 
//      } 
//-- add 
      // get the object list 
      $keys = array(); 
      $keys = get_auth_keys($search_where, true, -1, -1, 'auth_read'); 
      $s_flist = ''; 
      for ($i=0; $i < count($keys['id']); $i++) 
      { 
         if ( ($tree['type'][ $keys['idx'][$i] ] == POST_FORUM_URL) && $tree['auth'][ $keys['id'][$i] ]['auth_read'] ) 
         { 
            $s_flist .= (($s_flist != '') ? ', ' : '') . $tree['id'][ $keys['idx'][$i] ]; 
         } 
      } 
      if ($s_flist != '') 
      { 
         $auth_sql .= (( $auth_sql != '' ) ? " AND" : '') . " f.forum_id IN ($s_flist) "; 
      } 
//-- fin mod : categories hierarchy ----------------------------------------------------------------
Durch:

Code: Alles auswählen

//-- mod : categories hierarchy --------------------------------------------------------------------
//-- delete
//		if ( $search_forum != -1 )
//		{
//			$is_auth = auth(AUTH_READ, $search_forum, $userdata);
//
//			if ( !$is_auth['auth_read'] )
//			{
//				message_die(GENERAL_MESSAGE, $lang['No_searchable_forums']);
//			}
//
//			$auth_sql = "f.forum_id = $search_forum";
//		}
//		else
//		{
//			$is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata);
//
//			if ( $search_cat != -1 )
//			{
//				$auth_sql = "f.cat_id = $search_cat";
//			}
//
//			$ignore_forum_sql = '';
//			while( list($key, $value) = each($is_auth_ary) )
//			{
//				if ( !$value['auth_read'] )
//				{
//					$ignore_forum_sql .= ( ( $ignore_forum_sql != '' ) ? ', ' : '' ) . $key;
//				}
//			}
//
//			if ( $ignore_forum_sql != '' )
//			{
//				$auth_sql .= ( $auth_sql != '' ) ? " AND f.forum_id NOT IN ($ignore_forum_sql) " : "f.forum_id NOT IN ($ignore_forum_sql) ";
//			}
//		}
//-- add

		// get the object list
		$keys = array();
		$keys = get_auth_keys($search_where, true, -1, -1, 'auth_read');
		$s_flist = '';
		$i_flist = '';
		for ($i=0; $i < count($keys['id']); $i++)
		{	
			if ( ($tree['type'][ $keys['idx'][$i] ] == POST_FORUM_URL) && $tree['auth'][ $keys['id'][$i] ]['auth_read'] )
			{
				$s_flist .= (($s_flist != '') ? ', ' : '') . $tree['id'][ $keys['idx'][$i] ];
			}
			
			if ( ($tree['type'][ $keys['idx'][$i] ] == POST_FORUM_URL) && !$tree['auth'][ $keys['id'][$i] ]['auth_read'] )
			{
				$i_flist .= (($i_flist != '') ? ', ' : '') . $tree['id'][ $keys['idx'][$i] ];
			}
		}
		
		if ($s_flist != '')
		{
			$auth_sql .= (( $auth_sql != '' ) ? " AND" : '') . " f.forum_id IN ($s_flist) ";
		}
		else
		{
				message_die(GENERAL_MESSAGE, $lang['No_searchable_forums']);
		}
		
		if ($i_flist != '')
		{
			$auth_sql .= (( $auth_sql != '' ) ? " AND" : '') . " f.forum_id NOT IN ($i_flist) ";
		}
			
//-- fin mod : categories hierarchy ----------------------------------------------------------------
Benutzeravatar
Waagenbauer
Mitglied
Beiträge: 219
Registriert: 11.06.2001 02:00
Kontaktdaten:

Beitrag von Waagenbauer »

Öhm, könnte ein Moderator meinen Patch nicht zu den "Wichtigen Patches für phpBB" oder so legen, bevor das hier wieder versickert ?
DiveMan
Mitglied
Beiträge: 39
Registriert: 28.06.2003 18:29

Beitrag von DiveMan »

Hm, ich hab nach der Änderung das Problem, dass dann immer folgende Meldung kommt:
Du hast nicht die Berechtigung, dieses Forum zu durchsuchen.
Kommt auch, wenn ich als Admin eingeloggt bin...

Nutze Modversion 2.04 vom Category Mod
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“