Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
snapshot-demo — CVE-2022-27499 | Kitploit
Tools/GitHubGitHub/web-logs2/snapshot-demo
Encryption/Decryption ToolsVulnerability AnalysisExploitationPenetration TestingHardware SecurityRed Teaming
GitHubweb-logs2/snapshot-demo

snapshot-demo

CVE-2022-27499

Repository anzeigen
vor 3 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Snapshot-Angriffsdemo

Dies ist die originale Demo des von uns entdeckten Unanticipated Snapshot-Angriffs. Danke an Intel für die Sicherheitswarnung.

Die Demo erstellen

Intel SGX SDK und Occlum installieren

Zuallererst muss jeder, der die Demo ausführen möchte, Intel SGX SDK und Occlum installieren (Sie können wählen, unser modifiziertes SGX SDK zu verwenden). Wir stellen ein Dockerfile für eine schnelle Occlum/SDK-Installation bereit. Das modifizierte SGX SDK hilft dem Angreifer, den Zeitpunkt zu bestimmen.

Sie können Occlum auch auf dem Host-Rechner installieren. (Weitere Installationsdetails finden Sie unter https://github.com/occlum/occlum.) In beiden Fällen müssen Sie zuerst den Intel SGX-Treiber auf Ihrem Host installieren oder einen SGX-Treiber im Kernel verwenden.

root@kitploit:~
(sudo) docker build -t $Your_Image_Name .

Nachdem das Image erstellt wurde, führen Sie Folgendes aus:

root@kitploit:~
(sudo) docker run -it --privileged -p $Redis_Server_Port:6379 -v $Host_SGX_Driver_Path:/dev/sgx --name "snapshot-demo" $Your_Image_Name

Hier ist $Redis_Server_Port die Host-Portnummer, die Sie für den Redis-Server im Container freigeben möchten, während $Host_SGX_Driver_Path der oben genannte Gerätepfad Ihres installierten SGX-Treibers ist.

Das Zielprogramm erstellen

Das Zielprogramm befindet sich im Ordner bash_redis.

Das Opferprogramm führt ein Bash-Shell-Skript (occlum_bash.sh) aus. Es ruft zunächst ein bereitgestelltes Passwort ab, um eine benutzerdefinierte Redis-Konfigurationsdatei zu generieren, wobei der Eintrag "requirepass" ausgefüllt wird. Dann startet es einen Redis-Server gemäß der benutzerdefinierten Konfigurationsdatei.

Um das Konfigurationsgenerierungsprogramm zu erstellen, führen Sie make aus. Um den Redis-Server zu erstellen, führen Sie die folgenden Befehle aus.

root@kitploit:~
cd bash_redis
./download_and_build_redis_glibc.sh

Die Demo ausführen

Sicherstellen, dass das Opfer-Redis-Programm funktioniert

Öffnen Sie ein Terminal für das Opfer. Führen Sie run_redis.sh aus und prüfen Sie, ob der Redis-Server einwandfrei funktioniert.

Verwenden Sie den Befehl redis-cli -h $Redis_Server_IP -p $Redis_Server_Port -a admin123456, um zu überprüfen, ob das Passwort (admin123456) in der Konfigurationsdatei gesetzt wurde.

Drücken Sie Strg + C, um den Redis-Server zu beenden.

Snapshot aufnehmen

Bereiten Sie zwei Terminals vor, eines für das Opfer und eines für den Angreifer. Sie können nur ein weiteres Terminal (für den Angreifer) öffnen, wenn bereits ein Terminal für das Opfer geöffnet wurde.

Führen Sie run_redis.sh auf dem Opferterminal erneut aus. Dieses Skript startet das Zielprogramm.

Der Angreifer muss einen Snapshot (mit ./take_snapshot_step-1.sh) erstellen, wenn er feststellen kann, dass der Snapshot geschrieben wird. In der Demo erhält der Angreifer eine klare Benachrichtigung vom Opferterminal wie folgt.

root@kitploit:~
...
Run ./take_snapshot_step-1.sh NOW!
line 4522: # passwords, then flags, or key patterns. However note that the additive
line 4523: # and subtractive rules will CHANGE MEANING depending on the ordering.
line 4524: # For instance see the following example:
...

Starten Sie das Skript ./take_snapshot_step-1.sh auf dem Terminal des Angreifers.

Wenn Sie Occlum mit unserem modifizierten SGX SDK erstellen, sehen Sie weitere Hinweise. Dies liegt daran, dass wir den nicht vertrauenswürdigen Teil des Intel SGX SDK modifiziert haben, um Hilfsnachrichten auszugeben, die dem Angreifer die Entscheidung über den Zeitpunkt erleichtern. Zur Bequemlichkeit des Angreifers haben wir Zeitfenster reserviert, damit der Angreifer ./take_snapshot_step-1.sh ausführen kann. Tatsächlich könnte ein Angreifer mit Host-Root-Rechten die Enclave-Ausführung abfangen und beliebige Snapshots erfassen, indem er den nicht vertrauenswürdigen Teil des SGX SDK modifiziert.

Sobald der Redis-Server läuft, führen Sie ./take_snapshot_step-2.sh aus, um die Snapshot-Erfassung abzuschließen.

Enclave-Wiedergabe

Der Angreifer führt replay_redis.sh aus, um die Enclave mit dem gesammelten Snapshot wiederzugeben. Jeder Client kann sich ohne Authentifizierung beim Redis-Server anmelden.

Beispielbefehl für Redis-Client:

root@kitploit:~
redis-cli -h $Redis_Server_IP -p $Redis_Server_Port
keys *

Wenn eine Meldung (error) NOAUTH Authentication required. erscheint, bedeutet dies, dass Sie ein Passwort benötigen, um auf den Redis-Server zuzugreifen. Geben Sie auth $Your_Password ein, um die Authentifizierung zu bestehen. Verwenden Sie in dieser Demo auth admin123456.

Wenn eine Meldung (empty array) erscheint, bedeutet dies, dass Sie kein Passwort benötigen, um auf den Redis-Server zuzugreifen.

Hinweis

Manchmal schlägt die Demo aufgrund der Integritätsprüfung von Occlum fehl. Sie sehen wahrscheinlich die folgende Meldung.

root@kitploit:~
Replaying ...
~/snapshot-demo/bash_redis_replay/occlum_instance ~/snapshot-demo/bash_redis_replay
In: writing meta-data in write_all_changes_to_disk
In: writing meta-data in write_all_changes_to_disk
Error: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }
[ERROR] occlum-pal: The init process exit with code: 1 (line 59, file src/pal_api.c)
[ERROR] occlum-pal: Failed to run the init process: EINVAL (line 129, file src/pal_api.c)

Führen Sie die Demo einfach erneut aus (ab der Aufzeichnungsphase), dann wird der Fehler endgültig verschwinden.

Viel Glück und viel Spaß!

Tool herunterladen