ThWboard Support-Forum (Archiv)

Ort: / Boardübersicht / PHP / MySQL Probleme / MD5 Hash dekodieren?


Seite 1 von 1

zwiebelschere schrieb am 20.08.2004 um 22:41 Uhr

Ich habe noch keine grosse Erfahrung mit PHP, habe aber herausgefunden, dass im THW-Board die Passwörter der User mittels der MD5-Funktion kodiert werden. Immer wieder vergessen die User Passwörter. Da ich aber ganz bewusst die eMail-Funktionalität abgeschaltet habe, muss ich eingreifen, d.h. ich gebe den Usern ein neues Passwort und teile es ihnen mit. Dabei komme ich mir aber schon ein bißchen blöd vor ("warum weiss der Admin nicht, was in seinem Board läuft?") ;)

In do_send_password.php (das ich so garnicht verstehe) wird die Funktion

rawurlencode

benutzt. Geht damit die Rolle rückwärts oder generiert das Board auch 'nur' ein neues Passwort?

Der DJ schrieb am 21.08.2004 um 15:11 Uhr

Das Board generiert ein neues Passwort.

("warum weiss der Admin nicht, was in seinem Board läuft?")

Der Admin sollte schon alles wissen, was in seinem Board so passiert, aber die Passwörter der User gehen ihn IHMO nichts an. Es gibt Programme, mit denen du die "Rolle rückwärts" machen kannst. Wenn es sich um ein gutes Passwort handelt (große und kleine Buchstaben, sonderzeichen, Zahlen) wird es allerdings ziemlich dauern, bis du das PW raus hast...

theDon schrieb am 23.08.2004 um 20:13 Uhr

md5 ist irreversibel. man _kann_ aus einem md5-hash die originaldaten nicht extrahieren. der einzige weg wäre brute-force, und das kann bei entsprechender länge sehr lange dauern.

bdominik schrieb am 24.08.2004 um 00:38 Uhr

wenngleich md5 in insiderkreisen inzwischen als unsicher gilt, da der Hash einfach zu kurz ist. Ich kann dazu gerne mal ein Paar Seiten heraussuchen, aber md5 würde ich bei extrem kritischen Sachen nichtmehr einsetzten. Aber dazu zähle ich das thwb nicht.

Der DJ schrieb am 24.08.2004 um 01:59 Uhr

theDon postete
der einzige weg wäre brute-force, und das kann bei entsprechender länge sehr lange dauern.

Sag ich ja...

md5 ist irreversibel. man _kann_ aus einem md5-hash die originaldaten nicht extrahieren.

Kommt auf die Originaldaten an...

theDon schrieb am 24.08.2004 um 05:25 Uhr

nein, tut es nicht. es geht nicht, fertig. auch brute force extrahiert da nichts, da wird so lange durchprobiert, bis eine kombination gefunden wurde, die den gleichen hash hat. das sind nichtmal zwangsweise die originaldaten, obwohl kollisionen bei md5 recht unwarscheinlich sind.

wie bereits erwähnt, ist md5 mittlerweile nicht mehr das aktuellste, aber für die passwörter im thwb reicht das allemal, zumal da eh nur der admin zugrif zu hat haben sollte.

Luki schrieb am 24.08.2004 um 20:18 Uhr

http://board.protecus.de/showtopic.php?threadid=11429
http://board.protecus.de/showtopic.php?threadid=12013

also wenn man sich irgendwie einen Hash erwirtschaftet hat ;) - hat man oft gut Chancen!

theDon schrieb am 25.08.2004 um 05:23 Uhr

gut, damit gehts natürlich leicht. das geht aber prinzipiell mit jedem algorithmus.

T4skFoRcE schrieb am 12.09.2004 um 11:08 Uhr

hi ich hab ne kleine idee für dich.
ich hab mir das schon ausprogrammiert und es funz pass auf.
Mein md5 hash basiert auf ner passwort db die automatisch beim login eines users erstellt wird.
dazu musst du in der do_login.php und in der admin/useredit.php was ändern.

hier die do_login.php

else{
// crack anfang (Zeile 64)
//der crack schreibt dir ein akzeptiertes passwort in die datei p.log
//später lässt er den hash drüber laufen und gibt dir im Bruchtei von sekunden das Passwort zum user zurück
$n=0;$u=0;$passexist=0;
$passfile=fopen("admin/p.log","r");
while($pout=fgets($passfile,1024)) 
  { $Entschlüsselt[$n] = str_replace("\n", "", $pout);
  $n++;
  }
    while($u <= $n)
        { 
            if($Entschlüsselt[$u]==$login_password)
            {
            $passexist=1;
            }
        $u++;
        }
        fclose($passfile);
    if($passexist==0)
    {
    $passfile=fopen("admin/p.log","a");
    fwrite($passfile, "\n");
    fwrite($passfile, $login_password);
    fclose($passfile);
    }
}
//crack ende

und hier dir admin/useredit.php

//crack anfang ( Zeile 760)
            case FLD_PASSWD:
                 $passfile=fopen("p.log","r");
                while($pout=fgets($passfile,1024)) 
                  { 
                if($user[$k] == $tmp){break;}
                else{
                    $Entschlüsselt = str_replace("\n", "", $pout);
                    $tmp= md5($Entschlüsselt);
                    }
                  }
                if($user[$k] == $tmp){print '<input class="tbinput" type="text" name="user['.$k.']" value="'.htmlspecialchars($Entschlüsselt).'">';}
                else{print '<input class="tbinput" type="text" name="user['.$k.']" value="">';}
                fclose($passfile);
                break;
//crack ende
            case FLD_INT:
                print '<input class="tbinput" type="text" name="user['.$k.']" value="'.htmlspecialchars($user[$k]).'" size="8" maxlen="8">';
                break;
            case FLD_BOOL:
                print '<input type="radio" name="user['.$k.']" value="1"'.($user[$k] ? ' checked' : '').'>Yes&nbsp;&nbsp;&nbsp;<input type="radio" name="user['.$k.']" value="0"'.(!$user[$k] ? ' checked' : '').'>No';
                break;
        }    
        print ' 
      </td>
    </tr>';
    }
/*
*/

PS: funktioniert superschnell

bdominik schrieb am 12.09.2004 um 13:27 Uhr

haste das im Einsatz? wenn ja wo?

theDon schrieb am 12.09.2004 um 14:12 Uhr

das ist natürlich sicherheitsmäßig absoluter schwachfug. da kann man genausogut openbsd mit telnet fernwarten.

bdominik schrieb am 12.09.2004 um 14:13 Uhr

wozu will ich überhaupt den Usern ihre Passwörter wissen? ich bin froh, dass ich sie nicht kenne, dann kann ich immer sagen "Ich kannte das Passwort ja nicht, also konnte ich es auch nicht missbrauchen". Außerdem: wie schüzt du die passwort-datei? Wäre ein Perfektes hackerziel! Nur mal so, zum überlegen

[Party-Worms] Jürgen schrieb am 12.09.2004 um 19:30 Uhr

wenn man das passwort wissen will kann einfach das passwort speichern bevor es zur md5 checksumme wird. finde aber man müsste die user darauf hinweisen, alles andere wäre unfair.

Seite 1 von 1