Python Internal Read Gadgets
基本情報
Python Format StringsやClass Pollutionなどのさまざまな脆弱性は、Python内部データを読み取ることを可能にするが、コードの実行は許可されないかもしれません。したがって、ペンテスターはこれらの読み取り権限を最大限に活用して、機密特権を取得し脆弱性をエスカレートさせる必要があります。
Flask - シークレットキーの読み取り
Flaskアプリケーションのメインページにはおそらく**app
というグローバルオブジェクトがあり、この中にシークレットが設定**されているでしょう。
この場合、Pythonサンドボックス回避ページからグローバルオブジェクトにアクセスするために、どんなガジェットでもこのオブジェクトにアクセスすることが可能です。
脆弱性が別のPythonファイルにある場合、メインのファイルにアクセスするためにファイルをトラバースするガジェットが必要で、Flaskのシークレットキーを変更してこのキーを知ることで権限を昇格することができます。
この解説からの以下のようなペイロード:
このペイロードを使用して、app.secret_key
(アプリ内の名前が異なる場合があります)を変更して、新しい特権のFlaskクッキーに署名できるようにします。
Werkzeug - machine_id と node uuid
この解説からのペイロードを使用すると、machine_id と uuid ノードにアクセスできるようになり、これらはWerkzeugピンを生成するために必要な主要な秘密です。デバッグモードが有効になっている場合、/console
でPythonコンソールにアクセスするために使用できます。
app.py
へのサーバーのローカルパスを取得することができることに注意してください。これはウェブページでエラーを生成し、パスを取得します。
もし脆弱性が別のPythonファイルにある場合は、メインのPythonファイルからオブジェクトにアクセスするFlaskの以前のトリックをチェックしてください。
Last updated