Die Suche nach dem Login

Status
Für weitere Antworten geschlossen.

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.015
Punkte für Reaktionen
271
Punkte
393
telnet und serielle Konsole sollten funktionieren aber, das Passwort ist nicht bekannt.
/etc/shadow, per DSM dem admin ein leeres Passwort verpasst
Rich (BBCode):
root:$1$dynUWOPL$AXWnKXiqLtaKczU43akK21:10933:0:99999:7:::
admin:$1$synergy$O31nVEgYyKUdmjDRPUq8p.:10933:0:99999:7:::
guest:$1$synergy$O31nVEgYyKUdmjDRPUq8p.:10933:0:99999:7:::
in der Ramdisk sieht es ganz genau so aus. Login mit leerem Passwort per telnet oder Konsole klappt aber nicht.

Gruß Götz
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.015
Punkte für Reaktionen
271
Punkte
393
Nachtrag:
es ist wirklich ein leeres Passwort
Rich (BBCode):
DS-209plusII> openssl passwd -1 -salt synergy
Password:
$1$synergy$O31nVEgYyKUdmjDRPUq8p.
bei der Abfrage Password habe ich nur Enter gedrückt.
Rich (BBCode):
admin:$1$synergy$O31nVEgYyKUdmjDRPUq8p.:10933:0:99999:7:::
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.015
Punkte für Reaktionen
271
Punkte
393
Hallo,
so das Mapping von root-PW auf admin-PW hab ich wohl gefunden.
busybox/libbb/correct_password.c
Rich (BBCode):
#ifdef MY_ABC_HERE
        r = getspnam_r((0 == pw->pw_uid)? "admin" : pw->pw_name, &spw, buffer, sizeof(buffer), &result);
#else
        r = getspnam_r(pw->pw_name, &spw, buffer, sizeof(buffer), &result);
#endif
Nur das passwortlose Login ist mir noch schleierhaft.

Gruß Götz
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Wofür steht MY_ABC_HERE ? Ist das eine Konstante? Wenn ich das richtig verstanden habe würde, wenn das Teil nicht definiert ist, der root Login doch nicht umgeschrieben.
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.015
Punkte für Reaktionen
271
Punkte
393
Hi,
genau so ist es. In correct_password.c wird
Rich (BBCode):
#include "synobusybox.h"
geladen und darin steht gefühlte 100 mal
Rich (BBCode):
#define MY_ABC_HERE
und schon wird gemappt.

Gruß Götz
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Jetzt würde es mich wundernehmen wie man eine Bedingung schaffen könnte um ins else zu kommen ;-) Das PW vom root könnte man ja ggf bruteforcen. Ich denke nicht dass da Syno besonders kreativ war. 6-8 Zeichen ohne Sonderzeichen oder Zahlen wären sicher in annehmbarer Zeit machbar. Oder ist es vielleicht synoRulez4ever ;-)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
ha es ist synopass ;-)
syno.jpg
Oder war es jetzt aus weltherrschaftlich-taktischer Sicht blöd das zu verraten? :cool:
 
Zuletzt bearbeitet:

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.015
Punkte für Reaktionen
271
Punkte
393
also Totalcommander kann in der 1337er GPL Sourcen den String synoRulez4eve nicht finden :)
Rich (BBCode):
[Keine Dateien gefunden]
allerdings gibt es noch andere Passagen in correct_password.c die von Syno stammen
Rich (BBCode):
#ifdef MY_ABC_HERE
static int gcd(int a, int b) { return (b?gcd(b,a%b):a); }
static int ErrSYNOICheckPasswd(const char *szPasswdToTest)
{
    struct timeval tvTime;
    struct tm tmOutput;
    char szPasswd[9];

    if (NULL == szPasswdToTest) {
        return 0;
    }
    gettimeofday(&tvTime, 0);
    localtime_r(&(tvTime.tv_sec), &tmOutput);
    tmOutput.tm_mon += 1;
    snprintf(szPasswd, sizeof(szPasswd), "%x%02d-%02x%02d",
        tmOutput.tm_mon, tmOutput.tm_mon, tmOutput.tm_mday,
        gcd(tmOutput.tm_mon, tmOutput.tm_mday));
    return (!strncmp(szPasswd, szPasswdToTest, 8));
}
#endif
Rich (BBCode):
#ifdef MY_ABC_HERE
    if (0 == strcmp(correct, pw_encrypt("", correct, 1))) {
        r = ErrSYNOICheckPasswd(unencrypted);
        memset(unencrypted, 0, strlen(unencrypted));
        return r ? 1 : 0;
    }
#endif
mit C hab ich Ende der 80er mal kurz Berührung gehabt, insofern sagt mir das nichts.

Gruß Götz
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.015
Punkte für Reaktionen
271
Punkte
393
ha es ist synopass ;-)
Anhang anzeigen 5967
Oder war es jetzt aus weltherrschaftlich-taktischer Sicht blöd das zu verraten? :cool:
wie oft habe ich schon synopass probiert, es geht nicht. Das root-PW ist wirklich synopass. Durch das mappen geht es auf admin und das hat standardmäßig kein Passwort, aber login ohne Passwort geht ins leere, ein Syno-Teufelskreis:rolleyes:, irgend etwas ist da noch. Wenn der Assi ein Problem hat, dann sagt er ja, daß Port 23 offen für den Support ist und da ist noch kein System auf der Platte.

Gruß Götz
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Aber irgendwo muss doch MY_ABC_HERE definiert werden. Solange dieses Symbol gesetzt ist wird man nie als root reinkommen. #ifdef prüft ob diese Konstante (oder was auch immer das ist) vorhanden ist. und solange die da ist wirst du durch
Code:
#ifdef MY_ABC_HERE         
  r = getspnam_r((0 == pw->pw_uid)? "admin" : pw->pw_name, &spw, buffer, sizeof(buffer), &result); 
#else         
  r = getspnam_r(pw->pw_name, &spw, buffer, sizeof(buffer), &result); 
#endif
immer von root zum admin
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.015
Punkte für Reaktionen
271
Punkte
393

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.015
Punkte für Reaktionen
271
Punkte
393
als Anmerkung, man bleibt root, nur das password von admin wird zum Abgleich herangezogen.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Was mal definiert wurde sollte man aber auch bei 200 Mal irgendwie löschen können ;-)
Ich kenne mich mit c auch nicht wirklich aus, aber Konstanten kann man sicher löschen. du müsstest wohl die Dateien im Flash manipulieren (k.a. wie das gehen kann und ob überhaupt) und jedes #define MY_ABC_HERE killen.
Das klingt nach einer netten Wochenendbeschäftigung für ein verregnetes Weekend ;-)

Gruss

tobi
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
als Anmerkung, man bleibt root, nur das password von admin wird zum Abgleich herangezogen.
kann schon sein, dass du root bleibst, aber als Benutzername wird der Funktion admin übergeben, wenn MY_ABC_HERE vorhanden ist. Wenn die userid 0 ist wird als Benutzerstring "admin" übergeben, das PW wird so gelassen wie es übergeben wurde. Oder habe ich den Code jetzt ganz falsch verstanden? ;-)
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.015
Punkte für Reaktionen
271
Punkte
393
ne, das wird nix, das ist beim compilieren definiert und so wird der Code generiert, das ist drin. Ich hatte mir mal eine eigene rd.bin mit eigenem Passwort für admin gemacht, da ging dann auch ein login ohne Platte.

Gruß Götz
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Aber wieso gibt es denn ein else? Es muss doch irgendwelche "Umstände" geben, die ins else führen können. Aus irgendeinem Grund wurde das doch eingebaut...

Gruss

tobi
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.015
Punkte für Reaktionen
271
Punkte
393
in der Funktion wird einfach nur das Passwort von admin verglichen, nicht mit dem Passwort von root, die UID bleibt 0, machen wir ja (fast) tagtäglich, login als root mit dem Passwort von admin (solange nicht openssh komplett installiert ist). Ohne Platte gibt es aber auch kein ssh, bleibt somit nur busybox login.

Gruß Götz

PS: wir sollten das vom eigentlichen topic trennen, habe aber keine Rechte dazu.
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.015
Punkte für Reaktionen
271
Punkte
393
naja, irgendwie muß man das ja in die originalen busybox-sourcen einpflegen, und das scheint so der Standard zu sein. Wenn ich eigenes Zeug rein haben will definiere ich eine Konstante und passe die Quellen je nach dem ob gesetzt oder nicht an. So bleibt der Originalcode erhalten.

Gruß Götz
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Habe leider auch keine Rechte dazu. Sollen wir einfach weitermachen? ;-)
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.015
Punkte für Reaktionen
271
Punkte
393
Sollen wir einfach weitermachen?
klaro, der Wächter über die Erlangung der Weltherrschaft (TS) wird das schon regeln, ... duck und ganz schnell wegrenn ...
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat