[Mapbender-dev] security hole, Sicherheitslücke

Uli Rothstein (WhereGroup) uli.rothstein at wheregroup.com
Tue Feb 20 08:23:47 EST 2007


Hallo Liste,

im Mapbender ist eine Sicherheitslücke aufgefallen - vielen Dank an alle, die 
bei der Sicherheitsheitsüberprüfung und dem Aufdecken dieses Fehlers beteiligt 
waren.
Durch die unüberprüfte Anzeige des Benutzernamens im Anmeldedialog kann durch 
ein Cross-Site-Scripting der Anmeldedialog manipuliert werden. Dies funktioniert 
im Prinzip so, dass ein Angreifer eine URL zusammenstellt, in der anstelle des 
Benutzernamens HTML/JS-Code übergeben wird, der durch die ungefilterte Anzeige 
den Anmeldedialog umfunktioniert.
Veranlasst der Angreifer nun einen Benutzer, diesen zusammengestellten Link zu 
benutzen, um auf diesem Weg zum Anmeldedialog zu gelangen, kann er z.B. das 
Formular benutzen, um z.B. persönliche Daten (Passwort etc.) auszulesen.

Es gibt die folgenden Möglichkeiten den Bug zu beheben.
1. in der Datei /mapbender/http/frames/login.php
Zeile: 127
den value des Textfeldes leer lassen:

echo "<tr><td>Name: </td><td><input type='text' name='name' class='login_text' 
value='".$name."'></td></tr>";

wird zu

echo "<tr><td>Name: </td><td><input type='text' name='name' class='login_text' 
value=''></td></tr>";

(also ".$name." entfernen)

oder 2.: den angehängten patch ausführen.
oder 3. die Datei mapbender/http/login.php neu aus dem Repository (svn) holen

Viele Grüße
Uli Rothstein


Hi List,

a security hole in mapbender is announced, thanks to all who were involved in 
the security-check!
It's possible to use cross-site-scripting to manipulate the login-dialog, 
because there is no validation of the displayed username. An attacker could 
create an URL with HTML/JS as value of the get-parameter 'name' - and prompt 
someone to use this link.

There are three possibilities to fix the bug:
1. file: /mapbender/http/frames/login.php
line: 127
eliminate the value of the textfield:

echo "<tr><td>Name: </td><td><input type='text' name='name' class='login_text' 
value='".$name."'></td></tr>";

so it looks like:

echo "<tr><td>Name: </td><td><input type='text' name='name' class='login_text' 
value=''></td></tr>";

(remove: ".$name.")

or 2.: apply the attached patch.
or 3. get the actual file  mapbender/http/login.php from the mapbender 
repository (svn)

best regards
Uli Rothstein


-- 
---------------------------------------
Ulrich Rothstein
WhereGroup GmbH & Co. KG
Siemensstraße 8
53121 Bonn
---------------------------------------
Zentrale:  ++49 (0) 228 909038 0
Durchwahl: ++49 (0) 228 909038 17
Fax:       ++49 (0) 228 909038 11
---------------------------------------
mailto:uli.rothstein at wheregroup.com
mailto:info at wheregroup.com
http://www.wheregroup.com
---------------------------------------
Komplementärin:
WhereGroup Verwaltungs GmbH
vertreten durch:
Arnulf Christl, Olaf Knopp, Peter Stamm
Amtsgericht Bonn, HRB 9885
---------------------------------------
-------------- next part --------------
Index: mapbender/http/frames/login.php
===================================================================
--- mapbender/http/frames/login.php	(revision 1126)
+++ mapbender/http/frames/login.php	(working copy)
@@ -124,7 +124,7 @@
 	killSession();
 	echo "<form name='loginForm' action ='" . $PHP_SELF . "' method='POST'>";
 	echo "<table>";
-	echo "<tr><td>Name: </td><td><input type='text' name='name' class='login_text' value='".$name."'></td></tr>";
+	echo "<tr><td>Name: </td><td><input type='text' name='name' class='login_text' value=''></td></tr>";
 	echo "<tr><td>Password: </td><td><input type='password' name='password' class='login_text'></td></tr>";
 	echo "<tr><td></td><td><input type='submit' class='myButton' value='login' title='anmelden'>";
 	echo "&nbsp;&nbsp;<a href='../php/mod_forgottenPassword.php' title='Passwort vergessen?' target='_blank'>Forgot your password?</a>";


More information about the Mapbender_dev mailing list