web-dev-qa-db-ja.com

Flask debug =真の搾取

Flaskのdebug=Trueオプションがwerkzeugデバッガー機能といくつかの リソースがハッキングされた を介したリモートコード実行につながる可能性があることはよく知られている事実です。調べてみると、uwsgiやgunicornなどのforkアプリケーションサーバーでアプリを実行している場合、この手法は機能しないことがわかりました。だから質問は:

  1. Flask debug=Trueが有効なアプリケーションを、フォークしているアプリケーションサーバー(gunicorn、uwsgi)で実行されている場合でも)利用する機会はありますか?このハッキングされたすべてのリソースが信じられません本番環境では組み込みのFlaskのWebサーバーを使用しました。
  2. ハッキングされたすべてのサイトは、nginx + gunicorn/uwsgi + Flaskのような「標準的な」アプローチを使用せずにFlaskアプリを直接実行しましたか?
7
CaptainRR

このコードでデバッガを有効にすると:

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

これは、組み込みのdevサーバーを備えたデバッガーのみを有効にします。 Werkzeugデバッガーを別のWSGIサーバーで使用するには、ミドルウェアを明示的に含める必要があります。

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

これを行うと、evalexおよびpin_security上記のオプションを選択すると、アプリはリモートの侵害に対して自明に脆弱になります。

3
paj28