Technologieaustausch

Erstellen Sie mit Docker eine Schwachstellenumgebung und schreiben Sie mit SSRF Redis die öffentlichen Schlüssel von Centos und Ubuntu, um eine passwortfreie Anmeldung zu erreichen.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Experimentelle Umgebung

Kali: Erstellen Sie eine Docker-Containerumgebung in Kali. Hier verwende ich hauptsächlich die erste;

Als Datenbank kann Redis Daten in den Speicher schreiben. Wir verwenden SSRF-Anfragen, um dem Server das Schreiben seines eigenen öffentlichen Schlüssels zu ermöglichen, um mit der passwortfreien Anmeldung zu experimentieren.

2. Experimenteller Prozess

Vorläufige Vorbereitung und Prüfung

Redis speichert Daten in Form von Schlüsselwerten. Hier verwende ich die mit Docker erstellte Centos-Umgebung.

Verwenden Sie den folgenden Befehl, um den Centos-Container aufzurufen.

docker exex -it 容器的编号 /bin/bash

Da Centos bereits über ein Skript zum Ausführen von Redis-Server verfügt, müssen wir nur Redis-Cli im Container aktivieren.

Testen Sie, ob es normal geschrieben werden kann. Wie in der Abbildung gezeigt, kann der geschriebene Inhalt oder das Verzeichnis geändert werden.

Der Dateiname kann auch geändert werden, sodass wir einen öffentlichen Schlüssel erstellen und ihn auf den Zielserver schreiben können, um eine passwortfreie Anmeldung zu erreichen;

Speichern Sie es nach der Änderung wie im Bild gezeigt. Das Schreiben ist erfolgreich!

Probleme, die auftreten und gelöst werden

Wenn es eine Situation gibt, in der der Server nicht verbunden werden kann, können wir ./start.sh verwenden, um dieses Skript auszuführen;

Kurze Einführung in die SSRF und Beginn des Experiments

Fordern Sie Anfragen über den Server, verwenden Sie das Gopher-Protokoll oder Time dict, um Redis anzufordern, und schreiben Sie Dateien.

Gopher-Generierungsskript

Generierte Nutzlast

Wir können also eine Anfrage stellen, den oben genannten Inhalt einfügen und auf „Abrufen“ klicken

Es sind Probleme aufgetreten

Als ich Fetch zum ersten Mal durchführte, stellte ich fest, dass die Datei nicht existierte. Dies lag daran, dass in der Centos-Umgebung kein eigener öffentlicher Schlüssel generiert wurde, sodass das Schreiben nicht möglich war Geben Sie den öffentlichen Schlüssel im Voraus in Centos ein.

Ergebnis

Es ist ersichtlich, dass der öffentliche Schlüssel erfolgreich auf den Zielserver geschrieben wurde.

Dann können Sie sich über ssh ohne Passwort anmelden. Es ist ersichtlich, dass die Anmeldung erfolgreich war!

Es sind Probleme aufgetreten

Es gibt einige Probleme in der Docker-Datei der Umgebung, die verhindern, dass Port 22 im Docker-Image gestartet wird. Daher wird die Datei geändert und /usr/sbin/sshd ausgeführt, um sshd zu starten.

Wenn beim Herunterladen der oben genannte Fehler auftritt, können wir die Datei einfach initialisieren, wie in der Abbildung unten gezeigt.

3. Zusammenfassung

Die Schritte für Centos und Ubuntu sind nahezu identisch, außer dass aufgrund des Schutzmechanismus von Redis die folgenden Fehler auftreten, die dazu führen, dass einige Attribute nicht geändert werden können. Die Lösung besteht darin, den geschützten Modus zu deaktivieren und Folgendes zu verwenden Befehl;

config set protected-mode no

Aufgrund der Einschränkungen der Redis-Version ist die Sicherheit von 7.2.5 zu hoch, was dazu führt, dass die passwortfreie SSH-Anmeldung fehlschlägt. Deshalb habe ich sie hierher gezogen.

Version 5.0.5

Verwenden Sie dann denselben Vorgang, um eine passwortfreie Anmeldung zu erreichen.