
Rails開発モードでのエクスプロイト。ターゲットアプリケーションについての知識があれば、攻撃者は自動生成された開発モードのシークレットトークンを推測することが可能です。このシークレットトークンは、他のRails内部機能と組み合わせて使用することで、リモートコード実行エクスプロイトへと昇格させることができます。
開発モードのRails <5.2.2.1、<6.0.0.beta3におけるリモートコード実行の脆弱性により、攻撃者が自動生成された開発モードのシークレットトークンを推測できる可能性があります。このシークレットトークンは、他のRails内部機構と組み合わせてリモートコード実行エクスプロイトに昇格させることができます。CVE-2019-5420用のこのPoCコードは、リモートコード実行自体は行わず、管理者アカウントへの権限昇格を行います。
cookieの値をコピーし、11行目の"VALUE_OF_THE_COOKIE"に置き換えてください:
cookie = CGI.unescape "VALUE_OF_THE_COOKIE" # put in the value of your cookie here
さらに、"NAME::Application"をアプリケーションの名前に置き換えてください。たとえば、アプリケーション名が"test"の場合、"test::Application"になります:
secret = Digest::MD5.hexdigest("NAME::Application") # the name of the ruby on rails application, either bruteforce or have to be known directly
エクスプロイトを実行し、cookieの出力をコピーしてください。それをWebアプリケーションのcookieと置き換えてください:
ruby CVE-2019-5420.rb