Werkzeug / Flask Debug
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する: HackTricks Training GCP Red Team Expert (GRTE)
あなたのウェブアプリ、ネットワーク、クラウドに対するハッカーの視点を得る
実際のビジネスに影響を与える重大で悪用可能な脆弱性を見つけて報告します。 20以上のカスタムツールを使用して攻撃面をマッピングし、特権を昇格させるセキュリティ問題を見つけ、自動化されたエクスプロイトを使用して重要な証拠を収集し、あなたの努力を説得力のある報告書に変えます。
デバッグがアクティブな場合、/console
にアクセスしてRCEを取得することを試みることができます。
インターネット上には、これやmetasploitのものなど、いくつかのエクスプロイトがあります。
場合によっては、/console
エンドポイントがピンで保護されることがあります。ファイルトラバーサル脆弱性がある場合、そのピンを生成するために必要なすべての情報を漏洩させることができます。
アプリでデバッグエラーページを強制的に表示させて、これを確認します:
コンソールがロックされたシナリオに関するメッセージは、Werkzeugのデバッグインターフェースにアクセスしようとしたときに表示され、コンソールを解除するためにPINが必要であることを示しています。コンソールPINを悪用するために、Werkzeugのデバッグ初期化ファイル(__init__.py
)におけるPIN生成アルゴリズムを分析することが提案されています。PIN生成メカニズムは、Werkzeugソースコードリポジトリから調査できますが、バージョンの不一致の可能性があるため、実際のサーバーコードをファイルトラバーサル脆弱性を通じて取得することが推奨されます。
コンソールPINを悪用するには、2つの変数セット、probably_public_bits
とprivate_bits
が必要です:
probably_public_bits
username
: Flaskセッションを開始したユーザーを指します。
modname
: 通常はflask.app
として指定されます。
getattr(app, '__name__', getattr(app.__class__, '__name__'))
: 一般的にFlaskに解決されます。
getattr(mod, '__file__', None)
: Flaskディレクトリ内のapp.py
へのフルパスを表します(例:/usr/local/lib/python3.5/dist-packages/flask/app.py
)。app.py
が適用できない場合は、app.pyc
を試してください。
private_bits
uuid.getnode()
: 現在のマシンのMACアドレスを取得し、str(uuid.getnode())
がそれを10進数形式に変換します。
サーバーのMACアドレスを特定するには、アプリで使用されているアクティブなネットワークインターフェース(例:ens3
)を特定する必要があります。確信が持てない場合は、/proc/net/arp
をリークしてデバイスIDを見つけ、次に/sys/class/net/<device id>/address
からMACアドレスを抽出します。
16進数のMACアドレスを10進数に変換する方法は以下の通りです:
get_machine_id()
: /etc/machine-id
または/proc/sys/kernel/random/boot_id
からのデータを、最後のスラッシュ(/
)の後の/proc/self/cgroup
の最初の行と連結します。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)