hacktricks/network-services-pentesting/11211-memcache/memcache-commands.md

14 KiB

Memcache Commands

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

{% embed url="https://websec.nl/" %}

Commands Cheat-Sheet

From https://lzone.de/cheat-sheet/memcached

지원되는 명령어(공식 및 비공식)는 doc/protocol.txt 문서에 문서화되어 있습니다.

안타깝게도 구문 설명이 명확하지 않으며, 기존 명령어를 나열하는 간단한 도움 명령어가 훨씬 더 좋을 것입니다. 다음은 source에서 찾을 수 있는 명령어의 개요입니다(2016년 8월 19일 기준):

Command Description Example
get 값을 읽습니다. get mykey
set 키를 무조건 설정합니다.

set mykey <flags> <ttl> <size>

<p>Unix CLI 도구를 사용할 때는 \r\n을 줄 바꿈으로 사용해야 합니다. 예를 들어</p> printf "set mykey 0 60 4\r\ndata\r\n"

add 새 키를 추가합니다. add newkey 0 60 5
replace 기존 키를 덮어씁니다. replace key 0 60 5
append 기존 키에 데이터를 추가합니다. append key 0 60 15
prepend 기존 키 앞에 데이터를 추가합니다. prepend key 0 60 15
incr 주어진 숫자만큼 숫자 키 값을 증가시킵니다. incr mykey 2
decr 주어진 숫자만큼 숫자 키 값을 감소시킵니다. decr mykey 5
delete 기존 키를 삭제합니다. delete mykey
flush_all 모든 항목을 즉시 무효화합니다. flush_all
flush_all n 초 후 모든 항목을 무효화합니다. flush_all 900
stats 일반 통계를 출력합니다. stats
메모리 통계를 출력합니다. stats slabs
높은 수준의 할당 통계를 출력합니다. stats malloc
항목에 대한 정보를 출력합니다. stats items
stats detail
stats sizes
통계 카운터를 재설정합니다. stats reset
lru_crawler metadump 캐시에 있는 항목(대부분)의 메타데이터를 덤프합니다. lru_crawler metadump all
version 서버 버전을 출력합니다. version
verbosity 로그 수준을 증가시킵니다. verbosity
quit 세션을 종료합니다. quit

Traffic Statistics

현재 트래픽 통계를 쿼리하려면 다음 명령어를 사용하세요.

stats

당신은 연결 수, 입출력 바이트 및 그 외 많은 정보를 제공하는 목록을 받게 됩니다.

예시 출력:

STAT pid 14868
STAT uptime 175931
STAT time 1220540125
STAT version 1.2.2
STAT pointer_size 32
STAT rusage_user 620.299700
STAT rusage_system 1545.703017
STAT curr_items 228
STAT total_items 779
STAT bytes 15525
STAT curr_connections 92
STAT total_connections 1740
STAT connection_structures 165
STAT cmd_get 7411
STAT cmd_set 28445156
STAT get_hits 5183
STAT get_misses 2228
STAT evictions 0
STAT bytes_read 2112768087
STAT bytes_written 1000038245
STAT limit_maxbytes 52428800
STAT threads 1
END

Memory Statistics

현재 메모리 통계를 쿼리할 수 있습니다.

stats slabs
# Memcached Commands

Memcached는 메모리 기반의 캐시 시스템으로, 다양한 명령어를 통해 데이터를 저장하고 검색할 수 있습니다. 다음은 Memcached에서 사용할 수 있는 주요 명령어입니다.

## 기본 명령어

- **set**: 데이터를 저장합니다.
- **get**: 저장된 데이터를 검색합니다.
- **delete**: 저장된 데이터를 삭제합니다.
- **flush_all**: 모든 데이터를 삭제합니다.

## 고급 명령어

- **increment**: 특정 키의 값을 증가시킵니다.
- **decrement**: 특정 키의 값을 감소시킵니다.
- **cas**: 특정 키의 값을 조건부로 설정합니다.

## 사용 예시

```bash
set mykey 0 900 9
data12345

이 명령어는 mykey라는 키에 data12345라는 데이터를 저장합니다.

STAT 1:chunk_size 80 STAT 1:chunks_per_page 13107 STAT 1:total_pages 1 STAT 1:total_chunks 13107 STAT 1:used_chunks 13106 STAT 1:free_chunks 1 STAT 1:free_chunks_end 12886 STAT 2:chunk_size 100 STAT 2:chunks_per_page 10485 STAT 2:total_pages 1 STAT 2:total_chunks 10485 STAT 2:used_chunks 10484 STAT 2:free_chunks 1 STAT 2:free_chunks_end 10477 [...] STAT active_slabs 3 STAT total_malloced 3145436 END

메모리 부족 여부가 확실하지 않은 경우, 항상 “stats” 명령어로 제공되는 “evictions” 카운터를 확인하세요. 인스턴스에 충분한 메모리가 있다면 “evictions” 카운터는 0이거나 최소한 증가하지 않아야 합니다.

#### 어떤 키가 사용되나요? <a href="#which-keys-are-used" id="which-keys-are-used"></a>

현재 키 집합을 직접적으로 결정하는 내장 함수는 없습니다. 그러나 다음을 사용할 수 있습니다.

stats items

키가 몇 개 존재하는지 확인하는 명령.

stats items STAT items:1:number 220 STAT items:1:age 83095 STAT items:2:number 7 STAT items:2:age 1405 [...] END

이것은 적어도 어떤 키가 사용되는지 확인하는 데 도움이 됩니다. 이미 memcache 접근을 수행하는 PHP 스크립트에서 키 이름을 덤프하려면 [100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html)에서 PHP 코드를 사용할 수 있습니다.

<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>

{% embed url="https://websec.nl/" %}

{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)

<details>

<summary>HackTricks 지원하기</summary>

* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**

</details>
{% endhint %}