11211 - Pentesting Memcache
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Van wikipedia:
Memcached (uitspraak: mem-kash-de, mem-kash-dee) is 'n algemene verspreide geheue-kas stelsel. Dit word dikwels gebruik om dinamiese databasis-gedrewe webwerwe te versnel deur data en voorwerpe in RAM te kas om die aantal kere te verminder wat 'n eksterne databron (soos 'n databasis of API) gelees moet word.
Alhoewel Memcached SASL ondersteun, is die meeste instansies blootgestel sonder outentisering.
Standaard poort: 11211
Om al die inligting wat in 'n memcache-instantie gestoor is, te exfiltreer, moet jy:
slabs met aktiewe items vind
Die sleutelname van die slabs wat voorheen opgespoor is, kry
Die gestoor data exfiltreer deur die sleutelname te kry
Onthou dat hierdie diens net 'n cache is, so data mag verskyn en verdwyn.
In die ryk van memcache, 'n protokol wat help om data deur slabs te organiseer, bestaan daar spesifieke opdragte om die gestoor data te inspekteer, alhoewel met noemenswaardige beperkings:
Sleutels kan slegs volgens slab klas gedump word, wat sleutels van soortgelyke inhoudsgrootte groepeer.
'n Beperking bestaan van een bladsy per slab klas, wat gelyk is aan 1MB data.
Hierdie funksie is nie amptelik nie en kan enige tyd gestaak word, soos bespreek in gemeenskapsforums.
Die beperking om slegs 1MB uit potensieel gigabytes data te kan dump, is veral betekenisvol. Tog kan hierdie funksionaliteit steeds insigte bied in sleutelgebruikspatrone, afhangende van spesifieke behoeftes. Vir diegene wat minder geïnteresseerd is in die meganika, 'n besoek aan die tools section onthul nutsmiddels vir omvattende dumping. Alternatiewelik, die proses om telnet te gebruik vir direkte interaksie met memcached-opstellings word hieronder uiteengesit.
Memcache se geheue-organisasie is deurslaggewend. Om memcache met die "-vv" opsie te begin, onthul die slab klasse wat dit genereer, soos hieronder getoon:
Om al die huidige bestaande slabs te vertoon, word die volgende opdrag gebruik:
Voeg 'n enkele sleutel by memcached 1.4.13 illustreer hoe slab klasse bevolk en bestuur word. Byvoorbeeld:
Voer die "stats slabs" opdrag uit na sleutel toevoeging om gedetailleerde statistieke oor slab benutting te verkry:
Hierdie uitvoer onthul die aktiewe slab tipe, gebruikte stukke, en operasionele statistieke, wat insigte bied in die doeltreffendheid van lees- en skryfoperasies.
'n Ander nuttige opdrag, "stats items", bied data oor ontruimings, geheuebeperkings, en itemlewe siklusse:
Hierdie statistieke stel in staat om ingeligte aannames te maak oor toepassingskasgedrag, insluitend kasdoeltreffendheid vir verskillende inhoudgroottes, geheue-toewysing, en kapasiteit om groot voorwerpe te kas.
Vir weergawes voor 1.4.31, sleutels word gedump deur slab klas met:
Byvoorbeeld, om 'n sleutel in klas #1 te dump:
This method iterates over slab classes, extracting and optionally dumping key values.
Met memcache weergawe 1.4.31 en hoër, word 'n nuwe, veiliger metode vir die dump van sleutels in 'n produksie-omgewing bekendgestel, wat nie-blokkerende modus gebruik soos in die release notes beskryf. Hierdie benadering genereer uitgebreide uitvoer, daarom die aanbeveling om die 'nc' opdrag vir doeltreffendheid te gebruik. Voorbeelde sluit in:
Table from here.
Programming Languages | Tools | Functionality | ||
---|---|---|---|---|
PHP | Druk sleutelname. | |||
Perl | Druk sleutels en waardes | |||
Ruby | Druk sleutelname. | |||
Perl | Gereedskap in CPAN-module | ached/) | ||
PHP | Memcache Monitering GUI wat ook toelaat om sleutels te dump | |||
libmemcached | Bevries jou memcached proses!!! Wees versigtig wanneer jy dit in produksie gebruik. Deur dit steeds te gebruik kan jy die 1MB beperking omseil en regtig alle sleutels dump. |
Let daarop dat voor memcached 1.4 jy nie voorwerpe groter as 1MB kan stoor nie weens die standaard maksimum slab grootte.
As jy probeer om 'n sleutel met 'n timeout groter as die toegelate maksimum te “stel” of “toe te voeg”, mag jy nie kry wat jy verwag nie, omdat memcached dan die waarde as 'n Unix-timestamp behandel. Ook, as die timestamp in die verlede is, sal dit glad nie iets doen nie. Jou opdrag sal stilweg misluk.
So as jy die maksimum leeftyd wil gebruik, spesifiseer 2592000. Voorbeeld:
Ten spyte van die dokumentasie wat iets sê oor die omhulsel van 64bit wat 'n waarde oorloop, veroorsaak die gebruik van “incr” dat die waarde verdwyn. Dit moet weer geskep word met “add”/”set”.
memcached self ondersteun nie replikaasie nie. As jy dit regtig nodig het, moet jy 3departy-oplossings gebruik:
repcached: Multi-master asynchrone replikaasie (memcached 1.2 patch stel)
Couchbase memcached interface: Gebruik CouchBase as memcached drop-in
yrmcds: memcached-compatibele Meester-Slaaf sleutelwaarde winkel
twemproxy (ook bekend as nutcracker): proxy met memcached ondersteuning
port:11211 "STAT pid"
"STAT pid"
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)