Na tropie błędów. Przewodnik hakerski. Peter Yaworski
Чтение книги онлайн.

Читать онлайн книгу Na tropie błędów. Przewodnik hakerski - Peter Yaworski страница 11

Название: Na tropie błędów. Przewodnik hakerski

Автор: Peter Yaworski

Издательство: OSDW Azymut

Жанр: Компьютеры: прочее

Серия:

isbn: 978-83-01-21051-9

isbn:

СКАЧАТЬ który promuje post. Atakujący mógł również manipulować tym tekstem, dołączając do adresu &text=, tak jak tutaj:

      https://hackerone.com/blog/introducing-signal?&u=https://vk.com/ durov&text=another_site:https://vk.com/durov

      Kiedy użytkownik kliknął w poprzedzający link, wyświetliło się przed nim okno pop-up z tweetem zawierającym tekst “another_site: https://vk.com/durov”, zamiast tekstu promującego blog HackerOne.

      Wnioski

      Wypatruj podatności w sytuacjach, gdy strona akceptuje zawartość, łączy się z innym serwisem (takim jak media społecznościowe) i bazuje na obecnym adresie URL w celu wygenerowania zawartości do publikacji.

      W takich przypadkach możliwe jest, że przesyłana zawartość nie podlega żadnym kontrolom bezpieczeństwa, co może prowadzić do podatności HPP.

      Anulowanie subskrypcji powiadomień na Twitterze

      Poziom trudności: Niski

      URL: https://www.twitter.com/

      Źródło: https://blog.mert.ninja/twitter-hpp-vulnerability/

      Data zgłoszenia: 23 sierpnia 2015

      Nagroda: 700 $

      W niektórych przypadkach szukanie podatności HPP z powodzeniem wymaga niemałej wytrwałości. W sierpniu 2015 roku haker Mert Tasci, podczas anulowania subskrypcji powiadomień z Twittera, zauważył interesujący URL (który na potrzeby książki został skrócony):

      https://twitter.com/i/u?iid=F6542&uid=1134885524&nid=22+26& sig=647192e86e28fb6691db2502c5ef6cf3xxx

      Zwróć uwagę na parametr UID. Okazuje się, że jest on numerem ID użytkownika, który jest obecnie zalogowany. Po dostrzeżeniu UID Tasci zrobił to, co na jego miejscu zrobiłaby większość hakerów – spróbował zmienić obecny UID na inny, należący do innego użytkownika, jednak nic się nie stało. Twitter zwrócił błąd.

      Podczas gdy inni w tym miejscu poddaliby się, zdeterminowany Tasci kontynuował; spróbował on dodać drugi parametr UID w taki sposób, że adres URL wyglądał następująco (ponownie, skrócona wersja):

      https://twitter.com/i/u?iid=F6542&uid=2321301342&uid=1134885524&nid= 22+26&sig=647192e86e28fb6691db2502c5ef6cf3xxx

      Sukces! Udało mu się anulować subskrypcję powiadomień e-mail u innego użytkownika. Twitter był podatny na HPP anulowania subskrypcji użytkowników. Powód, dla którego warto zapamiętać tą podatność, wyjaśnił mi FileDescriptor. Chodzi o parametr SIG. Jak się okazuje, Twitter generuje wartość SIG na podstawie wartości UID. Kiedy użytkownik klika w link do anulowania subskrypcji, Twitter weryfikuje, czy link nie został zmodyfikowany, sprawdzając wartości SIG i UID. W przypadku pierwszej próby Tasciego zmiana UID w celu anulowania subskrypcji u innego użytkownika zawiodła, ponieważ podpis nie pasował do tego, którego Twitter oczekiwał. Jednakże, dodając drugi UID, Tasciemu udało się oszukać Twittera, który sprawdzał podpis, używając pierwszego parametru UID, a wykonywał  właściwą akcję przy użyciu tego drugiego.

      Wnioski

      Wysiłek Tasciego pokazuje, jak ważna jest wytrwałość i wiedza. Jeżeli odpuściłby po początkowej próbie zmiany UID na inną wartość lub nie wiedziałby o podatnościach typu HPP, nie otrzymałby nagrody 700 $.

      Ty również miej na oku parametry z liczbami, które są automatycznie zwiększane, takimi jak UID, które znajdują się w żądaniach HTTP: wiele podatności wymaga manipulowania wartościami parametrów takimi jak te, aby spowodować w aplikacji nieoczekiwane zachowania. Przedyskutujemy ten temat dokładnie w rozdziale 16.

      Web Intents Twittera

      Poziom trudności: Niski

      URL: https://www.twitter.com/

      Źródło: https://ericrafaloff.com/parameter-tampering-attack-on-twitter-webintents/

      Data zgłoszenia: Listopad 2015

      Nagroda: Nieujawniona

      W niektórych przypadkach podatność HPP może sygnalizować inne problemy i doprowadzić do znalezienia dodatkowych błędów. Tak właśnie się stało z funkcją Twittera – Web Intents. Dostarcza ona okna pop-up do interakcji z tweetami użytkownika, odpowiedziami, retweetami, polubieniami i pozwala robić to z poziomu innych stron niż Twitter. Web Intent uwalnia użytkowników od potrzeby uwierzytelniania nowej aplikacji w celach interakcji na Twitterze. Rysunek 3.1 pokazuje, jak jedno z tych okien wygląda.

      Rysunek 3.1. Wczesna wersja funkcjonalności Web Intents, która pozwala  użytkownikom na interakcję z zawartością Twittera bez opuszczania strony.  W tym przykładzie użytkownicy mogą polubić tweeta Jacka

      Testując tą funkcję, haker Eric Rafaloff odkrył, że wszystkie cztery rodzaje interakcji – obserwowanie użytkownika, polubienie tweeta, retweetowanie i tweetowanie – były podatne na HPP. Twitter przygotowywał okna za pomocą żądania GET z parametrami URL, takimi jak w przykładzie:

      https://twitter.com/intent/intentType?parameter_name=parameterValue

      Ten adres zawierał intentType i jedną lub więcej dodatkowych par parametrów i ich wartości – na przykład nazwę użytkownika i ID Tweeta. Twitter używał tych parametrów do utworzenia okna pop-up z możliwością polubienia tweeta bądź obserwowania użytkownika. Rafaloff odkrył problem, kiedy utworzył URL z dwoma parametrami screen_name zamiast domyślnie jednego, tak jak tutaj:

      https://twitter.com/intent/follow?screen_name=twitter&screen_name=ericrtest3

      Podczas generowania przycisku Follow, Twitter wykonałby żądanie, korzystając z drugiej wartości parametru screen_name – ericrtest3 – zamiast pierwszej. Co za tym idzie, użytkownik próbujący zaobserwować oficjalny profil Twittera tak naprawdę obserwował testowe konto Rafaloffa. Odwiedzając URL, który przygotował Rafaloff, kod na serwerze Twittera generował poniższy formularz HTML, używając obu parametrów  screen_name:

      

<form class="follow" id="follow_btn_form" action="/intent/ follow?screen_name=ericrtest3" method="post">

      <input type="hidden" name="authenticity_token" value="…">

      

<input type="hidden" name="screen_name" value="twitter">

      СКАЧАТЬ