[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 " <a href='../php/mod_forgottenPassword.php' title='Passwort vergessen?' target='_blank'>Forgot your password?</a>";
More information about the Mapbender_dev
mailing list