Also ich programmiere eine größere Webaplikation. Diese ist auch eigentlich soweit fertig.
Heute habe ich die Seite dann mal etwas nach Schwachstellen durchsucht.
Und prompt stoße ich auf eine Lücke die mir irgendwie total seltsam vorkommt.
Es geht um das Login System, bevor ich die Seite ausgebe prüfe ich ob der Benutzer eingeloggt ist.
Falls dem nicht so ist gebe ich ein einfaches Formular aus.
Beim einloggen registriere ich die Session und setze eine $_Session Variable.
Wobei der t_username eigentlich aus der Datenbank kommt.
Die Webapplikation wird nur ausgegeben wenn diese Variable registriert ist.
Nun mein Problem wenn ich mir die Session ID und die Registriere Session Variable ausgebe, in eine Url packe:
http://localhost/index.php?PHPSESSID=208d320d4b21ef3e2c9dbf2981f7eb5b&s_nr=58301
Gelange ich auch von anderen Rechner in genau dieselbe Session.
Ich prüfe explizit die Variable über das $_SESSION Array allerdings sollte doch bei so einem URL Konstrukt die Variable über $_GET kommen.
Ich steht irgendwie voll auf dem Schlauch und bin irgendwie auch etwas geschockt.
Ps.: register_globals steht definitiv auf off!
Bitte helft mir.
LG
Bebo
Heute habe ich die Seite dann mal etwas nach Schwachstellen durchsucht.
Und prompt stoße ich auf eine Lücke die mir irgendwie total seltsam vorkommt.
Es geht um das Login System, bevor ich die Seite ausgebe prüfe ich ob der Benutzer eingeloggt ist.
Falls dem nicht so ist gebe ich ein einfaches Formular aus.
HTML:
<form name="login" id="login" onsubmit="xajax_login(xajax.getFormValues('login'));return false;">
<table width="400" border="0" align="center" cellpadding="3" cellspacing="0" class="copytext">
<tr>
<td colspan="2"><div class="h1">
<p align="left" class="h2">Bitte einloggen! </p>
</div></td>
</tr>
<tr>
<td width="50%" class="text1">Benutzername:</td>
<td class="text1"><label>
<input name="t_username" type="text" class="text1" id="t_username" />
</label>
</td>
</tr>
<tr>
<td class="text1">Passwort:</td>
<td class="text1"><label>
<input name="t_passwort" type="password" class="text1" id="t_passwort" />
</label></td>
</tr>
<tr>
<td class="text1">Sprache:</td>
<td class="text1"><label>
<select name="select" disabled="disabled">
<option value="1">Deutsch</option>
<option value="2">Englisch</option>
</select>
</label></td>
</tr>
<tr>
<td colspan="2"><input name="b_login" type="submit" class="text1" id="b_login" value="Senden" /></td>
</tr>
</table>
</form>
Beim einloggen registriere ich die Session und setze eine $_Session Variable.
PHP:
$_SESSION['s_nr'] = $_POST['t_username']
Die Webapplikation wird nur ausgegeben wenn diese Variable registriert ist.
Nun mein Problem wenn ich mir die Session ID und die Registriere Session Variable ausgebe, in eine Url packe:
http://localhost/index.php?PHPSESSID=208d320d4b21ef3e2c9dbf2981f7eb5b&s_nr=58301
Gelange ich auch von anderen Rechner in genau dieselbe Session.
Ich prüfe explizit die Variable über das $_SESSION Array allerdings sollte doch bei so einem URL Konstrukt die Variable über $_GET kommen.
Ich steht irgendwie voll auf dem Schlauch und bin irgendwie auch etwas geschockt.
Ps.: register_globals steht definitiv auf off!
Bitte helft mir.
LG
Bebo