Die Suche nach dem Login

Status
Für weitere Antworten geschlossen.

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Ich lese schon den ganzen Abend gespannt mit. Rechte habe ich, wo wollt ihr den Thread hin haben und wie soll er heissen? :D

Gruß
Dude
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Okay machen wir weiter. Ich spreche hier ganz theoretisch: Diese Dateien liegen im Flash. Irgendwie muss man die doch manipulieren können. Wenn alle MY_ABC_HERE aus dem Code draussen sind, kommt dieser Code
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
in das else rein und damit wird der Login Name 1:1 übergeben auch wenn du UID 0 bist resp dich als User mit UID 0 anmelden willst. Damit wäre dann der Username root erhalten.
Eine andere Möglichkeit als alle MY_ABC_HERE zu killen wäre es "einfach" im if
Code:
r = getspnam_r((0 == pw->pw_uid)? pw->pw_name : pw->pw_name, &spw, buffer, sizeof(buffer), &result);
hinzubekommen
Gruss

tobi
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@dude
Walte deines Amtes :)
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.165
Punkte für Reaktionen
414
Punkte
393
Tobi, das ist Sourcecode, der landet nicht im Flash. Ich hab absolut keinen Plan, ob der Compiler bei Definition der Konstanten den kompletten else Zweig verwirft, wahrscheinlich ja, wozu auch behalten, ich definiere was gemacht werden soll.

@Dude
weiß auch nicht so genau, Station Modding Konfigurationsänderungen oder Sonstiges vielleicht.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@goetz
heisst das dieses File welches diesen Code enthält kann man niemals nimmer manipulieren?
Weil folgendes müsste es dir erlauben dich als root mit synopass anzumelden :)
Code:
#ifdef MY_ABC_HERE              
 r = getspnam_r((0 == pw->pw_uid)? pw->pw_name : pw->pw_name, &spw, buffer, sizeof(buffer), &result);   
  #endif
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.165
Punkte für Reaktionen
414
Punkte
393
heisst das dieses File welches diesen Code enthält kann man niemals nimmer manipulieren?
leider ja, solange man nicht eine aktuelle komplette buildroot für die Firmware hat und sich seine eigene Firmware backt. Irgendwo ist da noch was versteckt.

Gruß Götz

@Dude: herzlichen Dank

PS: icke tu mir jetzt pennen legen :)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Oder noch kürzer ;-)
Code:
#ifdef MY_ABC_HERE              
 r = getspnam_r(pw->pw_name, &spw, buffer, sizeof(buffer), &result);   
#endif
Ich dann auch mal pennen :)
 

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Also dieses my_abc_here nutzt Synonolgy in jedem Source file um ihre Änderungen zu aktivieren. Wie goetz schon sagte, um den Orig. Source nicht zu verändern sondern zu erweitern. Das wird vorm kompilieren gesetzt und aktiviert damit diese modifikikationen. Ein für alle mal. Es sei denn man kompliliert neu - ohne dieses Flag gesetzt zu haben.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@dude
aber würdest du mir zustimmen dass man sich wegen dem Umschreiber auf "admin" bei UID 0 nicht als root mit synopass, dem eigentlichen PW von root, anmelden kann?
Code:
#ifdef MY_ABC_HERE              
r = getspnam_r((0 == pw->pw_uid)? "admin" : pw->pw_name, &spw, buffer, sizeof(buffer), &result);
...
#endif
obiges sagt doch: Wenn uid 0 dann übergib als 1. Argument den admin an getspnam, sonst übergib den Namen 1:1. Also ist das der Grund für den Umschreiber.

gruss

tobi
 

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Klingt auch für mich logisch. Aber 100% bestätigen kann ich dat nich. Bin nicht so der C Hacker. ;)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
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.
@goetz
du weisst was v.a. der letzte Teil heissen könnte? Für mich heisst das, dass Syno wahrscheinlich einen Weg hat diesen Code ins else laufen zu lassen. Wenn kein System installiert ist, scheint das admin PW ja leer zu sein. Durch das mapping landest du als root aber bei einem leeren PW und ich meinte es sei der heilige Gral von Linux/Unix dass ein root Login ohne PW ned möglich ist. afaik unterbindet das das System immer. Wenn also Syno ohne installiertes System per telnet auf die Box kommt, kann es ja eigentlich nur heissen, dass sie ins else reinkommen. Kann denn ev Syno z.B. ein bestimmtes Paket an die DS senden, welches den obigen Code dazu bringt ins else zu kommen? Muss doch eigentlich fast so sein, sonst käme Syno niemals als root rein wenn beim Installieren des Systems was ned klappt. Ganz blöd gefragt: Haben wir hier ein Backdoor? ;-)


Gruss

tobi

p.s. dieses Thema finde ich echt hochinteressant :)
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Defines sind endgültig. Die jeweils anderen Zweige gibt es im Binary nicht, also kann man auch nie in den els-Zweig kommen.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Defines sind endgültig. Die jeweils anderen Zweige gibt es im Binary nicht, also kann man auch nie in den els-Zweig kommen.
Okay, dann kann man diesen Weg wohl vergessen. Liegt denn dieses Binary das diese "Umschreibung" macht im Flash oder in der Firmware auf der Platte? Es muss ja eigentlich im Flash liegen, weil goetz sagt, dass ein root Login mit synopass bei einem System ohne Platte ja eben nicht geht. Kann es auch nie solange diese Codezeile aktiv ist.

Gruss

tobi
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
#ifdef grad_mal_einen_Tag_weg
und<-schon(gehts, hier, aber, ab, wie, die, Post);
#else
dabei = 1;
ist = 2;
Sommer =3;
printf("%s %s %s\n", &dabei, &ist, &Sommer);
#endif

(1=1)?'Itari':''
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.165
Punkte für Reaktionen
414
Punkte
393
Hallo,
der Code ist sowohl im Flash als auch auf der Platte, entweder direkt in der busybox oder in einer von ihr verwendeten Bibliotheken.

So, Syno hat tatsächlich eine "Backdoor" eingebaut, Vorraussetzung: telnet und admin ohne Passwort. Finde ich ersteinmal nicht so schlimm, Port23 gehört nicht weitergeleitet und admin sollte schon ein starkes Passwort haben. Das Passwort für heute:
Rich (BBCode):
DS-209plusII /volume1/public/c_test>./a.out
606-1602

DS-209plusII /volume1/public/c_test>

Gruß Götz
 
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