Hello there, ('ω')ノ
スーパー管理者になるまでのストーリーを。
脆弱性:
ハードコーディングされた認証情報
アカウントの乗っ取り
情報漏えい
記事:
https://medium.com/@omerkepenek/the-story-of-becoming-a-super-admin-ab32db7dd1b3
今回は、脆弱性を見つけるプロセスで最も重要な
フェーズである偵察フェーズから始め。
抽出できる攻撃面が多ければ多いほど、脆弱性が見つかる可能性が高くなるため、
これが最も重要なステップで。
一般的に使用されるもの以外に、常にターゲット ベースの単語リストを作成し。
また、fuzzuli という名前の別の強力なツールもあり。
これは、ドメインに基づいて動的な単語リストを作成することによって
重要なファイルを見つけることを目的とした URL ファジング ツールで。
https://github.com/musana/fuzzuli
ドメイン名のすべての組み合わせを抽出して単語リストを提供し、
特定のマッチャーによるファジングを可能にし。
作成した単語リストと fuzzuli を使用して、ターゲット プログラムの範囲に
含まれるすべてのドメインを FUZZ し始め。
ドメインの 1 つで、アプリケーションのすべてのソース コードを含む
「.dll」ファイルを見つけて。
.NET フレームワークの Common Intermediate Language (CIL) コードは、
ソース コードをコンパイルすると得られる「.dll」および「.exe」ファイルで。
つまり、Web アプリケーションがコンパイルされると、
この「.dll」ファイルにはすべてのソース コードが含まれて。
DLLファイルを発見
ドメインに関連する「.dll」ファイルの名前を非表示にし。
見つけた「.dll」ファイルをすぐにダウンロードし、調べ始め。
「.dll」ファイルを調べるために使用できる逆コンパイラがいくつかあり。
その中には、dotPeek、ILSpy、dnSpy などがあって。
https://github.com/dnSpy/dnSpy
dnSpy 逆コンパイラでファイルを開き、名前空間とクラス名を確認し。
これを行った後、遭遇したこの Web アプリケーションが
API サービスであることに気付き。
WebApiConfig クラス
コード全体を詳しく調べてみると、気になる点があり。
そのうちの 1 つは、このサービスにはさまざまな権限を
持つユーザ アカウントの種類があることで。
アカウントの種類
上のスクリーンショットでわかるように、3 種類のユーザ アカウントがあり。
このサービスで最も権限のあるユーザ アカウントの種類は
スーパー管理者であることを知り。
コードをさらに詳しく調べてみると、ハードコードされた資格情報が気になって。
スーパー管理者の資格情報
これを見てすぐに、それらの資格情報がまだ有効であることを願って。
上のスクリーンショットでわかるように、見つけた資格情報には
スーパー管理者権限があるためで。
すぐにこれらの資格情報を使用できる場所を探し始めたところ、
コード内の資格情報を使用してセッションを
取得できる API エンドポイントを見つけ。
そこから早速セッションを受けてみて。
トークンを取得
ユーザ情報
資格情報はまだ有効で、スーパー管理者アカウントにログインでき。
次に、このアカウントの権限で何ができるかを調べることにして。
「SuperAdmin」権限を持つトークンを使用することで、
アプリケーションで重要な操作を実行できることがわかり。
たとえば、すべてのユーザを一覧表示したり、
別のユーザのパスワードを変更したり、任意のユーザーを削除したり、
新しいユーザを追加したりでき。
もちろん、PoC (概念実証) 用に独自のバックドア ユーザを作成することにして。
スーパー管理者権限で作成されたアカウント
新しいユーザで新しいトークンを取得
リストされたすべてのユーザ
自分のユーザを開くことで、このサービスの最も承認されたユーザの 1 人になって。
Best regards, (^^ゞ