Wie kann ich das Passwort automatisch an 'su' übergeben?

2344
noobler

Ich arbeite an einem Exploit für einen Sicherheitskurs. Das Ziel ist, eine Root-Shell in einer virtuellen Linux-Maschine zu erhalten. Bisher kann ich in / etc / passwd schreiben und das Passwort von root in eine beliebige Zeichenfolge ändern.

Jetzt möchte ich su verwenden, um die Root-Shell zu erhalten. Da mein Exploit automatisiert werden muss, kann er nicht zur Eingabe eines Kennworts aufgefordert werden, und der VM hat nicht erwartet, dass er installiert ist. Hat jemand eine Idee, wie ich das Passwort an den Befehl su übergeben kann? Oder gibt es einen besseren Weg?

2
Wenn Sie in / etc / passwd schreiben können, haben Sie sich sicherlich bereits zum Root-Benutzer befördert? Könnten Sie in diesem Fall nicht auf / bin / bash setzen und es ausführen? Paul vor 12 Jahren 1
Ich habe keine root auf der VM. Wir sollen ein gegebenes Sicherungsprogramm ausnutzen, das setuid gesetzt hat. Durch das Übergeben bösartiger Argumente kann ich den Besitzer von / etc / passwd ändern. noobler vor 12 Jahren 0
Können Sie die schädlichen Argumente des setuid-Prozesses übergeben, um eine setuid für / bin / bash auszuführen? Paul vor 12 Jahren 0
@noobler Hast du die Quelle für das Sicherungsprogramm? Wenn nicht, müssen Sie einen Pufferüberlauf durch Ausprobieren ermitteln. `su` öffnet / dev / tty, um das Passwort zu lesen. Sie müssen einen Weg finden, "su" davon zu überzeugen, dass Sie Ihr eigenes / dev / tty verwenden. ott-- vor 11 Jahren 0

2 Antworten auf die Frage

0
J. M. Becker

Die beste Möglichkeit, diese Art der Eingabe zu automatisieren, ist die Verwendung von expectoder besser pexpect. Die meisten Server sind mit Python ausgestattet, zumindest mit einer modernen Distribution.

Sie sagten zuerst, dass Ihre VM nicht expectinstalliert ist? Ich bin nicht sicher, warum das wichtig ist. Gibt es einen Grund, warum Sie unter Ihrem lokalen Konto nichts installieren oder ausführen können?

Nächste Überlegung, warum müssen Sie überhaupt passwd??? Sie können ein Kennwort auch ändern, indem Sie den in angegebenen Hash ersetzen /etc/shadow. Sie müssten natürlich zuerst einen Hash korrekt generieren, aber solange Sie einen unterstützten Hash verwenden, sollte er wie erwartet funktionieren. Nun, wie Sie eine solche Aktion schreiben würden, ist eine Übung, die Sie trainieren müssen.

Ich möchte auch erwähnen, passwdliest nicht die Eingabe von STDIN. Wenn ich mich nicht irre, liest es aus einem tty. Also keine ausgefallene Kombination von nur echound sleepwürde funktionieren. Die Verwendung eines HEREDOC ist zwar möglich, setzt jedoch voraus, dass das System ausreichend reaktionsfähig ist. Sie können es unter Umständen in zwei sleepTeile aufteilen. Ich habe das gerade getestet, es funktionierte auf meiner Ubuntu-Workstation.

#!/bin/bash passwd root <<'EOF' newpassword newpassword EOF 
-2
CamelBlues

Ihr Exploit könnte auch in die Gruppendatei schreiben und den aktuellen Benutzer in die Gruppe "Wheel" (oder welche Gruppe kann sudoBefehle ohne Kennwort ausführen können) festlegen. Dann können Sie sudo su root(oder jeder andere Benutzer) ein Kennwort eingeben.

Beim Laufen visudosollten Sie eine Anleitung zur Einrichtung der Radgruppe auf Ihrer Maschine erhalten.

Um dies zu klären: Sobald ein Benutzer Teil der Radgruppe ist, kann er Sudo-Befehle ausführen, ohne dass ein Kennwort erforderlich ist.

Sudo ist nicht auf der VM installiert .. noobler vor 12 Jahren 0