Python Internal Read Gadgets

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricks をサポートする他の方法:

基本情報

Python Format StringsClass Pollutionなどのさまざまな脆弱性は、Python内部データを読み取ることを可能にするが、コードの実行は許可しないかもしれません。したがって、ペンテスターはこれらの読み取り権限を最大限に活用して、機密特権を取得し脆弱性をエスカレートする必要があります。

Flask - シークレットキーの読み取り

Flaskアプリケーションのメインページにはおそらく**appグローバルオブジェクトがあり、ここにシークレットが設定されている**でしょう。

app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'

この場合、Pythonサンドボックス回避ページからグローバルオブジェクトにアクセスするためのガジェットを使用してこのオブジェクトにアクセスすることが可能です。

脆弱性が別のPythonファイルにある場合、メインのファイルにアクセスするためのガジェットが必要で、Flaskのシークレットキーを変更してこのキーを知って特権を昇格するためにグローバルオブジェクト app.secret_key にアクセスする必要があります。

この解説からのこのようなペイロード:

__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key

このペイロードを使用して、app.secret_key(アプリ内の名前が異なる場合があります)を変更し、新しい特権を持つflaskクッキーに署名できるようにします。

Werkzeug - machine_id と node uuid

この解説からのペイロードを使用するとmachine_iduuid ノードにアクセスできるようになります。これらは、Werkzeugピンを生成するために必要な主要な秘密であり、デバッグモードが有効の場合に /console でPythonコンソールにアクセスするために使用できます。

{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}

app.pyへのサーバーのローカルパスを取得するには、ウェブページでエラーを発生させることで、パスを取得できます。

もし脆弱性が別のPythonファイルにある場合は、メインのPythonファイルからオブジェクトにアクセスするFlaskの以前のトリックをチェックしてください。

htARTE(HackTricks AWS Red Team Expert)で**ゼロからヒーローまでのAWSハッキング**を学びましょう!

HackTricksをサポートする他の方法:

Last updated