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

132 lines
12 KiB
Markdown
Raw Normal View History

2023-06-06 18:56:34 +00:00
## Comandos Memcache
2023-02-16 13:29:30 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2023-02-16 13:29:30 +00:00
2023-06-06 18:56:34 +00:00
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
2023-02-16 13:29:30 +00:00
</details>
2023-06-06 18:56:34 +00:00
## Comandos Cheat-Sheet
2023-02-16 13:29:30 +00:00
2023-06-06 18:56:34 +00:00
**De** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached)\*\*\*\*
2023-02-16 13:29:30 +00:00
2023-06-06 18:56:34 +00:00
Os comandos suportados (os oficiais e alguns não oficiais) são documentados no documento [doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt).
2023-02-16 13:29:30 +00:00
2023-06-06 18:56:34 +00:00
Infelizmente, a descrição da sintaxe não é muito 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 [fonte](https://github.com/memcached/memcached) (a partir de 19.08.2016):
2023-02-16 13:29:30 +00:00
2023-06-06 18:56:34 +00:00
| Comando | Descrição | Exemplo |
2023-03-05 22:20:47 +00:00
| --------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2023-06-06 18:56:34 +00:00
| get | Lê um valor | `get mykey` |
| set | Define uma chave incondicionalmente | <p><code>set mykey &#x3C;flags> &#x3C;ttl> &#x3C;size></code><br><br>&#x3C;p>Garanta o uso de \r\n como quebra de linha ao usar ferramentas Unix CLI. Por exemplo&#x3C;/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 | Substitui uma chave existente | `replace key 0 60 5` |
| append | Anexa dados a uma chave existente | `append key 0 60 15` |
| prepend | Adiciona dados no início de uma chave existente | `prepend key 0 60 15` |
| incr | Incrementa o valor da chave numérica pelo número fornecido | `incr mykey 2` |
| decr | Decrementa o valor da chave numérica pelo número fornecido | `decr mykey 5` |
| delete | Exclui 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` |
2023-03-05 22:20:47 +00:00
| | | `stats detail` |
| | | `stats sizes` |
2023-06-06 18:56:34 +00:00
| | Redefine contadores de estatísticas | `stats reset` |
| lru\_crawler metadump | Despeja (a maioria) 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 | Encerra a sessão | `quit` |
2023-02-16 13:29:30 +00:00
2023-06-06 18:56:34 +00:00
#### Estatísticas de Tráfego <a href="#traffic-statistics" id="traffic-statistics"></a>
2023-02-16 13:29:30 +00:00
2023-06-06 18:56:34 +00:00
Você pode consultar as estatísticas de tráfego atuais usando o comando.
2023-02-16 13:29:30 +00:00
```
stats
```
2023-06-06 18:56:34 +00:00
Você obterá uma listagem que mostra o número de conexões, bytes enviados/recebidos e muito mais.
2023-02-16 13:29:30 +00:00
2023-06-06 18:56:34 +00:00
Exemplo de saída:
2023-02-16 13:29:30 +00:00
```
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
```
2023-06-06 18:56:34 +00:00
#### Estatísticas de Memória <a href="#memory-statistics" id="memory-statistics"></a>
2023-02-16 13:29:30 +00:00
2023-06-06 18:56:34 +00:00
Você pode consultar as estatísticas de memória atuais usando
2023-02-16 13:29:30 +00:00
```
stats slabs
```
2023-06-06 18:56:34 +00:00
Exemplo de Saída:
2023-02-16 13:29:30 +00:00
```
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
```
2023-06-06 18:56:34 +00:00
Se você não tem certeza se tem memória suficiente para sua instância do memcached, sempre verifique os 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.
2023-02-16 13:29:30 +00:00
2023-06-06 18:56:34 +00:00
#### Quais chaves são usadas? <a href="#which-keys-are-used" id="which-keys-are-used"></a>
2023-02-16 13:29:30 +00:00
2023-06-06 18:56:34 +00:00
Não há função integrada para determinar diretamente o conjunto atual de chaves. No entanto, você pode usar o comando "stats" para obter informações sobre as chaves que estão sendo usadas.
2023-02-16 13:29:30 +00:00
```
stats items
```
2023-06-06 18:56:34 +00:00
Comando para determinar quantas chaves existem.
2023-02-16 13:29:30 +00:00
2023-06-06 18:56:34 +00:00
```
stats items
```
2023-02-16 13:29:30 +00:00
```
stats items
STAT items:1:number 220
STAT items:1:age 83095
STAT items:2:number 7
STAT items:2:age 1405
[...]
END
```
2023-06-06 18:56:34 +00:00
Isso ajuda a ver se alguma chave é usada. Para despejar os nomes das chaves de um script PHP que já acessa o memcache, você pode usar o código PHP de [100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html).