脆弱性VKontakte:任意のユーザーのダイアログおよび隠しアルバムから写真をプレビューするアクセス

まもなく



vk.comのモバイル版に脆弱性が発見されました。 ユーザーダイアログからの写真を含む非表示の写真のプレビューを表示でき、この非表示の写真を気に入ったユーザーに関する情報を取得できます。 現時点では、この脆弱性はもう存在していません-6か月前に修正されました。 VKontakteは700ドルの金額に感謝の意を表明しました(いいえ、投票ではありません)。



それがすべて始まった方法



セッション中、試験の準備をするだけでなく、すべてに気を取られます。 そこで、試験の準備をする代わりに、hackerone.comでVKontakteのBug Bountyプログラムに関する記事を見ので、脆弱性を探すことにしました。 なんらかの理由で、私はすぐに隠されたプライバシー設定の写真に関連する脆弱性を探すために引き付けられました。



サイトのフルバージョンで脆弱性を検索する



隠された写真のIDが私に知られていると仮定すると(その検索については、以下を参照)、私はすべての種類のクエリでこのIDをcurlで置き換えようとしました-私はアルバムに隠された画像を保存し、自分にマークを付けて、再投稿などを試みました 隠された写真を壁に送ろうとするまで、何も良い結果は得られませんでした。 結果は奇妙でした-コンソールでは、クエリは正しい結果を返し、壁に新しい投稿が表示されましたが、その内容は空でした。 私が試したことがなかったので、サーバー上で壁に隠された写真を送信する試みはすべて停止されました-投稿は空でした。



モバイル版への移行







次に、 このコメントを思い出し、モバイル版のサイトでも同じことをしようと決めました。



写真を壁に送る:



curl 'http://m.vk.com/wall53083705' -H 'Cookie: remixsid=#remixsid' --data 'act=post&hash=#hash&attach1_type=photo&attach1=id_id' # id         id_id
      
      





このリクエストは正しく実行されませんでしたが、ページを更新したため、送信フォームに添付された写真の小さなコピーが表示されたことに驚きました。







写真の最大サイズは130x130ですが、これは、たとえば写真の顔を認識するのに十分です。 写真全体へのリンクを取得しようとしても、何も起こりませんでした。 どうやら、 この脆弱性が解決した後、モバイル版のサイトからフルサイズへの直接リンクを取得することはできません。



写真の列挙



脆弱性が見つかりました。 見つかった脆弱性を悪用するには、攻撃された写真のIDを取得する必要があります。



写真のidは2つの部分で構成されます:photo12345_330000000(Owner_id写真のid)、2番目の部分は写真から写真に成長しますが、これは通常の自動インクリメントではありません。 ステップを選択するアルゴリズムは不明であるため、ステップ1で繰り返します。



列挙には、api photos.deleteメソッドを使用します。 このメソッドは、すべての既存の写真(非表示の写真を含む)についてerror_code :15を返します。また、存在しないすべてのID写真については、1つが返されます。



検索速度


この記事から写真をすばやくソートする方法を学ぶことができます。 はい、その中のデータは最新ではありませんが、写真の数が1年で2倍になったことを考慮しても、検索時間は許容範囲内です。

たとえば、昨年、ユーザーの写真への直接リンクを見つけるには、3,000万(_320000000から_350000000)のさまざまなリンクのバリエーションを整理するだけで済みます。




指定された記事の検索アクセラレーションを使用して、ユーザーの写真を整理できます。

昨日のすべての写真を1分で、7分で-先週アップロードしたすべての写真を、20分で-先月、2時間で-昨年取得します。




スクリーニングのオープン/非表示


ユーザーのすべての(非表示および開いている)写真へのリンクを受け取ったら、photos.getByIdメソッドを使用して写真に関する情報を取得することで、非表示の写真のみを選択できます。 このメソッドによって情報が返されない写真は非表示になります。



ユーザー情報のように



隠された写真が好きなユーザーを見つけることもできました。 likes.getListメソッドは、指定されたオブジェクトをリストに追加したすべてのユーザーを返しましたが、このメソッドを起動するユーザーに対してこのオブジェクトが非表示になっている場合でも気に入っています。



ハッカーロンのレポート



私のレポートは6月に開かれました。 彼らは何も言わずに2ヶ月半後に脆弱性を閉じました。 1か月後、脆弱性が確認されて終了したという回答を受け取りました。 そしてしばらくして、彼は報酬を受け取りました。



PS:新しいPayPalアカウントに初めてhackerone.comから報酬を撤回しようとしている人のために-条件を注意深く読むことをお勧めします。 Paypalは、資金を転送する際、お客様の同意なしに、料金をお客様のプロフィールに示されている国の通貨に換算する場合があります。



All Articles