技術共有

dockerを使用して脆弱性環境を構築し、SSRF Redisを使用してcentosとubuntuの公開鍵を書き込み、パスワードフリーのログインを実現します。

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. 実験環境

kali: kali で Docker コンテナ環境を構築します。ここでは主に最初のものを使用します。

Redis はデータベースとして、データをメモリに書き込むことができます。ssrf リクエストを使用して、サーバーが独自の公開キーを書き込んでパスワードなしのログインを実験できるようにします。

2. 実験プロセス

事前準備とテスト

Redis はキー値の形式でデータを保存します。ここでは docker で構築された centos 環境を使用します。

次のコマンドを使用して centos コンテナに入ります。

docker exex -it 容器的编号 /bin/bash

centos には redis-server を実行するためのスクリプトがすでに含まれているため、コンテナ内で redis-cli を有効にするだけで済みます。

正常に書き込めるかテストします。 図のように、書き込んだ内容やディレクトリを変更することができます。

ファイル名も変更できるため、公開キーを作成してターゲット サーバーに書き込み、パスワードなしのログインを実現できます。

修正後保存すると、図のように書き込み成功です!

発生した問題と解決された問題

サーバーに接続できない状況がある場合は、./start.sh を使用してこのスクリプトを実行できます。

SSRF の簡単な紹介と実験の開始

サーバー経由でリクエストを偽造し、gopher プロトコルまたは time dict を使用して redis をリクエストし、ファイルを書き込みます。

gopher 生成スクリプト

生成されたペイロード

リクエストを作成し、上記の内容を貼り付けて「Fetch」をクリックします。

発生した問題

初めて Fetch を実行したところ、ファイルが存在しないことがわかりました。これは、centos 環境で独自の公開鍵が生成されていないためであり、書き込みができないため、ssh-keygen を使用して生成する必要があります。公開鍵を事前にcentosに保存しておきます。

結果

公開キーがターゲット サーバーに正常に書き込まれたことがわかります。

その後、パスワードなしで ssh 経由でログインできるようになり、ログインが成功したことがわかります。

発生した問題

Dockerfile 環境にいくつかの問題があり、Docker イメージのポート 22 が起動できないため、ファイルが変更され、/usr/sbin/sshd を実行して sshd を起動します。

上記のダウンロードの失敗が発生した場合は、次の図に示すようにファイルを初期化するだけで済みます。

3. まとめ

centos と ubuntu の手順はほぼ同じですが、redis の保護メカニズムにより、次のエラーが発生し、一部の属性を変更できなくなります。解決策は、保護モードをオフにして以下を使用することです。指示;

config set protected-mode no

Redis のバージョン制限により、7.2.5 はセキュリティが高すぎてパスワードなしの ssh ログインが失敗するため、ここに引っ張ってきました。

バージョン5.0.5

次に、同じ操作を使用してパスワードなしのログインを実現します。