Session übernehmen über HTTP_REFERRER

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
QCO
Mitglied
Beiträge: 708
Registriert: 15.03.2003 12:30
Wohnort: Leipzig

Session übernehmen über HTTP_REFERRER

Beitrag von QCO »

Ich bin mir nicht sicher, ob dieses Problem hier nicht schon irgendwo behandelt wird oder ob es für andere Leute überhaupt bedeutend ist, aber für mich ist es jedenfalls gravierend.

Wenn ein Nutzer in phpbb ohne Cookies surft, wird die Session-ID als GET-Parameter durchgereicht. Wenn solch ein Nutzer jetzt auf einen Link klickt, der auf eine andere Seite führt, kann auf dem anderen Server über den HTTP-REFERRER die SID ausgelesen werden.
Das Problem ist so alt wie die SIDs und in phpbb schützt man sich vor der Übernahme von Sessions, indem man eine Session an eine bestimmte IP bindet (und in 2.1 auch noch an den HTTP_USERAGENT).

Aber in meinem Fall nützt das nichts, weil die meisten Nutzer meines Boards den gleichen Proxyserver nutzen und deshalb auch von phpbb mit der selben IP erkannt werden. Deshalb können diese Nutzer relativ einfach die Session übernehmen.

Was kann man dagegen tun?
Schnelle direkte Hilfe? Modeinbau? Umfassender, persönlicher Support? Ein individuelles Design/Template?
Ich bin käuflich und löse zu kleinen Preisen Deine Probleme. Anfragen bitte per PN oder Mail.
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Das Problem wurde schon öfters diskutiert - und hat auch zu gravierenden Änderungen an der 2.0.4 geführt. Allerdings sind diese Maßnahmen auch in weiten Teilen auf Widerstand gestoßen, so dass sie in der 2.0.5 teilweise entschärft wurden.
Der Stand ist derzeit der, dass an kritischen Stellen die Session-ID explizit übergeben werden muss und dass die IP-Adresse dort auch überprüft wird. Des weiteren wird i.d.R. nicht REMOTE_ADDR sondern HTTP_X_FORWARDED_FOR gepürft - die Variable wird von den meisten Proxies weitergereicht.
Eine hundertprozentige Sicherheit bietet dies natürlich nicht. Mit phpBB 2.2 wird sich da sicherlich noch einiges tun. Bis dahin bietet es sich evtl. an, einen De-Referer einzubauen, um das Problem zu entschärfen.

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
QCO
Mitglied
Beiträge: 708
Registriert: 15.03.2003 12:30
Wohnort: Leipzig

Beitrag von QCO »

Mhh, ich hab das jetzt mal ein wenig getestet.
Der betreffende Proxy liefert HTTP_X_FORWARDED_FOR, aber phpbb erkennt trotzdem nur die IP-Adresse des Proxies in den Sessions.
Wenn er da irgendwie die interne IP mit verwenden würde, wäre mein Problem schon viel kleiner...

In der common.php gibt es folgenden Code:

Code: Alles auswählen

if( getenv('HTTP_X_FORWARDED_FOR') != '' )
{
	$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : $REMOTE_ADDR );

	$entries = explode(',', getenv('HTTP_X_FORWARDED_FOR'));
	reset($entries);
	while (list(, $entry) = each($entries))
	{
		$entry = trim($entry);
		if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) )
		{
			$private_ip = array('/^0\./', '/^127\.0\.0\.1/', '/^192\.168\..*/', '/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/', '/^10\..*/', '/^224\..*/', '/^240\..*/');//versteh ich nicht
			$found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);

			if ($client_ip != $found_ip)
			{
				$client_ip = $found_ip;
				break;
			}
		}
	}
}
Irgendwas wird hier mit der zweiten IP-Adresse gemacht. Den Abschnitt mit dem replace verstehe ich aber nicht und kann deshalb nicht sagen, war um das nicht greift oder was hier eigentlich passieren sollte...
Kann mir da jemand helfen?

@Mods: evtl. kann man das ins Programmierforum verschieben
Schnelle direkte Hilfe? Modeinbau? Umfassender, persönlicher Support? Ein individuelles Design/Template?
Ich bin käuflich und löse zu kleinen Preisen Deine Probleme. Anfragen bitte per PN oder Mail.
Antworten

Zurück zu „Coding & Technik“