ソース:
脆弱性:ファイルアップロード
訳:
まず、管理パネルを見つける必要があり。
私は FFUF ツールを使用して管理パネルを検出し。
これは、ファジングと隠しディレクトリとファイルの検出に重点を置いて。
私が使用したコマンドは次のとおりで。
ffuf -c -u https://targe.com/FUZZ -w /root/Desktop/paths.txt -mc 200-299,300-302,403,500 -r -t 200
コマンドの簡単な説明は次のとおりです。
- -c : 読みやすくするために色付けされた出力を有効にします
- -u : を使用して、ターゲット URL を指定します。 プレースホルダーとして「 FUZZ 」 :ワードリストの値に置き換えられる
- -w : ワードリスト ファイルを指します。この場合は、「/root/Desktop/paths.txt」
- -mc : HTTP ステータス コード 200 ~ 299 (成功)、300 ~ 302 (リダイレクト)、403 (禁止)、および 500 (サーバー エラー) に一致し
- -r : リダイレクトに従います。サーバーがリクエストを別の URL にリダイレクトする場合に役立ち
- -t : 同時スレッドの数を設定します。この場合、処理を高速化するために 200 スレッドが使用されて
このコマンドを実行すると、https://target.com/administrator で管理パネルを正常に検出できて。
これは、侵入テスト プロセスの重要なステップで。
管理者パネルのログインをバイパスする
次のステップは、ログイン画面をバイパスすることで。
フォームが SQL インジェクションに対して脆弱であることがわかるまで、少しテストし。
単純なペイロードを使用することもできて。
認証をバイパスするということは、SQL クエリが常に true を返す必要があると嘘をつき、有効な資格情報なしでアクセスできるようにすることを意味し。
それは次のようになります:
そして今、私たちは次のようになり。
ファイルアップロードチャレンジ
管理パネル内には、ファイルをアップロードするためのアップローダーを持つユーザー プロファイルを設定できる領域があり。
しかし、許可されているのは JPG と PNG ファイルのみであり、一般的な PHP 拡張子のブラックリストを使用しているのではないかと思い。
それで、これは思ったほど悪くはなかったことが判明しました...
バイパス方法を試す
私はさまざまなバイパス技術を試し始め。
このアプリはいくつかの種類のファイルを禁止するブラックリストを実装していたので、そこからインスピレーションを得て。
私が試したテクニックのいくつかを次に示し。
- Adding a Valid Extension before the Execution Extension:
— file.png.php
— file.png.Php5 - Adding Special Character at the End:
— file.php%20
— file.php%0a - Doubling the Extension or Adding Junk Data (Null Bytes) Between Extensions:
— file.php%00.png
— file.php\x00.png
いくつかの追跡とエラーの後、私は phar 拡張子を思い出しました
これはゲームチェンジャーでした…!!
.PHAR ファイルとは何ですか?
PHAR ファイルはZIPまたはTARファイルに似ていますが、PHP 環境に特化していて。
PHP コードやその他のリソースがバンドルされる場合があり。
そのため、ファイルのアップロード制限を回避するための興味深い候補者となり。
について詳しく読むことができます phar 使用して、 このリンクを 。
リモート ファイル アップロードの脆弱性
ここでは RFU (Remote File Upload) を使用し。
これは、アプリケーションがアップロードされたファイルを適切に検証できないときに発生し。
したがって、これにより、攻撃者が悪意のあるファイルをアップロードして実行することが可能になり。
ホワイトリストのアプローチを使用すると、アップロードが許可されるファイルの種類について、このブラックリストの慣行を置き換えることができて。
画期的な方法: PHAR シェルのアップロード
そこで、驚いたことに、PHAR ファイル拡張子がブラックリストの制限を回避する PHAR ファイルを作成して。
上の写真に示すように、ミニアップローダーをアップロードしようとして。
ただし、以下に提供されているコードを使用すると、RCE 脆弱性を作成し、システム コマンドを実行でき。
すでにアップローダーを持っていたので不要でしたが、Web シェルを直接アップロードしてサーバーへのフルアクセスを取得することは可能。
それは非常に危険でした!!
とにかく、私はなんとか権限を昇格させ、やるべきことを達成しました…
重要なポイント
簡単に言うと、留意すべき点がいくつかあります。
- 検索と研究を続ける: 代替の方法論や情報を求めることを躊躇しないでください。 それがあなたの成功への道かもしれません。
- さまざまな方法を試す: 最初の試みで失敗しても意気消沈しないでください。 さまざまな方法を試し続けてください。
- ホワイトリストとブラックリスト: 禁止されているファイルの種類をまとめたブラックリストよりも、許可されたファイルの種類をまとめたホワイトリストを作成する方がはるかに安全です。
- 広範なドキュメント: すべての手順とすべての発見がドキュメント内に配置される必要があります。 精緻で有用なレポートの生成に役立ちます
ほなほな。