WebConsole::Middleware
web-console
のgemを読み込んでいると利用できる
https://github.com/rails/web-console/blob/v4.2.1/lib/web_console/middleware.rb
開発時に利用する
/__web_console
のパスにマウントされる
https://github.com/rails/web-console/blob/v4.2.1/lib/web_console/middleware.rb#L9C5
危険性
ブラウザ上からの
REPL
として、rubyのコードを実行するリクエストが送信できる機能がある
https://github.com/rails/web-console/blob/v4.2.1/lib/web_console/middleware.rb#L101
おそらく
CSRF対策
としてajaxのリクエストのみ(=カスタムヘッダが付いたリクエスト)を受け付けている
request.xhr?
による確認
https://github.com/rails/web-console/blob/v4.2.1/lib/web_console/middleware.rb#L90
ローカルホストのIPアドレスからの送信のみを受け付ける
https://github.com/rails/web-console/blob/v4.2.1/lib/web_console/permissions.rb#L8
ActionDispatch::HostAuthorization
が導入される前は、
DNS rebinding
による攻撃で
RCE
が可能だった
Rails 6にDNSリバインディング攻撃防止機能が追加された(翻訳)
現在でも
Reflected XSS
などがあった場合には
RCE
が可能
事例:CVE-2020-8264 Possible XSS Vulnerability in Action Pack in Development Mode#653b90d85515cd00008cc5ee
で利用された