
Script de exploit en Python para CVE-2019-5420, dirigido a fuerza bruta de la clave AES GCM de sesión firmada de Ruby on Rails para lograr ejecución remota de código en entornos de desarrollo/staging.
Ruby-on-Rails ofrece tres entornos diferentes en los que puede ejecutarse: desarrollo, prueba y producción. Obviamente, no deberías tener código ejecutándose en desarrollo o prueba disponible en internet, pero (como siempre) ocurre (por ejemplo, en entornos de staging).
Ruby-on-Rails utiliza "sesiones firmadas" ("signed-sessions") para permitir que las personas escalen fácilmente sus aplicaciones. Con el tiempo, la forma en que se manejaban las sesiones cambió. Con 5.2.2, las sesiones son datos codificados en JSON que se protegen mediante AES GCM (aes-256-gcm) de forma predeterminada.
CVE-2019–5420 es en realidad muy simple. La clave utilizada para cifrar las sesiones puede adivinarse (o forzarse por fuerza bruta) en modo de desarrollo, ya que se basa en el nombre de la aplicación. Según el aviso, este problema podría utilizarse potencialmente para obtener ejecución de código (RCE).
Un simple script de Python explota la funcionalidad anterior.