Führen Sie eine Binärdatei von root ohne sudo aus

12

Ich hatte eine Frage zu einem Vorstellungsgespräch:

Wie können Sie das Programm mit dem Benutzer user1ohne sudoBerechtigungen und ohne Zugriff auf das rootKonto ausführen (ausführen) :

$ whoami
user1
$ ls -l ~/binary_program
-rw-r--r-- 1 root root 126160 Jan 17 18:57 /home/user1/binary_program
inivanoff1
quelle

Antworten:

17

Da Sie die Erlaubnis gelesen haben:

$ cp ~/binary_program my_binary
$ chmod +x my_binary
$ ./my_binary

Natürlich werden Ihnen dadurch nicht automatisch eskalierte Rechte gewährt. Sie würden diese Binärdatei weiterhin als regulärer Benutzer ausführen.

Joseph R.
quelle
4
@ user2555595 Ich fürchte, du liegst falsch. Entfernen Sie das Ausführungsbit für eine Datei, deren Eigentümer Sie sind, und führen Sie es aus. Sogar root wird die Berechtigung "verweigert", wenn eine Datei ohne gesetztes Ausführungsbit ausgeführt wird.
Joseph R.
Sie haben Recht, danke für die Informationen
user2555595
5
@ user2555595 Dies gilt nur für Skripte , nicht für Binärdateien. Genauer gesagt nur bashoder POSIX-Shell-Skripte, wenn bashals Interpreter aufgerufen wird.
Thomas Nyman
Vielen Dank für Ihre Informationen, Leute! Einen schönen Tag noch!
inivanoff1
2
@ inivanoff1 Bitte vergessen Sie nicht, eine der Antworten mit "Akzeptiert" zu markieren, damit die Leute wissen, dass diese Frage gelöst ist.
Joseph R.
20

Sie können den Linux Dynamic Linker / Loader direkt verwenden, um ELF-Programmdateien auszuführen, für die Sie Leserechte haben, aber keine Rechte:

$ /lib/ld-linux.so.* /home/user1/binary_program

Wenn eine ausführbare ELF-Datei normalerweise ausgeführt wird, wird der dynamische Linker verwendet, der im .interpAbschnitt des Programmcodes gespeichert ist. Gründe für das direkte Aufrufen des dynamischen Linkers (außerhalb von Vorstellungsgesprächen) sind die Übergabe von Befehlszeilenoptionen zur Änderung seines Verhaltens.

Beachten Sie, dass die tatsächliche Position des dynamischen Linkers stark von der Umgebung abhängen kann, zum Beispiel in 64-Bit-Ubuntu, in dem sich der Linker befindet /lib64/ld-linux-x86-64.so.2.

Thomas Nyman
quelle