11211 - Memcache ํํ ์คํ
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
ํ๋กํ ์ฝ ์ ๋ณด
From wikipedia:
Memcached (๋ฐ์: mem-cashed, mem-cash-dee)๋ ์ผ๋ฐ ๋ชฉ์ ์ ๋ถ์ฐ ๋ฉ๋ชจ๋ฆฌ ์บ์ฑ ์์คํ ์ ๋๋ค. ๋ฐ์ดํฐ์ ๊ฐ์ฒด๋ฅผ RAM์ ์บ์ํ์ฌ ์ธ๋ถ ๋ฐ์ดํฐ ์์ค(์: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ API)๋ฅผ ์ฝ์ด์ผ ํ๋ ํ์๋ฅผ ์ค์์ผ๋ก์จ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฐ ์น์ฌ์ดํธ์ ์๋๋ฅผ ๋์ด๋ ๋ฐ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
Memcached๋ SASL์ ์ง์ํ์ง๋ง, ๋๋ถ๋ถ์ ์ธ์คํด์ค๋ ์ธ์ฆ ์์ด ๋ ธ์ถ๋์ด ์์ต๋๋ค.
๊ธฐ๋ณธ ํฌํธ: 11211
PORT STATE SERVICE
11211/tcp open unknown
Enumeration
Manual
memcache ์ธ์คํด์ค์ ์ ์ฅ๋ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ ์ถํ๋ ค๋ฉด ๋ค์์ ์ํํด์ผ ํฉ๋๋ค:
- ํ์ฑ ํญ๋ชฉ์ด ์๋ ์ฌ๋ฉ ์ฐพ๊ธฐ
- ์ด์ ์ ๊ฐ์ง๋ ์ฌ๋ฉ์ ํค ์ด๋ฆ ๊ฐ์ ธ์ค๊ธฐ
- ํค ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์ ์ฅ๋ ๋ฐ์ดํฐ ์ ์ถํ๊ธฐ
์ด ์๋น์ค๋ ๋จ์ง ์บ์๋ผ๋ ์ ์ ๊ธฐ์ตํ์ธ์, ๊ทธ๋์ ๋ฐ์ดํฐ๊ฐ ๋ํ๋๊ณ ์ฌ๋ผ์ง ์ ์์ต๋๋ค.
echo "version" | nc -vn -w 1 <IP> 11211 #Get version
echo "stats" | nc -vn -w 1 <IP> 11211 #Get status
echo "stats slabs" | nc -vn -w 1 <IP> 11211 #Get slabs
echo "stats items" | nc -vn -w 1 <IP> 11211 #Get items of slabs with info
echo "stats cachedump <number> 0" | nc -vn -w 1 <IP> 11211 #Get key names (the 0 is for unlimited output size)
echo "get <item_name>" | nc -vn -w 1 <IP> 11211 #Get saved info
#This php will just dump the keys, you need to use "get <item_name> later"
sudo apt-get install php-memcached
php -r '$c = new Memcached(); $c->addServer("localhost", 11211); var_dump( $c->getAllKeys() );'
์๋2
sudo apt install libmemcached-tools
memcstat --servers=127.0.0.1 #Get stats
memcdump --servers=127.0.0.1 #Get all items
memccat --servers=127.0.0.1 <item1> <item2> <item3> #Get info inside the item(s)
์๋ํ
nmap -n -sV --script memcached-info -p 11211 <IP> #Just gather info
msf > use auxiliary/gather/memcached_extractor #Extracts saved data
msf > use auxiliary/scanner/memcached/memcached_amp #Check is UDP DDoS amplification attack is possible
Memcache ํค ๋คํํ๊ธฐ
memcache ์์ญ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฉ์ผ๋ก ์ ๋ฆฌํ๋ ํ๋กํ ์ฝ๋ก, ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฌํ๊ธฐ ์ํ ํน์ ๋ช ๋ น์ด ์กด์ฌํ์ง๋ง, ์ฃผ๋ชฉํ ๋งํ ์ ์ฝ์ด ์์ต๋๋ค:
- ํค๋ ์ฌ๋ฉ ํด๋์ค๋ณ๋ก๋ง ๋คํํ ์ ์์ผ๋ฉฐ, ์ ์ฌํ ์ฝํ ์ธ ํฌ๊ธฐ์ ํค๋ฅผ ๊ทธ๋ฃนํํฉ๋๋ค.
- ์ฌ๋ฉ ํด๋์ค๋น ํ ํ์ด์ง์ ์ ํ์ด ์์ผ๋ฉฐ, ์ด๋ 1MB์ ๋ฐ์ดํฐ์ ํด๋นํฉ๋๋ค.
- ์ด ๊ธฐ๋ฅ์ ๋น๊ณต์์ ์ด๋ฉฐ ์ธ์ ๋ ์ง ์ค๋จ๋ ์ ์์ต๋๋ค. ์ด๋ ์ปค๋ฎค๋ํฐ ํฌ๋ผ์์ ๋ ผ์๋์์ต๋๋ค.
์ ์ฌ์ ์ผ๋ก ๊ธฐ๊ฐ๋ฐ์ดํธ์ ๋ฐ์ดํฐ์์ 1MB๋ง ๋คํํ ์ ์๋ค๋ ์ ํ์ ํนํ ์ค์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด ๊ธฐ๋ฅ์ ํน์ ์๊ตฌ์ ๋ฐ๋ผ ํค ์ฌ์ฉ ํจํด์ ๋ํ ํต์ฐฐ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋ฉ์ปค๋์ฆ์ ๋ ๊ด์ฌ์ด ์๋ ๊ฒฝ์ฐ, ๋๊ตฌ ์น์ ์ ๋ฐฉ๋ฌธํ๋ฉด ํฌ๊ด์ ์ธ ๋คํ๋ฅผ ์ํ ์ ํธ๋ฆฌํฐ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ๋๋ memcached ์ค์ ๊ณผ์ ์ง์ ์ํธ์์ฉ์ ์ํ telnet ์ฌ์ฉ ๊ณผ์ ์ ์๋์ ์ค๋ช ๋์ด ์์ต๋๋ค.
์๋ ๋ฐฉ์
Memcache์ ๋ฉ๋ชจ๋ฆฌ ์กฐ์ง์ ์ค์ํฉ๋๋ค. โ-vvโ ์ต์ ์ผ๋ก memcache๋ฅผ ์์ํ๋ฉด ์์ฑ๋๋ ์ฌ๋ฉ ํด๋์ค๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
$ memcached -vv
slab class 1: chunk size 96 perslab 10922
[...]
ํ์ฌ ์กด์ฌํ๋ ๋ชจ๋ ์ฌ๋ฉ์ ํ์ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค:
stats slabs
memcached 1.4.13์ ๋จ์ผ ํค๋ฅผ ์ถ๊ฐํ๋ฉด ์ฌ๋ฉ ํด๋์ค๊ฐ ์ด๋ป๊ฒ ์ฑ์์ง๊ณ ๊ด๋ฆฌ๋๋์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์๋ฅผ ๋ค์ด:
set mykey 0 60 1
1
STORED
โstats slabsโ ๋ช ๋ น์ ํค ์ถ๊ฐ ํ ์คํํ๋ฉด ์ฌ๋ฉ ํ์ฉ์ ๋ํ ์์ธํ ํต๊ณ๋ฅผ ์ ๊ณตํฉ๋๋ค:
stats slabs
[...]
์ด ์ถ๋ ฅ์ ํ์ฑ ์ฌ๋ฉ ์ ํ, ์ฌ์ฉ๋ ์ฒญํฌ ๋ฐ ์ด์ ํต๊ณ๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ, ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ ํจ์จ์ฑ์ ๋ํ ํต์ฐฐ์ ์ ๊ณตํฉ๋๋ค.
๋ ๋ค๋ฅธ ์ ์ฉํ ๋ช ๋ น์ด์ธ โstats itemsโ๋ ํด์ถ, ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ ๋ฐ ํญ๋ชฉ ์์ ์ฃผ๊ธฐ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค:
stats items
[...]
์ด ํต๊ณ๋ ์ ํ๋ฆฌ์ผ์ด์ ์บ์ฑ ๋์์ ๋ํ ๊ต์ก์ ์ธ ๊ฐ์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ฉฐ, ์ฌ๊ธฐ์๋ ๋ค์ํ ์ฝํ ์ธ ํฌ๊ธฐ์ ๋ํ ์บ์ ํจ์จ์ฑ, ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ๋ํ ๊ฐ์ฒด ์บ์ฑ ์ฉ๋์ด ํฌํจ๋ฉ๋๋ค.
ํค ๋คํํ๊ธฐ
๋ฒ์ 1.4.31 ์ด์ ์์๋ ํค๊ฐ ์ฌ๋ฉ ํด๋์ค๋ณ๋ก ๋คํ๋ฉ๋๋ค:
stats cachedump <slab class> <number of items to dump>
์๋ฅผ ๋ค์ด, ํด๋์ค #1์์ ํค๋ฅผ ๋คํํ๋ ค๋ฉด:
stats cachedump 1 1000
ITEM mykey [1 b; 1350677968 s]
END
์ด ๋ฐฉ๋ฒ์ ์ฌ๋ฉ ํด๋์ค๋ฅผ ๋ฐ๋ณตํ์ฌ ํค ๊ฐ์ ์ถ์ถํ๊ณ ์ ํ์ ์ผ๋ก ๋คํํฉ๋๋ค.
MEMCACHE ํค ๋คํ (VER 1.4.31+)
memcache ๋ฒ์ 1.4.31 ์ด์์์๋ ํ๋ก๋์ ํ๊ฒฝ์์ ํค๋ฅผ ๋คํํ๊ธฐ ์ํ ์๋ก์ด ์์ ํ ๋ฐฉ๋ฒ์ด ๋์ ๋์์ผ๋ฉฐ, ์ด๋ ๋ฆด๋ฆฌ์ค ๋ ธํธ์์ ์์ธํ ์ค๋ช ๋ ๋น์ฐจ๋จ ๋ชจ๋๋ฅผ ํ์ฉํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ฐฉ๋ํ ์ถ๋ ฅ์ ์์ฑํ๋ฏ๋ก ํจ์จ์ฑ์ ์ํด โncโ ๋ช ๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค. ์์๋ก๋:
echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | head -1
echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | grep ee6ba58566e234ccbbce13f9a24f9a28
DUMPING TOOLS
Table from here.
| Programming Languages | Tools | Functionality | ||
|---|---|---|---|---|
| PHP | simple script | ํค ์ด๋ฆ์ ์ถ๋ ฅํฉ๋๋ค. | ||
| Perl | simple script | ํค์ ๊ฐ์ ์ถ๋ ฅํฉ๋๋ค. | ||
| Ruby | simple script | ํค ์ด๋ฆ์ ์ถ๋ ฅํฉ๋๋ค. | ||
| Perl | memdump | CPAN ๋ชจ๋์ ๋๊ตฌ | Memcached-libmemcached | ached/) |
| PHP | memcache.php | ํค ๋คํ๋ ๊ฐ๋ฅํ Memcache ๋ชจ๋ํฐ๋ง GUI | ||
| libmemcached | peep | memcached ํ๋ก์ธ์ค๋ฅผ ์ค๋จ์ํต๋๋ค!!! ํ๋ก๋์ ์์ ์ฌ์ฉํ ๋ ์ฃผ์ํ์ธ์. ์ฌ์ ํ ์ฌ์ฉํ๋ฉด 1MB ์ ํ์ ์ฐํํ๊ณ ๋ชจ๋ ํค๋ฅผ ๋คํํ ์ ์์ต๋๋ค. |
Troubleshooting
1MB Data Limit
memcached 1.4 ์ด์ ์๋ ๊ธฐ๋ณธ ์ต๋ ์ฌ๋ฉ ํฌ๊ธฐ๋ก ์ธํด 1MB๋ณด๋ค ํฐ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค.
Never Set a Timeout > 30 Days!
ํ์ฉ๋ ์ต๋๊ฐ๋ณด๋ค ํฐ ํ์์์์ผ๋ก ํค๋ฅผ โ์ค์ โํ๊ฑฐ๋ โ์ถ๊ฐโํ๋ ค๊ณ ํ๋ฉด memcached๊ฐ ๊ฐ์ Unix ํ์์คํฌํ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์์ํ ๋๋ก ๋์ง ์์ ์ ์์ต๋๋ค. ๋ํ ํ์์คํฌํ๊ฐ ๊ณผ๊ฑฐ์ ์์ผ๋ฉด ์๋ฌด ์์ ๋ ์ํํ์ง ์์ต๋๋ค. ๋ช ๋ น์ด ์กฐ์ฉํ ์คํจํฉ๋๋ค.
๋ฐ๋ผ์ ์ต๋ ์๋ช ์ ์ฌ์ฉํ๋ ค๋ฉด 2592000์ ์ง์ ํ์ธ์. ์:
set my_key 0 2592000 1
1
Disappearing Keys on Overflow
๋ฌธ์์์๋ โincrโ๋ฅผ ์ฌ์ฉํ์ฌ 64๋นํธ ๊ฐ์ด ์ค๋ฒํ๋ก์ฐ๋ ๋ ๊ฐ์ด ์ฌ๋ผ์ง๋ค๊ณ ์ธ๊ธํ๊ณ ์์ต๋๋ค. ๋ค์ โaddโ/โsetโ์ ์ฌ์ฉํ์ฌ ์์ฑํด์ผ ํฉ๋๋ค.
Replication
memcached ์์ฒด๋ ๋ณต์ ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ์ ๋ง ํ์ํ๋ค๋ฉด 3rd party ์๋ฃจ์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค:
- repcached: ๋ค์ค ๋ง์คํฐ ๋น๋๊ธฐ ๋ณต์ (memcached 1.2 ํจ์น ์ธํธ)
- Couchbase memcached interface: CouchBase๋ฅผ memcached ๋๋กญ์ธ์ผ๋ก ์ฌ์ฉ
- yrmcds: memcached ํธํ ๋ง์คํฐ-์ฌ๋ ์ด๋ธ ํค ๊ฐ ์ ์ฅ์
- twemproxy (aka nutcracker): memcached ์ง์ ํ๋ก์
Commands Cheat-Sheet
Shodan
port:11211 "STAT pid""STAT pid"
References
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


