Sicherheitsloch im Categorie Hirarchy Mod behoben

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
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.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
Waagenbauer
Mitglied
Beiträge: 219
Registriert: 11.06.2001 02:00
Kontaktdaten:

Sicherheitsloch im Categorie Hirarchy Mod behoben

Beitrag von Waagenbauer »

Falls es jemanden interessiert:
Ich habe die Ursache des Problems (siehe HIER gefunden!

Der Fehler liegt 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 ----------------------------------------------------------------
unTouched
Mitglied
Beiträge: 119
Registriert: 26.04.2004 12:25
Kontaktdaten:

Beitrag von unTouched »

danke :D
Hangman Support:
http://www.coded4u.de/
Benutzeravatar
Leo Navis
Mitglied
Beiträge: 306
Registriert: 18.04.2004 22:09
Wohnort: In einem unbekannten Land...
Kontaktdaten:

Beitrag von Leo Navis »

Auch von mir ein Big THX
:D
Benutzeravatar
Leo Navis
Mitglied
Beiträge: 306
Registriert: 18.04.2004 22:09
Wohnort: In einem unbekannten Land...
Kontaktdaten:

Beitrag von Leo Navis »

Hey, könnte man das nicht wichtig machen??
Ist doch ziemlich wichtig, geht schließlich um ne Sicherheitslücke...
supertom64
Mitglied
Beiträge: 1
Registriert: 06.12.2004 18:02

Beitrag von supertom64 »

ich habe gerade die neueste phpbb + 1.52 installiert, leider ist der search bug immer noch vorhanden.
als gast kann man alle einträge durch search * sehen.
könnte man den fix nicht in die neuen versionen implementieren?
vielen dank
tom
Benutzeravatar
rabbit
Ehemaliger Übersetzer
Beiträge: 4199
Registriert: 14.06.2003 22:09
Wohnort: Hildesheim
Kontaktdaten:

Beitrag von rabbit »

hi,

wenn, dann ist das sache der autoren des phpBB plus @ www.phpbb2.de ;) (und die scheinen sich nicht arg 'drum zu scheren...)
Offizieller Übersetzer des Categories Hierarchy MOD 2.1.x
Deutscher UserGuide für den Categories Hierarchy MOD v2.1.4
Empfohlener Hoster: All-Inkl.com
Antworten

Zurück zu „phpBB 2.0: Mod Support“