<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github Repositories einreichen.
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
Von [den Dokumenten](https://redis.io/topics/introduction): Redis ist ein Open-Source (BSD-lizenziertes), im Arbeitsspeicher befindliches **Datenstrukturspeichersystem**, das als **Datenbank**, Cache und Nachrichtenbroker verwendet wird.
Standardmäßig verwendet Redis ein textbasiertes Protokoll, aber Sie müssen bedenken, dass es auch **ssl/tls** implementieren kann. Erfahren Sie hier, wie Sie [Redis mit ssl/tls ausführen](https://fossies.org/linux/redis/TLS.md).
Redis ist ein **textbasiertes Protokoll**, Sie können einfach **den Befehl über einen Socket senden** und die zurückgegebenen Werte werden lesbar sein. Denken Sie auch daran, dass Redis unter Verwendung von **SSL/TLS** ausgeführt werden kann (aber das ist sehr seltsam).
Der **erste Befehl**, den Sie ausprobieren könnten, ist **`info`**. Es **könnte eine Ausgabe mit Informationen** über die Redis-Instanz **zurückgeben oder etwas Ähnliches** wie das Folgende zurückgeben:
**Standardmäßig** kann auf Redis **ohne Anmeldeinformationen zugegriffen werden**. Es kann jedoch **konfiguriert werden**, um **nur ein Passwort oder Benutzername + Passwort** zu unterstützen.\
Es ist möglich, ein Passwort in der Datei _**redis.conf**_ mit dem Parameter `requirepass`**festzulegen oder vorübergehend** bis zum Neustart des Dienstes, indem Sie sich damit verbinden und ausführen: `config set requirepass p@ss$12E45`.\
Beachten Sie auch, dass **extern nicht festgestellt werden kann**, ob Redis nur mit einem Passwort oder mit Benutzername + Passwort konfiguriert wurde.
In Fällen wie diesem müssen Sie **gültige Anmeldeinformationen finden**, um mit Redis interagieren zu können. Sie könnten versuchen, es [**brute-force**](../generic-methodologies-and-resources/brute-force.md#redis) zu knacken.\
**Wenn Sie gültige Anmeldeinformationen gefunden haben, müssen Sie die Sitzung authentifizieren**, nachdem Sie die Verbindung mit dem Befehl hergestellt haben:
Wenn der Redis-Server **anonyme Verbindungen** zulässt oder wenn Sie gültige Anmeldeinformationen erhalten haben, können Sie den Aufzählungsprozess für den Dienst mit den folgenden **Befehlen** initiieren:
Beachten Sie, dass die **Redis-Befehle einer Instanz umbenannt** oder in der _redis.conf_ Datei entfernt werden können. Zum Beispiel wird mit dieser Zeile der Befehl FLUSHDB entfernt:
Mehr über die sichere Konfiguration eines Redis-Dienstes finden Sie hier: [https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04](https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04)
Sie können auch **Echtzeitüberwachung der ausgeführten Redis-Befehle** mit dem Befehl **`monitor`** durchführen oder die **25 langsamsten Abfragen** mit **`slowlog get 25`** abrufen.
Weitere interessante Informationen zu weiteren Redis-Befehlen finden Sie hier: [https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)
In Redis sind die **Datenbanken Nummern, die bei 0 beginnen**. Sie können herausfinden, ob eine davon verwendet wird, indem Sie den Befehl `info` im Abschnitt "Keyspace" ausführen:
In diesem Beispiel werden **Datenbank 0 und 1** verwendet. **Datenbank 0 enthält 4 Schlüssel und Datenbank 1 enthält 1**. Standardmäßig verwendet Redis Datenbank 0. Um beispielsweise Datenbank 1 zu sichern, müssen Sie Folgendes tun:
Im Falle des folgenden Fehlers `-WRONGTYPE Operation against a key holding the wrong kind of value` beim Ausführen von `GET <KEY>` liegt es daran, dass der Schlüssel möglicherweise etwas anderes als ein String oder eine Ganzzahl ist und einen speziellen Operator erfordert, um ihn anzuzeigen.
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server) kann automatisch eine interaktive Shell oder eine Reverse-Shell in Redis (<=5.0.5) erhalten.
Info von [**hier**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html). Du musst den **Pfad** des **Webseitenordners** kennen:
Wenn die Webshell-Zugriffsausnahme vorliegt, können Sie die Datenbank nach dem Backup leeren und es erneut versuchen. Denken Sie daran, die Datenbank wiederherzustellen.
Wie im vorherigen Abschnitt könnten Sie auch eine HTML-Vorlagendatei überschreiben, die von einem Vorlagen-Engine interpretiert wird, um eine Shell zu erhalten.
Zum Beispiel, folgend [**diesem Bericht**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/), können Sie sehen, dass der Angreifer eine **Rev-Shell in einem HTML** injiziert hat, das vom **Nunjucks-Vorlagen-Engine** interpretiert wird:
Beachten Sie, dass **mehrere Template-Engines den Cache** der Templates im **Speicher** speichern, sodass der neue, überschriebene Inhalt **nicht ausgeführt wird**. In solchen Fällen hat der Entwickler entweder die automatische Neuladung aktiviert oder Sie müssen einen DoS-Angriff auf den Dienst durchführen (und erwarten, dass er automatisch neu gestartet wird).
Bitte beachten Sie, dass das Ergebnis von **`config get dir`** nach anderen manuell ausgeführten Exploit-Befehlen geändert werden kann. Es wird empfohlen, es direkt nach dem Einloggen in Redis auszuführen. In der Ausgabe von **`config get dir`** finden Sie das **Home-Verzeichnis** des **Redis-Benutzers** (normalerweise _/var/lib/redis_ oder _/home/redis/.ssh_), und wenn Sie dies wissen, wissen Sie, wo Sie die Datei `authenticated_users` schreiben können, um über ssh **mit dem Benutzer redis** darauf zuzugreifen. Wenn Sie das Home-Verzeichnis eines anderen gültigen Benutzers kennen, für das Sie Schreibberechtigungen haben, können Sie es auch missbrauchen:
1. Befolgen Sie die Anweisungen von [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand), um **ein Redis-Modul zu kompilieren, um beliebige Befehle auszuführen**.
2. Laden Sie dann das kompilierte Modul **auf irgendeine Weise hoch**.
[**Hier**](https://www.agarri.fr/blog/archives/2014/09/11/trying\_to\_hack\_redis\_via\_http\_requests/index.html) können Sie sehen, dass Redis den Befehl **EVAL** verwendet, um **Lua-Code sandboxed** auszuführen. Im verlinkten Beitrag können Sie sehen, **wie man es missbraucht**, indem die **dofile**-Funktion verwendet wird, aber [anscheinend](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval) ist dies nicht mehr möglich. Wie auch immer, wenn Sie die Lua-Sandbox **umgehen können**, könnten Sie **beliebige** Befehle auf dem System **ausführen**. Außerdem können Sie aus demselben Beitrag einige **Optionen zur Verursachung von DoS** sehen.
Alle Operationen des Master-Redis werden automatisch mit dem Slave-Redis synchronisiert, was bedeutet, dass wir den anfälligen Redis als Slave-Redis betrachten können, der mit dem Master-Redis verbunden ist, den wir kontrollieren, und dann können wir Befehle in unseren eigenen Redis eingeben.
Wenn Sie **Klartextanfragen an Redis senden** können, können Sie **mit ihm kommunizieren**, da Redis die Anfrage zeilenweise liest und nur mit Fehlern auf die Zeilen antwortet, die es nicht versteht:
Daher, wenn Sie eine **SSRF-Schwachstelle** auf einer Website finden und einige **Header** (vielleicht mit einer CRLF-Schwachstelle) oder **POST-Parameter****kontrollieren** können, können Sie beliebige Befehle an Redis senden.
In **Gitlab11.4.7** wurden eine **SSRF**-Schwachstelle und eine **CRLF** entdeckt. Die **SSRF**-Schwachstelle befand sich in der **Funktionalität zum Importieren von Projekten von einer URL** beim Erstellen eines neuen Projekts und ermöglichte den Zugriff auf beliebige IPs in der Form \[0:0:0:0:0:ffff:127.0.0.1] (dies greift auf 127.0.0.1 zu), und die **CRLF**-Schwachstelle wurde einfach ausgenutzt, indem **%0D%0A**-Zeichen zur **URL** hinzugefügt wurden.
Daher war es möglich, **diese Schwachstellen zu missbrauchen, um mit der Redis-Instanz zu kommunizieren**, die die Warteschlangen von **Gitlab** verwaltet, und diese Warteschlangen zu missbrauchen, um **Codeausführung zu erlangen**. Das Payload für den Missbrauch der Redis-Warteschlange lautet:
_Aus irgendeinem Grund (wie für den Autor von_ [_https://liveoverflow.com/gitlab-11-4-7-remote-code-execution-real-world-ctf-2018/_](https://liveoverflow.com/gitlab-11-4-7-remote-code-execution-real-world-ctf-2018/)_ , wo diese Information herstammt) funktionierte die Ausnutzung mit dem `git`-Schema und nicht mit dem `http`-Schema._
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks in PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.