Hi Forum, ich mal wieder...
Bin heute mal auf ein Tool gestoßen, das die Sicherheit von Webaplikationen prüft.
Es nennt sich grendel scan. ( heise.de/security/tools/default.shtml?prg=117&l_sw=&l_aw= )
Habe einen kompletten Check auf alle möglichen fehler durchlaufen lassen. Hatte anfangs 3 , als "high" eingestufe, Sicherheitslücken. Eine davon war XSS die ich mittlerweile gestopft habe.
Meine seite besteht im Prinzip nur aus einer Index mit Login. Nach dem Login gibt es ein paar infos und 3 verschiedene Formulare, die Inhalte nachladen. Vor SQL-Injection bin ich sicher.
zurück zum Thema, ich postet mal die restlichen zwei "high" Sicherheitslücken:
und 2.
Ok die erste Lücke ist CSRF. Dazu hab ich mich schon schlau gemacht, habe aber nirgends Lösungsansätze zur behebung des Sicherheitsmangels gefunden. Da ollte ich fragen, kenn einer ne Seite (am besten auf deutsch, english geht aber auch), die das Thema ausführlich behandelt und auch Lösungsvorschläge beinhaltet?
Ok zum 2. Fehler. Aus dem werd ich nicht ganz schlau. Das meine Sessions unsicher sind, das kann ich daraus lesen. Da ich mit Sessions leider weniger vertraut bin, kann ich nicht recht nachvollziehen warum. Vielleicht könnt ihr mir da helfen.
Ich habe ein Login-Script geschrieben, namens "validatelogin.inc.php". Das setzt gaaanz am anfang $_SESSION['loggedIn'] = false;. Anschließend wird überprüft, sind alle eingaben gemacht. Sind alle Felder ausgefüllt, tu ich mit
hoffentlich möglichen Injections und XSS den gar ausmachen.
Danach folgt die überprüfung der Daten aus der DB.
Ist das ergebnis ungleich 1, kein Login. Ansonsten -> $_SESSION['loggedIn'] = true;
Danach per header die weiterleitung zur ersten Internen seite.
Diese macht zualler erst
In der checkLogin.inc.php steht folgender Code:
Alles anzeigen
Überprüft also lediglich ob $_SESSION['loggedIn'] auf true steht und ob die Session abgelaufen ist. Mehr mache ich nicht bezüglich der Sessions. Auf allen anderen Seiten wird dann auch immer zuerst die checklogin inclued.
Wo liegt hier der Sicherheitsmangel?
Möchte die Seite echt nich uppen, bevor ich die zwei Mängel beseitigt habe.
vielen Dank schonmal!!
edit:
Natürlich ahbe ich auch eine Manuelle Logout funktion die folgendermaßen aussieht:
grüße
Timo
Bin heute mal auf ein Tool gestoßen, das die Sicherheit von Webaplikationen prüft.
Es nennt sich grendel scan. ( heise.de/security/tools/default.shtml?prg=117&l_sw=&l_aw= )
Habe einen kompletten Check auf alle möglichen fehler durchlaufen lassen. Hatte anfangs 3 , als "high" eingestufe, Sicherheitslücken. Eine davon war XSS die ich mittlerweile gestopft habe.
Meine seite besteht im Prinzip nur aus einer Index mit Login. Nach dem Login gibt es ein paar infos und 3 verschiedene Formulare, die Inhalte nachladen. Vor SQL-Injection bin ich sicher.
zurück zum Thema, ich postet mal die restlichen zwei "high" Sicherheitslücken:
Potential CSRF detected
Severity: High
URL: See description
Description: One or more cross-site request forgery (CSRF) vulnerabilities may have been identified. CSRF allows an attacker to force a user to execute arbitrary commands against the vulnerable website. This is possible when the structure of the command is predictable. If the command can be requested as a GET, then a simple IMG tag on an attack website can force the browser to send the command. A POST request can be sent using some simple JavaScript. The browser will send any cookies or authentication credentials associated with the targeted attack, because it has no way of knowing that the request was not intentionally executed by the user.
A list of queries that appear to be vulnerable to CSRF is below. A specific form may be found on multiple pages, but was only tested once.
Action: localhost:80/inc/validateLogin.inc.php
Parameter names: "username", "passwort", and "login"
Original transaction: 53
und 2.
Authentication bypass detected
Severity: High
URL: localhost/test/ and others
Description: An authentication bypass vulnerability may have been detected. Some authenticated requests were successfully executed without providing a session ID. The table below contains the relevant transactions:
Original Transaction Unauthenticated transaction
61 262
146 566
217 658
53 186
159 593
168 533
238 676
133 606
Impact: If the data presented to authenticated users is sensitive, it could be disclosed to an attacker.
Ok die erste Lücke ist CSRF. Dazu hab ich mich schon schlau gemacht, habe aber nirgends Lösungsansätze zur behebung des Sicherheitsmangels gefunden. Da ollte ich fragen, kenn einer ne Seite (am besten auf deutsch, english geht aber auch), die das Thema ausführlich behandelt und auch Lösungsvorschläge beinhaltet?
Ok zum 2. Fehler. Aus dem werd ich nicht ganz schlau. Das meine Sessions unsicher sind, das kann ich daraus lesen. Da ich mit Sessions leider weniger vertraut bin, kann ich nicht recht nachvollziehen warum. Vielleicht könnt ihr mir da helfen.
Ich habe ein Login-Script geschrieben, namens "validatelogin.inc.php". Das setzt gaaanz am anfang $_SESSION['loggedIn'] = false;. Anschließend wird überprüft, sind alle eingaben gemacht. Sind alle Felder ausgefüllt, tu ich mit
hoffentlich möglichen Injections und XSS den gar ausmachen.
Danach folgt die überprüfung der Daten aus der DB.
Ist das ergebnis ungleich 1, kein Login. Ansonsten -> $_SESSION['loggedIn'] = true;
Danach per header die weiterleitung zur ersten Internen seite.
Diese macht zualler erst
In der checkLogin.inc.php steht folgender Code:
Quellcode
- /* Die Datei checkLogin.inc.php überprüft lediglich, ob die Variable loggedIn auf true gesetzt ist */
- session_start();
- //hier die gültigkeitsdauer angeben
- $dauer = 60*120;
- //session gültigkeitsdauer überschreitung prüfen
- if(!isset($_SESSION['timestamp']))
- {
- $_SESSION['timestamp'] = time();
- }else
- {
- if($_SESSION['timestamp']<(time()-$dauer))
- {
- session_destroy();
- }else
- {
- }
- }
- if( (!$_SESSION['loggedIn']) OR ($_SESSION['loggedIn'] != "true") )
- {
- header( 'Location: index.html' );
- exit();
- }
Überprüft also lediglich ob $_SESSION['loggedIn'] auf true steht und ob die Session abgelaufen ist. Mehr mache ich nicht bezüglich der Sessions. Auf allen anderen Seiten wird dann auch immer zuerst die checklogin inclued.
Wo liegt hier der Sicherheitsmangel?
Möchte die Seite echt nich uppen, bevor ich die zwei Mängel beseitigt habe.
vielen Dank schonmal!!
edit:
Natürlich ahbe ich auch eine Manuelle Logout funktion die folgendermaßen aussieht:
grüße
Timo
----[Blockierte Grafik: http://www.smilie-harvester.de/smilies/Alltag/putzen.gif] Nein ich bin nicht die Signatur, ich Putz hier nur ---
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von eseL ()