Hahne Geschrieben 30. Oktober 2008 Geschrieben 30. Oktober 2008 (bearbeitet) Hallo, ich habe da ein kleines Problem und ich denke ihr könntet mir da behilflich sein. Und zwar meinte ein Kollege zu mir, dass er eine von mir Programmierte Internetseite in ASP.NET C# ohne Probleme hacken könnte. Dieses hatten wir dann gestern auch einmal ausprobiert. Das blöde war nur, dass ich nicht zuschauen konnte wie er es gemacht hat. Nein, nein ich möchte jetzt nicht von euch erfahren wie er es gemacht haben könnte sondern ich möchte lediglich mit euch Diskutieren bzw. eure Meinungen dazu hören ob es möglich sei. Denn meiner Meinung nach hat er es nicht gehackt sondern vermutlich irgendwie auf den Proxyserver mein Passwort nachgeschaut was ich eingegeben habe oder hat andere Tricks angewendet. Nun ja erst einmal zu meinem Code. Ich habe eine Login.aspx Seite in der ich ein Logincontrol habe und in meiner Web.Config ist als Anmeldung Forms angegeben. Login.aspx.cs: protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) { e.Authenticated = Auth.UserAuth(Login1.UserName, Auth.CalculateMD5Hash(Login1.Password)); } Hier rufe ich lediglich meine Klasse UserAuth auf die prüft ob es den User gibt und das Passwort richtig ist. Hier ist es jedoch so, dass ich das Passwort vorher in MD5 umrechnen lasse. Meine UserAuth Klasse sieht wie folgt aus: UserAuth.cs: public static bool UserAuth(string usrName, string usrPassword) { SqlConnection myConnect = new SqlConnection(ConfigurationManager.ConnectionStrings["DBstring"].ConnectionString); string SqlStr = "SELECT username FROM users WHERE username=@username AND password=@password"; SqlCommand myCmd = new SqlCommand(SqlStr, myConnect); myCmd.Parameters.AddWithValue("@username", usrName); myCmd.Parameters.AddWithValue("@password", usrPassword); myConnect.Open(); string Username = (string)myCmd.ExecuteScalar(); myConnect.Close(); if (!string.IsNullOrEmpty(Username)) { return true; } else { return false; } } So, jetzt meinte er, dass er mein Passwort unverschlüsselt sehen konnte, weil der MD5 Hash des Passwortes zu spät berechnet wird. Das Problem ist, dass er aber keinen Sniffer auf meinen Rechner hatte und er mein Passwort angeblich über sein PC gehackt haben soll. Ich habe mich an seinem Rechner aber noch nie angemeldet bzw. saß noch nie daran. Ausserdem kam es mir etwas komisch vor, dass er in mein Büro kam und sagte, dass ich mich doch einmal bitte kurz in mein Administratorbereich anmelden sollte. Was ich dann auch gemacht habe. Kurze Zeit später kam das Passwort in klartext in mein Emailpostfach geflattert. Ich denke aber mal, dass er es nicht gehackt hat bzw. aus meiner Datenbank hat sondern das er es ggf. im Log oder so des Proxyservers gesehen hat. Was denkt ihr? Bearbeitet 30. Oktober 2008 von Hahne Zitieren
SoL_Psycho Geschrieben 30. Oktober 2008 Geschrieben 30. Oktober 2008 Ich denke aber mal, dass er es nicht gehackt hat bzw. aus meiner Datenbank hat sondern das er es ggf. im Log oder so des Proxyservers gesehen hat. Was denkt ihr? Ich würde auch auf irgendwie sowas tippen... Nen grober Sicherheitsschnitzer fällt mir bei deinem Code nicht auf... Zitieren
Hahne Geschrieben 30. Oktober 2008 Autor Geschrieben 30. Oktober 2008 Ich mein durch mein... myCmd.Parameters.AddWithValue("@Value", strValue); kann ich doch SQL Injection vorbeugen. Von daher ist das auf jedenfall ausgeschlossen. Zitieren
Guybrush Threepwood Geschrieben 30. Oktober 2008 Geschrieben 30. Oktober 2008 Gibt viele Möglichekiten wie er das gemacht haben könnte und wenn ers dir nicht verraten will dann wird das nichts spektakuläres sein sondern irgend was dummes wie du schon oben mit dem Proxy vermutet hast. Ich würde nicht sagen das SQl Injection auf jeden Fall ausgeschlossen ist, aber es ist zumindest sehr sehr unwahrscheinlich. Aber trotzdem könnte ja Asp.Net da auch eine Lücke oder einen Fehler haben. Eine gute Methode da ist übrigens auch noch nach dem Auslesen des Benutzers nochmal das übergebene Passwort mit dem Passwort des ausgelesen Benutzers zu vergleichen um ganz sicher zu gehen das nicht doch irgendwie ein anderer gelesen wurde. Aber wie gesagt ich denke auch nicht das es sowas war. Zitieren
SoL_Psycho Geschrieben 30. Oktober 2008 Geschrieben 30. Oktober 2008 Eine gute Methode da ist übrigens auch noch nach dem Auslesen des Benutzers nochmal das übergebene Passwort mit dem Passwort des ausgelesen Benutzers zu vergleichen um ganz sicher zu gehen das nicht doch irgendwie ein anderer gelesen wurde. Danke, hatte ich bisher nie drin, kommt ab jetzt rein... Gute Doppelprüfung Zitieren
U-- °LoneWolf° Geschrieben 30. Oktober 2008 Geschrieben 30. Oktober 2008 hm das prob kann aber eventuel an einer späteren stelle entstehen wo oder wie händelst du bereits eingelogte benutzer? den wenn er siene eigenen cokkies manipuliert oder ähnliches dann geht das eventuel recht fix ich mach daher immer eine prüfung über sessionid, ip-adresse, benutzername, passwort und zeitstempel mit einem vom mir definiertem timeout Zitieren
Guybrush Threepwood Geschrieben 30. Oktober 2008 Geschrieben 30. Oktober 2008 Danke, hatte ich bisher nie drin, kommt ab jetzt rein... Gute Doppelprüfung Hab da zu Hause noch ein kleines Buch rumfliegen von einer der letzten Bastas. Da stehen ein paar nützliches Tipps zu dem Thema drin: Sichere Webanwendungen. schnell + kompakt: Andre Wussow: Amazon.de: Bücher Zitieren
Hahne Geschrieben 30. Oktober 2008 Autor Geschrieben 30. Oktober 2008 Ich verwende die von ASP.NET zur Verfügung gestellten Controls. Z.B. das LoginView Control, LoginName Control oder LoginStatus Control. Die machen das ja alles automatisch für mich. Das ist ja das tolle. Und auch wenn er die Cookies ausliest wie kommt er denn bitte an mein Cookie mit meinem Passwort? Wie gesagt er war nicht an meinem Rechner und an seinem Computer habe ich noch NIE die Seite aufgerufen geschweige denn mein Passwort eingegeben. Sprich es kann bei ihm aufn Rechner kein Cookie mit meinem Passwort vorhanden sein. Zitieren
Argbeil Geschrieben 30. Oktober 2008 Geschrieben 30. Oktober 2008 Ist deine Login Page SSL Verschlüsselt? Wenn nein lass doch mal einen Netzwerksniffer mitlaufen und guck mal was bei dem Request nach Eingabe des Passworts an den Server gesendet wird. Zitieren
Hahne Geschrieben 30. Oktober 2008 Autor Geschrieben 30. Oktober 2008 hab schonma n sniffer mitlaufen lassen und habe kein passwort in klartext gesehen. habe keien ssl verschlüsselung... er meinte er hätte das irgendwie mit viewstate gemacht... Zitieren
Argbeil Geschrieben 30. Oktober 2008 Geschrieben 30. Oktober 2008 Dann frag ihn doch mal wie. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.