11211 - Pentesting Memcache
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
wikipediaから:
Memcached(発音:mem-cashed, mem-cash-dee)は、一般的な分散メモリキャッシングシステムです。データとオブジェクトをRAMにキャッシュすることで、外部データソース(データベースやAPIなど)を読み取る回数を減らし、動的なデータベース駆動のウェブサイトの速度を向上させるためにしばしば使用されます。
MemcachedはSASLをサポートしていますが、ほとんどのインスタンスは認証なしで公開されています。
デフォルトポート: 11211
memcacheインスタンス内に保存されているすべての情報を抽出するには、次の手順を実行する必要があります。
アクティブアイテムのあるスラブを見つける
前に検出したスラブのキー名を取得する
キー名を取得することで保存されたデータを抽出する
このサービスは単なるキャッシュであるため、データが現れたり消えたりすることを忘れないでください。
メモキャッシュの領域では、データをスラブによって整理するのを助けるプロトコルであり、保存されたデータを検査するための特定のコマンドが存在しますが、顕著な制約があります:
キーはスラブクラスごとにのみダンプでき、同様のコンテンツサイズのキーをグループ化します。
スラブクラスごとに1ページの制限があり、これは1MBのデータに相当します。
この機能は公式ではなく、いつでも中止される可能性があるため、コミュニティフォーラムで議論されています。
数ギガバイトのデータから1MBしかダンプできないという制限は特に重要です。しかし、この機能は特定のニーズに応じてキーの使用パターンに関する洞察を提供することができます。メカニクスにあまり興味がない方は、ツールセクションを訪れると、包括的なダンプのためのユーティリティが見つかります。あるいは、メモキャッシュのセットアップと直接対話するためのtelnetの使用プロセスは以下に示されています。
メモキャッシュのメモリの組織は重要です。"-vv"オプションでメモキャッシュを起動すると、生成されるスラブクラスが表示されます。
現在存在するすべてのスラブを表示するには、次のコマンドを使用します:
メモリキャッシュ 1.4.13 に単一のキーを追加することで、スラブクラスがどのように構成され、管理されるかを示しています。例えば:
"stats slabs" コマンドをキー追加後に実行すると、スラブの利用状況に関する詳細な統計が得られます:
この出力は、アクティブなスラブタイプ、使用されているチャンク、および運用統計を明らかにし、読み取りおよび書き込み操作の効率に関する洞察を提供します。
もう一つの便利なコマンド「stats items」は、追い出し、メモリ制約、およびアイテムのライフサイクルに関するデータを提供します:
これらの統計は、異なるコンテンツサイズに対するキャッシュ効率、メモリ割り当て、大きなオブジェクトのキャッシュ能力を含むアプリケーションキャッシングの動作についての教育的な仮定を可能にします。
バージョン1.4.31以前では、キーはスラブクラスによってダンプされます:
例えば、クラス#1のキーをダンプするには:
このメソッドはスラブクラスを反復処理し、キーの値を抽出し、オプションでダンプします。
memcache バージョン 1.4.31 以上では、リリースノートに詳述されている非ブロッキングモードを利用した、プロダクション環境でのキーをダンプするための新しい安全な方法が導入されました。このアプローチは広範な出力を生成するため、効率のために 'nc' コマンドを使用することを推奨します。例としては:
Table from here.
プログラミング言語 | ツール | 機能 | ||
---|---|---|---|---|
PHP | キー名を表示します。 | |||
Perl | キーと値を表示します。 | |||
Ruby | キー名を表示します。 | |||
Perl | CPANモジュールのツール | ached/) | ||
PHP | キーのダンプも可能なMemcacheモニタリングGUI | |||
libmemcached | memcachedプロセスがフリーズします!!! 本番環境で使用する際は注意してください。それでも使用することで1MBの制限を回避し、すべてのキーをダンプできます。 |
memcached 1.4以前では、デフォルトの最大スラブサイズのため、1MBを超えるオブジェクトを保存できないことに注意してください。
許可された最大値より大きなタイムアウトでキーを「設定」または「追加」しようとすると、memcachedはその値をUnixタイムスタンプとして扱うため、期待通りの結果が得られない場合があります。また、タイムスタンプが過去の場合は、何も行われません。コマンドは静かに失敗します。
したがって、最大の寿命を使用したい場合は、2592000を指定してください。例:
ドキュメントには、64ビットのオーバーフロー値を「incr」を使用してラップすると値が消えると書かれていますが、再度「add」/「set」を使用して作成する必要があります。
memcached自体はレプリケーションをサポートしていません。本当に必要な場合は、サードパーティのソリューションを使用する必要があります:
repcached: マルチマスター非同期レプリケーション(memcached 1.2パッチセット)
Couchbase memcached interface: CouchBaseをmemcachedのドロップインとして使用
yrmcds: memcached互換のマスタースレーブキー値ストア
twemproxy (別名nutcracker): memcachedサポートのプロキシ
port:11211 "STAT pid"
"STAT pid"
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)