Zur Boardunity Forenstartseite
  #1  
Alt 29.02.2004, 16:53
Mitglied
 
Registriert seit: 09.2003
Beiträge: 29

Sicherheit in BB's


Beitrag gelöscht.

Geändert von printf (15.02.2008 um 14:01 Uhr).
  #2  
Alt 29.02.2004, 17:07
Benutzerbild von exe
exe exe ist offline
titellos
 
Registriert seit: 07.2003
Ort: München
Beiträge: 888
Das Problem beschränkt sich aber nicht nur auf Bulletin Boards sondern gilt generell für Webapplikationen auf PHP Basis. Wo die Gründe liegen ist eine gute Frage.
Das die Programmierer keine Ahnung von Sicherheit haben würde ich weitgehend ausschliessen da die Programmierer der bekannteren Boards doch recht fundierte PHP Kentnisse haben. Zeitdruck fällt ebenfalls weg, da wie du schon sagtest ein intval() oder is_numeric() reicht um den Typ eines URL Parameters sicherzustellen.
Ich denke das Problem ist schlicht und ergreifend Schlamperei. Das man mal das intval() oder is_numeric() vergisst oder das es nach einer Copy & Paste Session unbemerkt verschwunden ist kann passieren und ist mir auch schonmal passiert. Das in einer grösseren Software wie dem vB 2-3 Sicherheitslücken auftauchen ist dann kein Wunder mehr.
Die Gründe für XSS vulnerabilities fussen wohl auch auf Schlamperei. Wobei es bei XSS vulnerabilities auch schnell passiert das mal ein regulärer Ausdrück in den Sicherheitsroutinen versagt oder sich auf ähnliche Weisen Fehler einschleichen.
Eine Abhilfe könnte ein globales Sicherheitskonzept sein bei dem beispielsweise GPC Variablen global entschärft und überprüft werden, so das es nicht von intval() Aufrufen in irgendeiner Verzweigung des Scripts abhängt ob Daten sicher sind oder nicht ..

  #3  
Alt 29.02.2004, 18:31
Mitglied
 
Registriert seit: 07.2002
Beiträge: 357
Ein solches globales Abfangen ist ja erst in den neueren PHP-Versionen mittels den neuen Superglobals möglich. Vorher war es unmöglich bzw. zu sehr aufwändig. Doch man sieht das immer öfter. vBulletin macht das so, wenn ich das richtig verstanden habe, phpBB 2.2 wird es so machen und die anderen machen es auch oder werden es in der nächsten Zeit machen.

  #4  
Alt 29.02.2004, 19:12
Benutzerbild von Björn
Boardunity Team
 
Registriert seit: 10.2003
Ort: Rhode
Beiträge: 1.205
was genau sind den SQL-Injactions? *ma ganz dumm frag*

__________________
Björn C. Klein
Welt-Held!
PunkRockNews.de
  #5  
Alt 29.02.2004, 19:49
Benutzerbild von MrNase
Mitglied
 
Registriert seit: 06.2003
Ort: /
Beiträge: 2.639
ja Sascha, beim vBulletin3 ist es so gelöst. Trotzdem muss man aufpassen wenn man Hacks schreibt. Man blickt nicht direkt durch und öffnet deshalb bestimmt auch mal ein Scheunentor

  #6  
Alt 29.02.2004, 20:57
Benutzerbild von exe
exe exe ist offline
titellos
 
Registriert seit: 07.2003
Ort: München
Beiträge: 888
Zitat:
Zitat von trashar
was genau sind den SQL-Injactions? *ma ganz dumm frag*
Der Begriff sagt eigentlich schon fast was SQL-Injections sind. Das Prinzip ist relativ einfach: über eine Variable, die nicht richtig überprüft und entschärft wird, fügt ein Angreifer SQL Befehle in eine SQL-Abfrage ein und verändert sie irgendwie. Die Möglichkeiten so etwas auszunutzen sind recht vielfältig. In manchen Situationen kann man externe Programme über MySQL starten (und mit denen vielleicht andere Datenbanken ausspionieren), in anderen Sessioninformationen oder Passwörter anderer Benutzer auslesen. Man kann vielleicht auch einfach einen Login umgehen, der Kreativität sind da keine Grenzen gesetzt
Kleines Beispiel eines verwundbaren Login Scripts:

PHP-Code:
<?PHP
if($_SERVER['REQUEST_METHOD'] == 'POST') {
        
$username $_POST['username'];
        
$password $_POST['password'];

        
$result mysql_query("SELECT * FROM users WHERE username = '$username' AND password = '$password'");

        if(
mysql_num_rows($result) == 1) {
                echo 
"Login erfolgreich!";
        } else {
                echo 
"Login fehlgeschlagen.";
        }

?>
Wie man sieht trägt das Script den Benutzernamen und das Passwort ungefiltert in die MySQL Abfrage ein. Nehmen wir an ich wollte mich als Benutzer "Administrator" einloggen, kenne aber das Passwort nicht. Da die Abfrage verwundbar ist gebe ich einfach folgendes als Benutzername an:
Code:
Administrator'#
Was als Passwort eingegeben wird spielt keine Rolle mehr. Der Benutzername modifiziert die SQL Abfrage so das folgendes bei rauskommt:

Code:
SELECT * FROM users WHERE username = 'Administrator'#' AND password = ''
Da die Raute (#) in MySQL einen Kommentar einleitet wird alles hinter username = 'Administrator' auskommentiert, das Passwort wird bedeutungslos und ich als Angreifer als Administrator eingelogt.
Das war jetzt nur ein einfaches Beispiel, die Möglichkeiten bei SQL-Injections sind noch weitaus vielfältiger.

  #7  
Alt 29.02.2004, 21:23
Benutzerbild von Björn
Boardunity Team
 
Registriert seit: 10.2003
Ort: Rhode
Beiträge: 1.205
Oha
das ne richtig kack sicherheitslücke!!
ich habs grad mal lokal getestet uhuhuh..
was wär jetzt speziell bei dem beispiel hilfreich? addslashes()?
mfg

__________________
Björn C. Klein
Welt-Held!
PunkRockNews.de
  #8  
Alt 29.02.2004, 21:25
Mitglied
 
Registriert seit: 09.2003
Beiträge: 29
Beitrag gelöscht.


Geändert von printf (15.02.2008 um 14:01 Uhr).
  #9  
Alt 29.02.2004, 21:26
Benutzerbild von exe
exe exe ist offline
titellos
 
Registriert seit: 07.2003
Ort: München
Beiträge: 888
Ja, addslashes() auf alle Strings die in SQL-Abfragen eingesetzt werden sollte das Probleme beheben.

  #10  
Alt 29.02.2004, 21:28
Benutzerbild von Frederic Schneider
WoltLab Holzmichl
 
Registriert seit: 07.2003
Ort: Eschborn
Beiträge: 1.287
Oder du globalisierst das ganze, indem du die superglobals bearbeitest.

__________________
Frederic Schneider
WoltLab Team / WoltLab Wiki / GamePorts / Frederic Schneider / neuer-patriotismus.de
  #11  
Alt 29.02.2004, 21:31
Benutzerbild von Michael Przybyla
Mitglied
 
Registriert seit: 02.2003
Beiträge: 184
Meiner Meinung nach ist mysql_real_escape_string bzw. mysql_escape_string geeigneter.

@fredi: Und was sollte das bringen? Behebt ja nicht die Lücke.

Nebenbei: Statt intval kann man auch ctype_digit verwenden. (Ist meist auch sinnvoller)

  #12  
Alt 29.02.2004, 21:32
Benutzerbild von Frederic Schneider
WoltLab Holzmichl
 
Registriert seit: 07.2003
Ort: Eschborn
Beiträge: 1.287
Zitat:
Zitat von CannabisCow
@fredi: Und was sollte das bringen? Behebt ja nicht die Lücke.
addslashes oder stripslashes auf alle superglobals anwenden, so was meinte ich.

__________________
Frederic Schneider
WoltLab Team / WoltLab Wiki / GamePorts / Frederic Schneider / neuer-patriotismus.de
  #13  
Alt 29.02.2004, 21:35
Benutzerbild von Björn
Boardunity Team
 
Registriert seit: 10.2003
Ort: Rhode
Beiträge: 1.205
wenn magic_quotes_gpc off sind werden $_GET $_POST und $_COOKIE mit addslashes behandelt..
die sicherheitslücke liegt also bei $_SESSION bei mir speziell!
und einfach anwenden auf alle wenn magic_quotes_gpc auf on ist dann kommt nur wir war ruas...
mfg

__________________
Björn C. Klein
Welt-Held!
PunkRockNews.de
  #14  
Alt 29.02.2004, 21:45
Benutzerbild von Michael Przybyla
Mitglied
 
Registriert seit: 02.2003
Beiträge: 184
Was viele vergessen, die $_SERVER Variablen sollte man auch behandeln.
Denn diese kann man ebf. manipulieren.

  #15  
Alt 01.03.2004, 10:50
Mitglied
 
Registriert seit: 10.2003
Ort: Bottrop
Beiträge: 779
Ich hoffe es ist ok, wenn ich nochmal was dazu frage...
Ich verwende für Felder, die Int sind meist (int) statt inval. Bsp.
$topicid = (int)$_REQUEST['topicid'];
Behebt das das Problem ebenfalls oder bringt nur intval den gewünschten Effekt?

__________________
Patrick Gotthardt
Patrick Gotthardt on Software
  #16  
Alt 01.03.2004, 13:23
Benutzerbild von Michael Przybyla
Mitglied
 
Registriert seit: 02.2003
Beiträge: 184
Das hat den gleichen Effekt wie void intval().
Allerdings solltest du beachten, dass dies nicht die Eingabe von -1 verhindert.

Wenn du nur Dezimalzeichen erlauben willst, empfehle ich die Benutzung von void ctype_digit() (Seit PHP 4.2.0 bzw. 4.3.0).

Die von dir angesprochene Typ-Umwandlung (int) (http://de2.php.net/manual/de/languag...e-juggling.php) wurde lediglich von C übernommen.

Antwort


Stichworte
-

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Sicherheit von PHP-Skripten hmueller Programmierung und Datenbanken 3 26.12.2004 13:27
IE Sicherheit IChao Projektvorstellung und Bewertung 5 24.09.2004 16:47
Forum: Protecus Securityboard -> alles über Computer Sicherheit Luki Projektvorstellung und Bewertung 14 22.04.2004 17:28
Meine Nachricht zur Sicherheit von phpBB in deren Forum gelöscht Saubloed Forensoftware 3 29.11.2003 20:57
Sicherheit von Passwörtern / Widerekennen eines Users DaddyCool Programmierung und Datenbanken 18 28.10.2003 16:10






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25