Exploiting Django Debug Mode for Unrestricted Access to the Internal Dashboard? から学ぶ

ソース:

rokkamvamsi18.medium.com

脆弱性:情報漏洩

 

訳:

ターゲットは redacted.com 当面の であるとしましょう。
このテクニックは非常にシンプルですが、やりがいがあり効果的です。 

 

1. ジャンゴとは何ですか?

Django は、Python で書かれた無料のオープンソース Web フレームワークです。
Web サイトと Web アプリケーションを構築および維持するために使用されます。 Django は安全になるように設計されています。
これには、クロスサイト スクリプティング (XSS) 保護、クロスサイト リクエスト フォージェリ (CSRF) 保護、SQL インジェクション保護など、Web アプリケーションを攻撃から保護するのに役立つ機能がいくつか含まれています。

 

2. サブドメインDjango フレームワーク上に構築されているかどうかを確認するにはどうすればよいですか?

ドメイン/サブドメインDjango フレームワークで構築されているかどうかを確認するのは非常にシンプルで簡単です。
Wappalyzer という拡張機能を使用できます。
この拡張機能を使用すると、その特定のドメイン/サブドメインDjango フレームワーク上に構築されているかどうかを簡単に確認できます。

 

Django Web フレームワーク

3. Django フレームワークの「Debug = True」の何が問題ですか?

前に説明したように、Django Web フレームワークは Web サイトの構築と保守に使用されます。
Django フレームワークで 'Debug = True' を設定することは、開発中にデバッグ目的で行うのが一般的です。
ただし、「Debug = True」を指定して Django アプリケーションを運用環境にデプロイするのは危険です。
これにより機密情報が公開され、攻撃者がデータベース スキーマや内部コードなどのアプリケーションの構造に関する詳細を収集できる可能性があります。
攻撃者がこれらの脆弱性を悪用してシステムを侵害する可能性があるため、これはセキュリティ リスクとなる可能性があります。
したがって、セキュリティを強化するには、運用環境で「Debug = False」を設定することが重要です。

 

Django デバッグ モードが true に設定されている

4. デバッグ モードが有効かどうかはどのように判断できますか?

Django Web フレームワーク上に構築されたサブドメインを見つけたら、「https://redacted.com/RANDOM_TEXT」のようなランダム テキストをサブドメインのルートに追加するだけで、デバッグ モードが有効かどうかを簡単に確認できます。
デバッグ モードが True に設定されている場合は、非標準の 404 エラー ページが表示されます。
ただし、デバッグ モードが False の場合は、標準 404 エラー ページが表示されます。 以下の画像をご覧ください。

 

Debug=True の場合、非標準の 404 Not Found ページが表示される

 

Debug=False の場合、標準の 404 Not Found ページが表示される

5. 有効になっているデバッグ モードをどのように利用して、クラウド コスト スケジューラ ダッシュボードへの不正アクセスを取得したか?

このセクションでは、 redacted.com に属する特定の脆弱な IP アドレスにどのようにして到達したのかの全プロセスについて話します。 

 

Reconフロー

ターゲットを狩ろうと決めたときは、Kali Linux を開き、ターゲット [redacted.com] でカスタム メイド スクリプトを実行します。
これにより、偵察プロセスが部分的に自動化されます。
スクリプトの一般的なフローは次のとおりです。

まず、Subfinder、Assestinder、Amass、Knockpy などのさまざまなツールを使用してサブドメイン列挙を実行します。
次に、すべての結果を合計し、重複を除去し、httpx ツールを使用してライブ サブドメインを取得します。 このスクリプトは残りの偵察プロセスを実行し続けます。
ただし、それはこのブログの範囲外なので、別のブログで説明します。

 

##This is part of the recon process

subfinder -d "$target" --silent -o "$HOME/$folder_name/subdomains_subfinder.txt"
assetfinder --subs-only "$target" | tee "$HOME/$folder_name/subdomains_assetfinder.txt"
amass enum -d "$target" -brute | tee "$HOME/$folder_name/subdomains_amass.txt"
crt.sh/crt.sh -d "$target" | sort | uniq | grep -Eo --color=auto "(^|[^a-zA-Z0-9_.-])([a-zA-Z0-9_-]+\.)?${target}" | tee "$HOME/$folder_name/subdomains_crt-sh.txt"
knockpy "$target" | tee "$HOME/bb/$folder_name/subdomains_knockpy.txt"
cat "$HOME/$folder_name/subdomains_subfinder.txt" "$HOME/$folder_name/subdomains_assetfinder.txt" "$HOME/$folder_name/subdomains_crt-sh.txt" | sort -u >> "$HOME/$folder_name/all_subdomains.txt"
cat "$HOME/$folder_name/all_subdomains.txt" | httpx -sc -cl -silent | tee "$HOME/$folder_name/httpx.txt"
echo "Subdomain Enumeration is complete" | notify -silent

##The Remaining process continues

 

カスタム スクリプトがバックグラウンドで実行されている間、私は通常 Shodan Search を実行します。

Django を使用して WebApp を見つけるために使用した Shodan Dorks は次のとおりです。

 

http.component:django ssl:redacted.com

http.title:"DisallowedHost at /"

 

私は通常、上記のdorks からの各結果を新しいタブで開き、手動で検索し。

同様に、 HTTP.component:django ssl:redacted.com を検索したところ、2 つの結果が得られました。
Django の Debug Mode Enabled [True] はどれですか。

 

Cloud Cost Scheduler でデバッグ モードが有効になっています

次に、新しいタブで 2 番目の結果を開くと、Cloud Cost Scheduler のログイン ページが見つかりました。 

 

クラウド コスト スケジューラのログイン ページ

ルート URL にhttps://redacted.com/random_text としてランダムテキストを追加すると、デバッグ モードが True に設定されることがわかりました。
以下の図に示すように、非標準 404 ページが見つかりませんで内部エンドポイントが公開されています。 

 

デバッグ モードが有効になり、内部エンド ポイントが開示されます

さて、私がやったのは、次のようにルート URL に追加して、すべてのエンドポイントをチェックするだけです。 

 

https://redacted.com/task/disable
https://redacted.com/cloud
https://redacted.com/schedule
https://redacted.com/admin
https://redacted.com/adminlte

 

しかし、何も良い結果は得られませんでした。
Hope を失いましたが、1 つのエンドポイントが未チェックのままになっていました。
URL https://redacted.com/adminlte にアクセスしてみました。
驚いたことに、認証なしで Cloud Cost Scheduler ダッシュボードにリダイレクトされました。 

 

ダッシュボードへの不正アクセス

ログインしなくてもすべての情報を見ることができました。

 

あらゆる情報への不正アクセス

 

ほなほな。