ファイルのダウンロードのバグを介してPayPalサーバーにアクセスし、リモートコード実行にアクセスした方法

Pentester(侵入テスター)は、ファイルのダウンロードとPayPal支払いシステムサーバーへの侵入のバグをどのようにして見つけたのかを説明します。



画像



みなさんこんにちは!



お元気ですか。 タイトルがあなたを驚かせたのは間違いないでしょう。あなたはここに急いで行き、どこかではなくPayPalサーバーへのリモートアクセスを本当に実現できるかどうかを確かめました。



実際、これは脆弱性(いわゆるPOC)をチェックすることを目的としたかなり単純なハックでした。 私が幸運だったのは、脆弱なドメインの検索と成功した識別だけでした。



画像



少し背景から始めましょう。 以前の投稿でおわかりのように、最近、 OSCP認定試験に合格しました 。 これには本当に多くの日夜のハードワークが必要でした-ほぼ4か月の集中クラスとバグの検索、つまり実際に小遣いを稼ぐことはありませんでした。



普通の人:飲み物、パーティー、楽しみ、二日酔いなどでいっぱいの週末。 「新しいスパイダーマンを見たことがありますか?」 ゲーム・オブ・スローンズ?」



私のような人々:



画像



そのため、ある週末、YouTubeでいくつかのブログやビデオを見ながら、PayPalの資料に出会い、Burp検索プロモーションプログラムのページにアクセスして、次のことを見つけました。



画像



スクリーンショットは、 http://paypal.com/bugbounty/からの通常の回答を示しています。 よく見ると、コンテンツセキュリティポリシーレスポンスのヘッダーに、PayPalドメインの奇妙なリストがあります。 https://*.paypalcorp.comに興味がありました。 これは、バグを見つける際に使用する典型的なアプローチです。 最終目標の作業サブドメインをできるだけ多く探しています。なぜなら、原則として注意を払わずに放置されているのは彼らであり、私のように、最終的にそこに何かを見つけるからです。



SubbruteKnockpyenumallまたは他の同様のユーティリティを使用できます。 私は通常これを行いますが、この週末には怠が良くなり、VirusTotalでスキャンしました。 最終的なリストはここにあります



サブドメインのリストをローカルマシンにコピーし、dig -f paypal + noall + answerを実行して、すべてのサブドメインが実際に指している場所の便利な図を取得しました。



画像



そのうちの1つであるbrandpermission.paypalcorp.comはhttps://www.paypal-brandcentral.com/を指していましたこれは、PayPalのベンダー、サプライヤー、パートナーのオンラインサポートサービスへのリクエストを登録するためのサイトです。 システムには、リクエスト時にドラフトのロゴとグラフィックをダウンロードする機能があります。



ファイルアップロードフォームを見たバグハンターの反応:



画像



キャッチの匂いがする



そこでまずは、finished.jpgという簡単な画像をアップロードして「チケット」を作成しました。 パス/ content / helpdesk / 368/867 /に沿って、finished_thumb.jpgという名前でサーバーに到達しました。 finish.jpgという名前のフォームを介して送信したファイルがアップロードされたかどうかをすぐに確認しました。幸いなことに(この事実は後で役割を果たすでしょう)、彼はそこにいたのです。



次に、アプリケーションがどのように機能するかを少し調べました。ファイルをダウンロードする方法、ファイルを取得する場所、ファイルとそのフォルダーの名前パターンが受け入れられるかどうかです。 カタログ368は作成したチケットの番号にちなんで命名され、867はそれに関連付けられたすべてのファイルが格納されているフォルダーの識別子、つまりチケットに添付されたさまざまなグラフィック素材であることが明らかになりました。



私はすぐに同じ手順を繰り返し、別のアピールを作成しました。これにより、チケットとフォルダーの識別子が連続して生成されたことが明らかになりました。 別のチケットを作成しましたが、今回は、コマンドライン用の簡単な1行のスクリプトを含む.php拡張子のファイルをアップロードしました。



画像



スクリプトは302コードを返しました(つまり、実際には200 OK)。 これは、アプリケーションがファイルの種類、コンテンツなどをチェックしなかったことを意味します。 あります! この瞬間の私の顔:



画像



おい...



302コードを見て、イメージファイルをダウンロードする場合と同様に、リンクをコピーするために新しいチケットを開くために急いで行きました。 ただし、.phpを送信するとき、ダウンロードしたファイルのパスを確認することはできませんでした。 あなたが見つけることができる唯一のものはチケット番号でした。 次に何をする?



画像



さて...



チケット番号(この場合は366)を受信すると、「グラフィック例」がアップロードされたディレクトリの名前がわかります。 欠落しているのは、ファイルが格納されているフォルダーの識別子です(ページのソースコードを可能な限り画像で表示すると、phpファイルが表示されないため)。



しかし、ファイル名-success.phpは知っています(example.jpgがexample_thumb.jpgと同じフォルダーにある前に確認したため)。



そのため、success.thumb.phpでsuccess.phpをロードおよび処理するときに、最初のコードが「食い尽くされた」という事実にもかかわらず、success.phpはサーバー上にまだ存在し、アクセスできます。 また、以前に単純なイメージをロードするときに取得されたフォルダー識別子(867)も知っています。 PHP検証をダウンロードするためのチケット番号は366です。



ダウンロードしたファイルが保存されているフォルダーのIDを強制するだけではどうですか?



画像



ただそれを取って強制することはできません。



したがって、Intruderで識別子500〜1000を使用して次の列挙をすばやく起動しました。

https://www.paypal-brandcentral.com/content/_helpdesk/366/$(bruteforced 500-1000)$ / success.php。 その結果、識別子865で200コードが受信されました。



画像

私の反応:



画像



かっこいい! ファイルがあるディレクトリの「アイデンティティ」を認識したので、コードを実行してみましょう: https : //www.paypal-brandcentral.com/content/_helpdesk/366/865/success.php?cmd=uname-a ; whoami



画像



cat / etc / passwdのちょっとした魔法で、実際にリモートでコードが実行される可能性があることを確認します。



画像



サーバーには、PayPal従業員用の承認ページもありました。



あなたがこのようなものを楽しんだことを願っています! コメントのフィードバックを本当に感謝します;)



循環処理の年表:

〜2017年7月8日18:03-PayPalのバグを報告

〜2017年7月11日18:03-バグ修正

〜2017年7月25日3:30-受賞



しかし、ちょっと待ってください! 話はそこで終わりません。 ここにもう少し種の材料があります。 今週末、私のブログで彼についてお話しします。



画像



アプリケーションの異なるポイントで同じ脆弱性を報告しました。 メッセージの1つはかなり明白だったので、それらは1つのアピールにまとめられ、2つ目は重複としてマークされました。



画像



翻訳者から:

翻訳の公開時点で、 www.paypal-brandcentral.comのサイトは利用できなくなり、HTTP 500エラーが発生しましたが、おそらく元の記事の公開は、他の研究者によるより深刻な脆弱性を明らかにする原因となりました。










All Articles