normaler Benutzer ohne Berechtigungen, der Umgebungsvariablen an / bin / login übergibt

376
AAAAAAAA

Angenommen, in FreeBSD (oder Linux vielleicht) gibt es einen nicht privilegierten normalen Benutzer (Nicht-Superuser). Und es gibt ein Telnet-Standalone (ich weiß, dass Telnet normalerweise unter inetd ausgeführt wird) unter diesem Benutzer ausgeführt wird. (Angenommen, es wurde kein ursprüngliches, im Besitz des Eigentümers befindliches Telnet ausgeführt.) Dieser Telnet-Server ist so programmiert, dass er die Umgebungsvariablen ld_ * nicht überprüft, bevor er an / bin / login übergeben wird, das im Besitz von root ist und Setuid eingerichtet hat.

Die Frage wäre: 1. Funktioniert dieses Telnet? 2. Wenn es funktioniert, kann es sogar Umgebungsvariablen an / bin / login übergeben?

0

1 Antwort auf die Frage

0
grawity

Angenommen, in FreeBSD (oder Linux vielleicht) gibt es einen nicht privilegierten Superuser.

"Nicht privilegierter Superuser" ist ein Widerspruch. Das Wort "Superuser" selbst bedeutet, dass ein Benutzer alle Berechtigungen hat.

Dieser Telnet-Server ist so programmiert, dass er die Umgebungsvariablen ld_ * nicht überprüft

Ich bin nicht sicher, ob dies relevant ist. Der Telnet-Server hat keine besonderen Berechtigungen, daher ist das Entfernen von LD_*Variablen nicht sehr nützlich.

  1. Funktioniert das Telnet? 2. Wenn es funktioniert, kann es sogar Umgebungsvariablen an / bin / login übergeben?

Es wird teilweise funktionieren, aber es ist wahrscheinlich nicht möglich, an den Standard-Telnet-Port zu binden, da das CAP_NET_BIND_SERVICE-Privileg fehlt.

Ja, es ist in der Lage, Umgebungsvariablen zu übergeben login, genau wie jeder andere Prozess. Zumindest unter Linux verwirft der Loader (ld-linux.so) jedoch alle LD_*Variablen, bevor er ein setuid-Programm ausführt, so dass ein setuid- logindavon nicht betroffen ist.