Klatka po klatce.
Prywatność? Niekoniecznie
W sieci pojawił się właśnie opis jak można uzyskać czyjś prywatny film zamieszczony na Youtube.
Przesyłając film do YouTube, możesz wybrać jedno z 3 ustawień prywatności:
- Publiczny - każdy może znaleźć i obejrzeć Twój film
- Niepubliczny - umożliwia oglądanie wideo tylko użytkownikom znającym identyfikator wideo (adres URL)
- Prywatny - tylko Ty możesz oglądać wideo (lub inne konta, którym wyraźnie udzielono na to zgody)
Pierwszą rzeczą, jaką możesz zrobić aby się o przekonać, że kradzież prywatnego filmu jest możliwa, jest przesłanie filmu na kanał YouTube swojego drugiego konta testowego i ustawienie prywatności filmu na Prywatny, aby móc go użyć do testowania. Pamiętaj: zawsze testuj tylko na kontach, które są Twoje!
Google Ads jako wytrych
Główna witryna YouTube wcale nie jest podatna - wydaje się zawsze sprawdzać, czy wideo jest prywatne, czy nie. W takiej sytuacji to co można zrobić to próba znalezienia innych produktów / usług, które nie są Twoim głównym celem, ale w jakiś sposób wchodzą w interakcję z jego zasobami. Jeśli mają dostęp do jego zasobów, możliwe, że nie mają wszystkich poziomów ochrony, jakie zapewnia główny produkt.
Ciekawym celem spełniającym te wymagania jest Google Ads. Jest to rzecz jasna produkt, którego reklamodawcy używają do tworzenia reklam we wszystkich usługach Google, w tym w YouTube. Tak więc reklamy, które dostajesz przed filmami w YouTube, są konfigurowane przez reklamodawców na platformie Google Ads.
Sprawdź oferty pracy na TeamQuest
Dlatego utwórz też konto Google Ads i dodaj nową reklamę, która odtwarzałaby Twój prywatny film, jako możliwą do pominięcia dla użytkowników YouTube. Po utworzeniu reklamy zauważ, ze masz na stronie usługi Google Ads dostępną m.in. stronę o nazwie Videos, na której możesz zobaczyć listę filmów wykorzystanych w swoich reklamach. Kliknięcie wideo otwiera sekcję Analytics dla tego konkretnego wideo. Masz tu wbudowany odtwarzacz, trochę statystyk i interesującą funkcję o nazwie Moments. Pozwala to reklamodawcom „zaznaczać” określone momenty filmu, aby zobaczyć, kiedy dzieją się różne rzeczy (np. sygnatura czasowa, kiedy pojawia się logo firmy).
/GetThumbnails
Za każdym razem, gdy „zaznaczysz moment”, wysyłane jest żądanie POST do punktu końcowego / GetThumbnails z treścią zawierającą identyfikator wideo, np. __ar={"1":"kCTeqs1F4ME","2":"12240","3":"387719230"}
. Parametr __ar 1
to identyfikator wideo, a 2 to czas w milisekundach. Odpowiedzią jest obraz zakodowany w standardzie base64, który stanowi miniaturę wyświetlaną przez reklamy.
Gdy zamienisz w żądaniu identyfikator na prywatne wideo swojego drugiego konta to… tak, dostaniesz odpowiedź w base64! Teraz tylko do Googli wpisujemy „base64 to picture” i wklejasz otrzymany kod do pierwszego znalezionego dekodera. Mamy klatkę! To tzw. błąd IDOR (Insecure Direct Object Reference), w którym możesz pobrać klatkę z dowolnego prywatnego filmu na YouTube.
Na pocieszenie
W sieci istnieją już skrypt proof of concept pobierające kolejne klatki i montujące film. Oczywiście w ten sposób nie poznamy na szczęście przynajmniej ścieżki audio, „jedynie” obraz i to w kiepskiej rozdzielczości. Poza tym trzeba znać identyfikator docelowego wideo a to najczęściej uczyni kradzież prywatnego filmu niemożliwym. Niemniej masowe wycieki powinny być uważane za błąd sam w sobie.
A teraz wróć wykorzystywać Youtube w lepszy sposób.