11211 - Pentesting Memcache
Informazioni sul protocollo
Da wikipedia:
Memcached (pronuncia: mem-cashed, mem-cash-dee) è un sistema di memoria cache distribuita a uso generale. Spesso viene utilizzato per velocizzare siti web dinamici basati su database, memorizzando dati e oggetti in RAM per ridurre il numero di volte in cui è necessario leggere una fonte di dati esterna (come un database o un'API).
Anche se Memcached supporta SASL, la maggior parte delle istanze è esposta senza autenticazione.
Porta predefinita: 11211
Enumerazione
Manuale
Per estrarre tutte le informazioni salvate all'interno di un'istanza di memcache, è necessario:
Trovare le slab con elementi attivi
Ottenere i nomi delle chiavi delle slab rilevate in precedenza
Estrarre i dati salvati ottenendo i nomi delle chiavi
Ricorda che questo servizio è solo una cache, quindi i dati possono apparire e scomparire.
Manuale2
Memcached è un sistema di caching distribuito ad alte prestazioni utilizzato per accelerare le applicazioni web. Tuttavia, a causa di configurazioni errate o vulnerabilità, può essere sfruttato da un attaccante per ottenere informazioni sensibili o eseguire attacchi di amplificazione.
Scansione delle porte
Per identificare i server Memcached in esecuzione su una rete, è possibile eseguire una scansione delle porte utilizzando uno strumento come Nmap:
Verifica dell'accesso anonimo
Per verificare se un server Memcached consente l'accesso anonimo, è possibile utilizzare il comando telnet
:
Se la connessione riesce senza richiedere alcuna autenticazione, il server Memcached è configurato per consentire l'accesso anonimo.
Esecuzione di comandi Memcached
Una volta connessi a un server Memcached, è possibile eseguire comandi utilizzando la sintassi specifica di Memcached. Ad esempio, per ottenere il valore di una chiave, è possibile utilizzare il comando get
:
Per impostare il valore di una chiave, è possibile utilizzare il comando set
:
Attacchi di amplificazione
Memcached può essere utilizzato per eseguire attacchi di amplificazione, sfruttando la sua capacità di memorizzare grandi quantità di dati in memoria. Gli attaccanti possono inviare richieste falsificate con l'indirizzo IP della vittima come mittente, facendo sì che il server Memcached invii una risposta molto più grande alla vittima.
Per eseguire un attacco di amplificazione Memcached, è possibile utilizzare uno strumento come memcrashed
:
Protezione e mitigazione
Per proteggere i server Memcached da attacchi di amplificazione, è possibile adottare le seguenti misure:
Disabilitare l'accesso anonimo e richiedere l'autenticazione per accedere al server Memcached.
Configurare un firewall per bloccare l'accesso al server Memcached dalle fonti non autorizzate.
Limitare la quantità di memoria utilizzata da Memcached per evitare l'amplificazione delle risposte.
Aggiornare regolarmente Memcached e monitorare le vulnerabilità note.
Conclusioni
Memcached può essere un'utile risorsa per migliorare le prestazioni delle applicazioni web, ma è importante configurarlo correttamente e proteggerlo da potenziali attacchi. Conoscere le tecniche di hacking associate a Memcached può aiutare a identificare e mitigare le vulnerabilità.
Automatico
Memcached es un sistema de almacenamiento en caché de objetos de alto rendimiento que se utiliza comúnmente en aplicaciones web para mejorar el rendimiento y reducir la carga en la base de datos. Sin embargo, también puede ser una fuente potencial de vulnerabilidades en la seguridad si no se configura correctamente.
Este módulo de Metasploit automatiza el proceso de explotación de una vulnerabilidad de Memcached conocida como "memcrashed". Esta vulnerabilidad permite a un atacante realizar ataques de amplificación de reflexión DDoS, lo que puede resultar en una interrupción del servicio.
Para utilizar este módulo, simplemente especifique la dirección IP de la víctima y la dirección IP del servidor Memcached que se utilizará para realizar el ataque. El módulo enviará una solicitud especial al servidor Memcached, que luego se amplificará y se enviará a la dirección IP de la víctima, abrumando su conexión a Internet y causando una interrupción del servicio.
Es importante tener en cuenta que este módulo solo debe utilizarse con fines educativos o en entornos controlados donde se haya obtenido el consentimiento del propietario del sistema. El uso indebido de esta herramienta puede ser ilegal y puede tener consecuencias legales graves.
Para obtener más información sobre cómo protegerse contra ataques de amplificación de reflexión DDoS y cómo configurar correctamente su servidor Memcached, consulte la documentación oficial de Memcached y las mejores prácticas de seguridad en línea.
Dumping delle chiavi di Memcache
Nel mondo di Memcache, un protocollo che aiuta nell'organizzazione dei dati per classi di slab, esistono comandi specifici per ispezionare i dati memorizzati, sebbene con notevoli limitazioni:
Le chiavi possono essere dumpate solo per classe di slab, raggruppando le chiavi di dimensioni simili.
Esiste un limite di una pagina per classe di slab, corrispondente a 1MB di dati.
Questa funzionalità è non ufficiale e potrebbe essere interrotta in qualsiasi momento, come discusso nei forum della comunità.
La limitazione di poter dumpare solo 1MB da potenzialmente gigabyte di dati è particolarmente significativa. Tuttavia, questa funzionalità può ancora offrire informazioni sui modelli di utilizzo delle chiavi, a seconda delle esigenze specifiche. Per coloro che sono meno interessati alla meccanica, una visita alla sezione degli strumenti rivela utility per il dump completo. In alternativa, il processo di utilizzo di telnet per l'interazione diretta con le configurazioni di memcached è descritto di seguito.
Come funziona
L'organizzazione della memoria di Memcache è fondamentale. Avviare Memcache con l'opzione "-vv" rivela le classi di slab che genera, come mostrato di seguito:
Per visualizzare tutte le slab attualmente esistenti, viene utilizzato il seguente comando:
Aggiungere una singola chiave a memcached 1.4.13 illustra come le classi di slab vengono popolate e gestite. Ad esempio:
Eseguendo il comando "stats slabs" dopo l'aggiunta di una chiave si ottengono statistiche dettagliate sull'utilizzo delle slab:
Questo output rivela i tipi di slab attivi, i chunk utilizzati e le statistiche operative, offrendo informazioni sull'efficienza delle operazioni di lettura e scrittura.
Un altro comando utile, "stats items", fornisce dati su evictions, limiti di memoria e cicli di vita degli elementi:
Queste statistiche consentono di fare ipotesi informate sul comportamento della cache dell'applicazione, inclusa l'efficienza della cache per diverse dimensioni dei contenuti, l'allocazione della memoria e la capacità di memorizzare grandi oggetti.
Dumping delle chiavi
Per le versioni precedenti alla 1.4.31, le chiavi vengono scaricate utilizzando la classe slab tramite:
Per esempio, per scaricare una chiave nella classe #1:
Questo metodo itera sulle classi di slab, estrae e opzionalmente scarica i valori delle chiavi.
SCARICARE LE CHIAVI DI MEMCACHE (VER 1.4.31+)
Con la versione di memcache 1.4.31 e successiva, viene introdotto un nuovo metodo più sicuro per scaricare le chiavi in un ambiente di produzione, utilizzando la modalità non bloccante come descritto nelle note di rilascio. Questo approccio genera un output esteso, quindi si consiglia di utilizzare il comando 'nc' per migliorare l'efficienza. Esempi includono:
STRUMENTI DI DUMPING
Tabella da qui.
Linguaggi di programmazione | Strumenti | Funzionalità | ||
---|---|---|---|---|
PHP | Stampa i nomi delle chiavi. | |||
Perl | Stampa le chiavi e i valori. | |||
Ruby | Stampa i nomi delle chiavi. | |||
Perl | Strumento nel modulo CPAN | ached/) | ||
PHP | GUI di monitoraggio di Memcache che consente anche di eseguire il dumping delle chiavi | |||
libmemcached | Congela il processo memcached!!! Stai attento quando lo usi in produzione. Tuttavia, utilizzandolo, puoi aggirare il limite di 1 MB e scaricare tutte le chiavi. |
Risoluzione dei problemi
Limite dati di 1 MB
Nota che prima di memcached 1.4 non puoi memorizzare oggetti più grandi di 1 MB a causa della dimensione massima predefinita dello slab.
Non impostare mai un timeout > 30 giorni!
Se provi a "set" o "add" una chiave con un timeout maggiore del massimo consentito, potresti non ottenere ciò che ti aspetti perché memcached tratta il valore come un timestamp Unix. Inoltre, se il timestamp è nel passato, non farà nulla. Il tuo comando fallirà silenziosamente.
Quindi, se vuoi utilizzare il tempo di vita massimo, specifica 2592000. Esempio:
Chiavi che scompaiono in caso di overflow
Nonostante la documentazione dica qualcosa riguardo al superamento di 64 bit, che causa la scomparsa di un valore utilizzando "incr", è necessario crearlo nuovamente utilizzando "add" / "set".
Replicazione
memcached stesso non supporta la replicazione. Se ne hai davvero bisogno, devi utilizzare soluzioni di terze parti:
repcached: replicazione asincrona multi-master (patch set memcached 1.2)
Interfaccia memcached di Couchbase: utilizza CouchBase come sostituto di memcached
yrmcds: archivio chiave-valore Master-Slave compatibile con memcached
twemproxy (aka nutcracker): proxy con supporto memcached
Comandi Cheat-Sheet
pageMemcache CommandsShodan
port:11211 "STAT pid"
"STAT pid"
Riferimenti
Last updated