Root Zugriff mit dem TXT 4.0

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
matrix
Beiträge: 5
Registriert: 21 Nov 2023, 16:39

Root Zugriff mit dem TXT 4.0

Beitrag von matrix » 21 Nov 2023, 18:24

Hey zusammen,

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:
Das Ergebnis sollte wie folgt aussehen: "/opt/ft". Dieser Pfad wird später noch relevant und sollte nur in Verbindung mit den nachfolgenden Schritten geändert werden.

Code: Alles auswählen

cat >> root.c
Jetzt sollte eine leere Zeile erscheinen. In diese fügt ihr folgenden Code-Block ein:

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;
}
Jetzt noch zweimal Enter drücken und mit Strg+C den Eingabedialog verlassen, dieser Code sollte nun in der C-Datei gespeichert sein. Anschließend führt ihr folgenden Befehl aus:

Code: Alles auswählen

gcc root.c -o root
Jetzt sollte aus der C-Datei ein ausführbares Binary erstellt worden sein. Dieses alleine können wir leider noch nicht ausführen, daher müssen wir vorher noch ein paar weitere Schritte ausführen. Die SSH-Shell benötigen wir am Ende noch einmal.

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
Beide Blöcke könnt ihr mit Strg+C/Strg+V duplizieren, im zweiten Befehlsblock müsst ihr nun folgenden Befehl eintragen:

Code: Alles auswählen

chmod +s /opt/ft/root
Nun sollte das Fenster ca. so aussehen (nur anstelle des /opt/ft/exc sollte /opt/ft/root dort stehen:

Bild
(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
Nun sollte sich eine neue Zeile mit "bash-4.4#" am Anfang öffnen.
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

matrix
Beiträge: 5
Registriert: 21 Nov 2023, 16:39

Re: Root Zugriff mit dem TXT 4.0

Beitrag von matrix » 24 Nov 2023, 13:27

Nochmals Hallo zusammen,

Hier einige Korrekturen/Erweiterungen:

1. Stellt sicher, dass in den Einstellungen unter "Fernzugriff" SSH aktiviert ist.

2. Stellt bei Firmware Version >= 3.1.5 sicher, dass Node-RED in den Einstellungen unter "Services" eingeschaltet ist.

3. Falls Ihr euch per SFTP-fähiges Programm (z.B. FileZilla) auf dem TXT anmelden wollt, habt ihr natürlich keine Berechtigungen mit dem Standardbenutzer.
John-the-Ripper hat für den Root-Benutzer bereits nach 2 Sekunden das Passwort "root" ausgegeben, das bringt jedoch beim SSH-Login nichts, da der Root-Benutzer standardmäßig deaktiviert ist. Aktivieren kann man ihn folgendermaßen per SSH mit Root-Rechten:

Code: Alles auswählen

cd /etc/ssh
cp sshd_config sshd_config.bak # Backup für Notfall erstellen
vi sshd_config
Nun öffnet sich VIM und Ihr ändert die Zeile 32 ab:

Code: Alles auswählen

PermitRootLogin yes
Alternativ könnt ihr die veränderte Version hier herunterladen/kopieren: https://pastebin.com/hCXVhpfS

Anschließend drückt ihr 2x ESC und gebt anschließend ein. Dadurch wird die Datei gesichert.

Jetzt sollte der Zugang auch mit dem Login root:root freigeschaltet sein. Alternativ könnt Ihr auch mit

Code: Alles auswählen

sudo passwd root
ein eigenes Passwort mit zweifacher Bestätigung festlegen.

Viele Grüße,
Matrix/Felix

Antworten