der TXT 4.0 ist ja bereits seit einiger Zeit draußen und bietet im Vergleich zum alten TXT doch schon einige Vorteile. Leider sind standardmäßig nur Python 3.5.6 und einige andere "veraltete" Bibliotheken installiert, was mich persönlich etwas stört.
Daher habe ich mir die Frage gestellt: wie bekommt man auf dem TXT 4.0 Root-Zugang?
Der alte TXT hatte die komfortable Lösung mit einem Shell-Skript, das einen neuen Schlüssel generiert und diesen dann auf dem Display anzeigt. Ein solches Skript konnte ich bisher auf dem TXT 4.0 jedoch nicht entdecken.
Also eine SSH-Verbindung aufgebaut und etwas rumprobiert, ob sich eine Backdoor finden lässt. Und siehe da:
Durch "sudo -l" bekommt man heraus, dass unter anderem Node-RED ohne Passwort mit root-Rechten läuft. Der Befehl "sudo /usr/bin/node-red" startet den Dienst, wobei er bereits auf Port 1880 läuft und somit eine Fehlermeldung produziert. Jedoch können wir uns später Node-RED zu Nutzen machen.
Jetzt zur "Anleitung":
Warnung: Die nachfolgenden Schritte können theoretisch das Betriebssystem des TXT unbrauchbar machen, je nach dem wie viel Ihr dabei falsch macht. Daher richtet sich diese Anleitung eher an Leute mit Erfahrung in Sachen Linux-Shell. Ich bin für keine Schäden an Hard- oder Software verantwortlich!
SSH-Verbindung herstellen
Dazu einfach den TXT per USB an den Computer anschließen und mit einem SSH-Client verbinden (PuTTY für Windows oder Standard Terminal auf macOS/Linux). Ich verwende in diesem Fall selbst eine Linux-Shell, je nach dem können Tastenkombinationen bei euch variieren. Die Zugangsdaten für den Standardbenutzer sind:
Username: ft
Passwort: fischertechnik
In der SSH-Shell gebt ihr nun folgende Befehle ein:
Code: Alles auswählen
pwd
Code: Alles auswählen
cat >> root.c
Code: Alles auswählen
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
setuid(0);
printf("%d", geteuid());
system("/bin/bash");
return 0;
}
Code: Alles auswählen
gcc root.c -o root
Dann öffnet ihr auf eurem PC, welcher mit dem TXT verbunden ist, den Browser und gebt die folgende URL ein: http://192.168.7.2:1880/
Jetzt sollte sich Node-RED öffnen, über die wir die Binary für den ft-Benutzer ausführbar machen können. Theoretisch würde die Weboberfläche von Node-RED alleine als Zugriff zur Shell mit root-Rechten ausreichen, jedoch ist das auf Dauer nicht wirklich komfortabel. In die Oberfläche könnt ihr den blauen Block "Inject" und den roten Block "exec" einfügen und verbinden.
Im blauen Block müsst ihr mit Doppelklick noch die Zeile "msg.payload = timestamp" mit einem Klick auf das X rechts daneben löschen, ansonsten werden die anschließenden Befehle nicht funktionieren.
Im roten "exec" Block fügt ihr bei "Befehl" folgendes ein:
Code: Alles auswählen
chown root:root /opt/ft/root
Code: Alles auswählen
chmod +s /opt/ft/root
(ich hoffe das Bild erscheint für euch, ansonsten findet ihr es hier: https://ibb.co/bbvx5Py)
Hier ist wieder der Pfad vom Anfang (also "/opt/ft") wichtig, da dieser hier vorne für einen absoluten Pfad angefügt werden muss.
Anschließend müsst ihr nur noch oben auf den roten Knopf "Übernahme (deploy)" drücken und dann könnt ihr die Befehle ausführen. Dazu jeweils auf das hellblaue Kästchen vor dem Inject-Block klicken und nun sollte eigentlich auch alles erledigt sein.
Jetzt könnt ihr in der SSH-Shell folgenden Befehl eingeben:
Code: Alles auswählen
./root
Das war's bereits. Mit dem Befehl "id" könnt ihr überprüfen, ob alles funktioniert hat, das Resultat sollte mit "uid=0(root)" starten. Sollte das der Fall sein, habt ihr root-Zugriff auf den TXT 4.0
Ich hoffe, dass ich euch mit dieser Anleitung weiterhelfen konnte, viel Spaß mit dem Root-Zugriff :)
Bei Rückfragen stehe ich gerne zur Verfügung.
Viele Grüße,
Matrix/Felix