1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Information ausblenden

PHP Sicherheitslücke im Loginskript ???

Dieses Thema im Forum "Programmieren" wurde erstellt von FeeJai, 7. Dezember 2003.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. FeeJai

    FeeJai Guest

    Hi! Ich hab für unsere Homepage folgendes Skript für PHP zur Passwortüberprüfung geschrieben (Auszug):

    PHP:
    if (!$_POST[name] && $_GET[name] ) {
        
    mail("Felix.Jankowski@web.de""Possible breakin attempt/1"$_SERVER['REMOTE_ADDR']);
     
    /*   echo "Security violation, admin has been alerted. Your IP is: $_SERVER['REMOTE_ADDR'] Unix-Time: ". time(); */
         
    fwrite($datei"2\n##########\n");
        exit;
     }

     
    //2
      
    $urlRegEx =
         
    "/^" .
         
    "([0-9a-zA-Z-])*" .  // hostname and subdomains
         
    "$/";
       if (
    preg_match($urlRegEx$_POST[name])) {
     }  else {
         
    mail("Felix.Jankowski@web.de""Possible breakin attempt/2"$_SERVER['REMOTE_ADDR']. $_POST[name]\n $_POST[password]\n "time());
         echo 
    "Security violation, admin has been alerted. Your IP is:"$_SERVER['REMOTE_ADDR']. " Unix-Time: "time();
             
    fwrite($datei"2\n##########\n");
         exit;
     }

       if (
    preg_match($urlRegEx$_POST[password])) {
     }  else {
         
    mail("Felix.Jankowski@web.de""Possible breakin attempt/3"$_SERVER['REMOTE_ADDR']. $_POST[name]\n $_POST[password]\n "time());
         echo 
    "Security violation, admin has been alerted. Your IP is:"$_SERVER['REMOTE_ADDR']. " Unix-Time: "time();
             
    fwrite($datei"2\n##########\n");
         exit;
     }

    //3
    $_POST[name] = strtolower($_POST[name]);

     
    $sql 'SELECT * FROM `users`';
     
    $result mysql_query($sql);

    while(
    $name mysql_fetch_object($result)) {
    if (
    strtolower($name->name) ==  $_POST[name]) { break; }
    }
    if(
    $name == "") { echo "Benutzername falsch!"fwrite($datei"1\n##########\n"); exit(); }

     
    $sql 'SELECT * FROM `users` WHERE  `name` = \'. $_POST[name]. '\';
     $result = mysql_query($sql);

     if(mysql_num_rows($result) <> 1) {
        echo "Benutzername falsch!";
        fwrite($datei, "2\n##########\n");
        exit;
        }

    echo    "<body bgcolor=\"$bgcolor\"><font color=\"$fontcolor\" size=\"+1\" FACE=\"Arial Narrow,sans-serif\">Nickname: " .mysql_result($result, 0, 0). "<br>\n".
        "Vorname: " .mysql_result($result, 0, 2). "<br>\n".
        "Nachname: " .mysql_result($result, 0, 1). "<br>\n".
        "Email: " .mysql_result($result, 0, 3). "<br>\n".
        "Passwort: ";

    $_POST[password] = strtolower($_POST[password]);

    #if($_POST[password] == mysql_result($result, 0, 4) OR $_POST[password] == crypt("CR",mysql_result($result, 0, 4))) {
    if($_POST[password] == mysql_result($result, 0, 4) OR crypt($_POST[password], "CR") == mysql_result($result, 0, 4)) {
        echo     "richtig <br>";
        fwrite($datei, "0\n##########\n");
    } else {
        echo "falsch";
        fwrite($datei, "1\n##########\n");
        exit();
    }
    fclose($datei);

    $status=mysql_result($result, 0, 5);

    if($status == "1") {
        echo "Status: User";
    } elseif($status == "0") {
        echo "Account wurde bereits hinzugefügt, aber noch nicht aktiviert, oder deaktiviert, um die E-Mail-Adresse zu überprüfen. Klicken Sie <a href=\"loginskript.php?session=sendmail&nick=". mysql_result($result, 0, 0). "\">hier</a> um die E-Mail erneut anzufordern";
        exit();
    } elseif($status == "2") {
        echo "Status: VIP";
    } elseif($status == "3") {
        echo "Status: Administrator";
    } elseif($status == "4") {
            $sql = '
    SELECT FROM `blockedWHERE  `name` = \'. $_POST[name]. '\';
            $result = mysql_query($sql);
        echo "Account wurde von ". mysql_result($result, 0, 4) ." bis zum ". mysql_result($result, 0, 1) .".". mysql_result($result, 0, 2) .".". mysql_result($result, 0, 3) ." wegen (groben) Fehlverhaltens gesperrt!";
        exit();
    } elseif($status == "5") {
        echo "Account wurde von einem Administrator bis auf weiteres gesperrt! Für Gründe bite wenden an: <a href=\"mailto:$kontaktmail\">$kontakt</a>";
        exit();
    } else {
    exit();
    }


     $sql = '
    DELETE FROM `loginWHERE `usr` = \'. $_POST[name]. '\';';
     
    $result mysql_query($sql);
     
    $sql 'DELETE FROM `login` WHERE `ip` = \'. $_SERVER[REMOTE_ADDR]. '\';';
     
    $result mysql_query($sql);

     
    $sql 'SELECT * FROM `users` WHERE  `name` = \'. $_POST[name]. '\';';
     
    $result mysql_query($sql);

        
    $EXPIRE time() + 60*15;
        
    $BROWSER addslashes(substr($_SERVER[HTTP_USER_AGENT],-50));

     
    $sql 'INSERT INTO `login` ( `usr` , `expire` , `ip` , `browser` , `status` ) VALUES ( \' .mysql_result($result, 0, 0). '\', \'. $EXPIRE. '\', \'. $_SERVER[REMOTE_ADDR] .'\', \'. $BROWSER. '\', \'. mysql_result($result, 0, 5). '\' );';
     
    $result mysql_query($sql)  or DIE("MYSQL FEHLER!!");


    if(
    $debugmode <> 1) {

     
    #echo "<body onload=\"javascript:top.location.href = './$nextpage'\">"; }
    echo "<head>
    <script language=\"JavaScript\">

    function neu() {

    location.href = \"
    $nextpage\";
    setTimeout(\"neu()\", 
    $redirtime);

    }

    </script>
    </head>
    <body onload=\"setTimeout('neu()', 
    $redirtime)\">
    "
    ;
    }
    echo    
    "<br><p><a href=\"$nextpage\">Hier</a> gehts weiter";
    Leider hat jemand es geschafft, sich in dieses Skript zu hacken :heul: . Ich habe nach Sicherheitslöchern gesucht und keine gefunden und der typ kommt immer noch rein. Ich hoffe ihr könnt mir helfen, den Fehler zu finden, ich bin am Verzweifeln!!!

    FeeJai
     
  2. whisky

    whisky Ganzes Gigabyte

    Vielleicht hat er einfach ein Passwort erraten wenn er dich kennt
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen