11211 - Pentesting Memcache
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
ウィキペディアから:
Memcached(発音:mem-cashed、mem-cash-dee)は、一般的な分散メモリキャッシングシステムです。外部データソース(データベースやAPIなど)を読み取る回数を減らすために、データやオブジェクトをRAMにキャッシュすることで、動的なデータベース駆動のウェブサイトの速度を向上させるためにしばしば使用されます。
MemcachedはSASLをサポートしていますが、ほとんどのインスタンスは認証なしで公開されています。
デフォルトポート: 11211
memcacheインスタンス内に保存されているすべての情報を抽出するには、次の手順を実行する必要があります。
アクティブアイテムのあるスラブを見つける
前に検出したスラブのキー名を取得する
キー名を取得して保存されたデータを抽出する
このサービスは単なるキャッシュであるため、データが現れたり消えたりすることを忘れないでください。
memcacheの領域では、データをスラブによって整理するためのプロトコルであり、保存されたデータを検査するための特定のコマンドが存在しますが、顕著な制約があります:
キーはスラブクラスごとにのみダンプでき、同様のコンテンツサイズのキーがグループ化されます。
スラブクラスごとに1ページの制限があり、これは1MBのデータに相当します。
この機能は公式ではなく、いつでも中止される可能性があるため、コミュニティフォーラムで議論されています。
数ギガバイトのデータから1MBしかダンプできないという制限は特に重要です。しかし、この機能は特定のニーズに応じてキーの使用パターンに関する洞察を提供することができます。メカニクスにあまり興味がない方は、ツールセクションを訪れると、包括的なダンプのためのユーティリティが見つかります。あるいは、memcachedセットアップとの直接的な対話のためにtelnetを使用するプロセスは以下に示されています。
Memcacheのメモリの組織は重要です。"-vv"オプションでmemcacheを起動すると、生成されるスラブクラスが表示されます。
現在存在するすべてのスラブを表示するには、次のコマンドを使用します:
メモリキャッシュ 1.4.13 に単一のキーを追加することで、スラブクラスがどのように構成され、管理されるかを示しています。例えば:
"stats slabs" コマンドをキー追加後に実行すると、スラブの利用状況に関する詳細な統計が得られます:
この出力は、アクティブなスラブタイプ、使用されているチャンク、および運用統計を明らかにし、読み取りおよび書き込み操作の効率に関する洞察を提供します。
もう一つの便利なコマンド「stats items」は、追い出し、メモリ制約、およびアイテムのライフサイクルに関するデータを提供します:
これらの統計は、異なるコンテンツサイズに対するキャッシュ効率、メモリ割り当て、大きなオブジェクトのキャッシュ能力を含むアプリケーションキャッシングの動作についての教育的な仮定を可能にします。
バージョン1.4.31以前では、キーはスラブクラスによってダンプされます:
例えば、クラス#1のキーをダンプするには:
このメソッドはスラブクラスを反復処理し、キーの値を抽出し、オプションでダンプします。
memcache バージョン 1.4.31 以上では、リリースノートに詳述されている非ブロッキングモードを利用した、プロダクション環境でのキーをダンプするための新しい安全な方法が導入されました。このアプローチは広範な出力を生成するため、効率のために 'nc' コマンドを使用することを推奨します。例としては:
Table from here.
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)