Ruby On Rails はよく知られた Ruby Web 開発フレームワークであり、開発環境では Sprockets を静的ファイルサーバーとして使用します。Sprockets は静的リソースファイルをコンパイルおよび配布する Ruby ライブラリです。
Sprockets 3.7.1 およびそれ以前のバージョンには、二次デコードによるパストラバーサルの脆弱性があります。攻撃者は %252e%252e/ を使用してルートディレクトリにアクセスし、ターゲットサーバー上の任意のファイルを読み取りまたは実行できます。
参考リンク:
以下のコマンドを実行してください:
docker-compose up -d
http://your-ip:3000 にアクセスすると、ウェルカムページが表示されます。
http://your-ip:3000/assets/file:%2f%2f/etc/passwd に直接アクセスするとエラーが発生します。これは、 ファイルが許可されたディレクトリに含まれていないためです。
/etc/passwd
エラーページから許可されたディレクトリの一覧を取得できます。その中から例えば /usr/src/blog/app/assets/images を選択し、%252e%252e/ を使用して親ディレクトリにジャンプし、最終的に /etc/passwd ファイルを読み取ります:
