Flask debug = True explotacion

7

Es un hecho bien conocido que la opción debug=True de Flask puede llevar a la ejecución remota de código a través de las capacidades del depurador de werkzeug e incluso varias fueron hackeados . Decidí estudiarlo y resultó que la técnica no funciona si la aplicación está siendo ejecutada por un servidor de aplicaciones de forking como uwsgi o gunicorn. Así que las preguntas son:

  1. ¿Existe la oportunidad de explotar la aplicación Flask con debug=True habilitado incluso si está siendo ejecutado por un servidor de aplicaciones de forking (gunicorn, uwsgi)? No puedo creer que todos estos recursos pirateados hayan utilizado el servidor web de Flask en producción.
  2. ¿Todos los sitios pirateados ejecutaron la aplicación Flask directamente sin utilizar un enfoque "estándar" como nginx + gunicorn / uwsgi + Flask?
pregunta CaptainRR 24.10.2016 - 10:19
fuente

1 respuesta

3

Si habilitamos el depurador con este código:

app = flask.Flask(__name__)
app.debug = True

Eso solo habilita al depurador con el servidor de dev incorporado. Para usar el depurador Werkzeug con otro servidor WSGI, debemos incluir explícitamente el middleware:

from werkzeug.debug import DebuggedApplication 
from waitress import serve
app = DebuggedApplication(app, evalex=True, pin_security=False)
serve(app, listen='*:8080')

Cuando haces esto, con las opciones evalex y pin_security como se mencionó anteriormente, la aplicación es trivialmente vulnerable al compromiso remoto.

    
respondido por el paj28 25.10.2016 - 23:04
fuente

Lea otras preguntas en las etiquetas