mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-19 01:24:50 +00:00
189 lines
14 KiB
Markdown
189 lines
14 KiB
Markdown
|
# Memcache Commands
|
||
|
|
||
|
{% hint style="success" %}
|
||
|
Aprenda e pratique Hacking 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">\
|
||
|
Aprenda e pratique Hacking 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>Support HackTricks</summary>
|
||
|
|
||
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
||
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
|
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||
|
|
||
|
</details>
|
||
|
{% endhint %}
|
||
|
|
||
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||
|
|
||
|
{% embed url="https://websec.nl/" %}
|
||
|
|
||
|
|
||
|
## Commands Cheat-Sheet
|
||
|
|
||
|
**De** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached)
|
||
|
|
||
|
Os comandos suportados (os oficiais e alguns não oficiais) estão documentados no documento [doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt).
|
||
|
|
||
|
Infelizmente, a descrição da sintaxe não é realmente clara e um simples comando de ajuda listando os comandos existentes seria muito melhor. Aqui está uma visão geral dos comandos que você pode encontrar na [source](https://github.com/memcached/memcached) (a partir de 19.08.2016):
|
||
|
|
||
|
| Command | Description | Example |
|
||
|
| --------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
|
| get | Lê um valor | `get mykey` |
|
||
|
| set | Define uma chave incondicionalmente | <p><code>set mykey <flags> <ttl> <size></code><br><br><p>Certifique-se de usar \r\n como quebras de linha ao usar ferramentas de CLI Unix. Por exemplo</p> <code>printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211</code></p> |
|
||
|
| add | Adiciona uma nova chave | `add newkey 0 60 5` |
|
||
|
| replace | Sobrescreve a chave existente | `replace key 0 60 5` |
|
||
|
| append | Anexa dados à chave existente | `append key 0 60 15` |
|
||
|
| prepend | Precede dados à chave existente | `prepend key 0 60 15` |
|
||
|
| incr | Incrementa o valor da chave numérica pelo número dado | `incr mykey 2` |
|
||
|
| decr | Decrementa o valor da chave numérica pelo número dado | `decr mykey 5` |
|
||
|
| delete | Deleta uma chave existente | `delete mykey` |
|
||
|
| flush\_all | Invalida todos os itens imediatamente | `flush_all` |
|
||
|
| flush\_all | Invalida todos os itens em n segundos | `flush_all 900` |
|
||
|
| stats | Imprime estatísticas gerais | `stats` |
|
||
|
| | Imprime estatísticas de memória | `stats slabs` |
|
||
|
| | Imprime estatísticas de alocação de nível superior | `stats malloc` |
|
||
|
| | Imprime informações sobre itens | `stats items` |
|
||
|
| | | `stats detail` |
|
||
|
| | | `stats sizes` |
|
||
|
| | Redefine contadores de estatísticas | `stats reset` |
|
||
|
| lru\_crawler metadump | Despeja (a maior parte) dos metadados para (todos) os itens no cache | `lru_crawler metadump all` |
|
||
|
| version | Imprime a versão do servidor. | `version` |
|
||
|
| verbosity | Aumenta o nível de log | `verbosity` |
|
||
|
| quit | Termina a sessão | `quit` |
|
||
|
|
||
|
#### Traffic Statistics <a href="#traffic-statistics" id="traffic-statistics"></a>
|
||
|
|
||
|
Você pode consultar as estatísticas de tráfego atuais usando o comando
|
||
|
```
|
||
|
stats
|
||
|
```
|
||
|
Você receberá uma lista que serve o número de conexões, bytes de entrada/saída e muito mais.
|
||
|
|
||
|
Exemplo de Saída:
|
||
|
```
|
||
|
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
|
||
|
```
|
||
|
#### Estatísticas de Memória <a href="#memory-statistics" id="memory-statistics"></a>
|
||
|
|
||
|
Você pode consultar as estatísticas de memória atuais usando
|
||
|
```
|
||
|
stats slabs
|
||
|
```
|
||
|
```markdown
|
||
|
# Memcache Commands
|
||
|
|
||
|
## Comandos Básicos
|
||
|
|
||
|
Os comandos básicos do Memcache incluem:
|
||
|
|
||
|
- `set`: Armazena um valor com uma chave específica.
|
||
|
- `get`: Recupera o valor associado a uma chave.
|
||
|
- `delete`: Remove um valor associado a uma chave.
|
||
|
- `flush_all`: Limpa todos os dados armazenados.
|
||
|
|
||
|
## Comandos Avançados
|
||
|
|
||
|
Os comandos avançados incluem:
|
||
|
|
||
|
- `incr`: Incrementa o valor de uma chave.
|
||
|
- `decr`: Decrementa o valor de uma chave.
|
||
|
- `cas`: Realiza uma operação de comparação e troca.
|
||
|
|
||
|
## Exemplo de Uso
|
||
|
|
||
|
Para armazenar um valor:
|
||
|
|
||
|
```
|
||
|
set mykey 0 900 4
|
||
|
test
|
||
|
```
|
||
|
|
||
|
Para recuperar o valor:
|
||
|
|
||
|
```
|
||
|
get mykey
|
||
|
```
|
||
|
```
|
||
|
```
|
||
|
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
|
||
|
```
|
||
|
Se você não tiver certeza se tem memória suficiente para sua instância memcached, sempre fique atento aos contadores de “evictions” fornecidos pelo comando “stats”. Se você tiver memória suficiente para a instância, o contador de “evictions” deve ser 0 ou pelo menos não estar aumentando.
|
||
|
|
||
|
#### Quais Chaves São Usadas? <a href="#which-keys-are-used" id="which-keys-are-used"></a>
|
||
|
|
||
|
Não há uma função embutida para determinar diretamente o conjunto atual de chaves. No entanto, você pode usar o
|
||
|
```
|
||
|
stats items
|
||
|
```
|
||
|
comando para determinar quantas chaves existem.
|
||
|
```
|
||
|
stats items
|
||
|
STAT items:1:number 220
|
||
|
STAT items:1:age 83095
|
||
|
STAT items:2:number 7
|
||
|
STAT items:2:age 1405
|
||
|
[...]
|
||
|
END
|
||
|
```
|
||
|
Isso pelo menos ajuda a ver se alguma chave está sendo usada. Para despejar os nomes das chaves de um script PHP que já faz o acesso ao memcache, você pode usar o código PHP do [100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html).
|
||
|
|
||
|
<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" %}
|
||
|
Aprenda e pratique Hacking 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">\
|
||
|
Aprenda e pratique Hacking 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>Support HackTricks</summary>
|
||
|
|
||
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
||
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
|
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||
|
|
||
|
</details>
|
||
|
{% endhint %}
|