Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
snapshot-demo — CVE-2022-27499 | Kitploit
Strumenti/GitHubGitHub/web-logs2/snapshot-demo
Strumenti di Crittografia/DecrittografiaAnalisi delle VulnerabilitàExploitPenetration TestingSicurezza HardwareRed Teaming
GitHubweb-logs2/snapshot-demo

snapshot-demo

CVE-2022-27499

Vedi Repository
43 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Demo di Snapshot Attack

Questa è la demo originale di Unanticipated Snapshot Attack scoperta da noi. Grazie a Intel per il Security Advisory.

Compilare la demo

Installare Intel SGX SDK e Occlum

Prima di tutto, chiunque voglia eseguire la demo deve installare Intel SGX SDK e Occlum (puoi scegliere di usare il nostro SGX SDK modificato). Forniamo un Dockerfile per un'installazione rapida di Occlum/SDK. L'SGX SDK modificato serve ad aiutare l'attaccante a decidere il tempismo.

Puoi anche installare Occlum sulla macchina host. (Fai riferimento a https://github.com/occlum/occlum per maggiori dettagli sull'installazione.) In entrambi i casi, dovrai prima installare Intel SGX driver sul tuo host, oppure utilizzare un driver SGX integrato nel kernel.

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

Dopo aver costruito l'immagine, esegui

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

Qui $Redis_Server_Port è il numero di porta dell'host che desideri esporre per il server Redis all'interno del container, mentre $Host_SGX_Driver_Path è il percorso del dispositivo del driver SGX installato menzionato sopra.

Compilare il programma target

Il programma target si trova nella cartella bash_redis.

Il programma vittima esegue uno script bash shell (occlum_bash.sh). Prima recupera una password provisionata per generare un file di configurazione Redis personalizzato, con la voce "requirepass" compilata. Poi avvia un server Redis secondo il file di configurazione personalizzato.

Per compilare il programma di generazione della configurazione, esegui make. Per compilare il server Redis, esegui i seguenti comandi.

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

Eseguire la demo

Assicurarsi che il programma Redis vittima funzioni

Apri un terminale per la vittima. Esegui run_redis.sh, verificando che il server Redis funzioni correttamente.

Usa il comando redis-cli -h $Redis_Server_IP -p $Redis_Server_Port -a admin123456 per verificare se la password (admin123456) è stata impostata nel file di configurazione.

Premi ctrl + C per terminare il server Redis.

Acquisizione dell'istantanea (snapshot)

Prepara 2 terminali, uno per la vittima e uno per l'attaccante. Puoi aprire solo un altro terminale (per l'attaccante) se ne è già stato aperto uno per la vittima.

Esegui di nuovo run_redis.sh nel terminale della vittima. Questo script avvierà il programma target.

L'attaccante deve acquisire un'istantanea (usando ./take_snapshot_step-1.sh) quando può determinare che l'istantanea stia scrivendo (flushing). Nella demo, l'attaccante riceve un avviso chiaro dal terminale della vittima come segue.

root@kitploit:~
...
Esegui ./take_snapshot_step-1.sh ORA!
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:
...

Avvia lo script ./take_snapshot_step-1.sh sul terminale dell'attaccante.

Se hai compilato Occlum con il nostro SGX SDK modificato, vedrai più messaggi di suggerimento. Questo perché abbiamo modificato la parte non trusted di Intel SGX SDK, stampando messaggi di supporto per facilitare l'attaccante a decidere il tempismo. Per comodità dell'attaccante, abbiamo riservato slot temporali per permettere all'attaccante di eseguire ./take_snapshot_step-1.sh. In effetti, l'attaccante con privilegi di root sull'host potrebbe intercettare l'esecuzione dell'enclave e catturare qualsiasi istantanea modificando la parte non trusted di SGX SDK.

Una volta che il server Redis è in esecuzione, esegui ./take_snapshot_step-2.sh per completare la raccolta dell'istantanea.

Replay dell'enclave

L'attaccante esegue replay_redis.sh per riprodurre l'enclave utilizzando l'istantanea raccolta. Qualsiasi client può accedere al server Redis senza autenticazione.

Comando esempio per il client Redis:

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

Se viene visualizzato un messaggio (error) NOAUTH Authentication required., significa che è necessaria una password per accedere al server Redis. Digita auth $Your_Password per superare l'autenticazione. In questa demo usa auth admin123456.

Se viene visualizzato un messaggio (empty array), significa che non è necessaria una password per accedere al server Redis.

Nota

A volte la demo fallisce a causa del controllo d'integrità di Occlum. Probabilmente vedrai il seguente messaggio.

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)

Basta eseguire di nuovo la demo (dalla fase di registrazione), e l'errore sparirà definitivamente.

GL & HF!

Scarica lo strumento