Na tropie błędów. Przewodnik hakerski. Peter Yaworski
Чтение книги онлайн.
Читать онлайн книгу Na tropie błędów. Przewodnik hakerski - Peter Yaworski страница 15
Data zgłoszenia: 17 stycznia 2016
Nagroda: 500 $
Kiedy szukasz potencjalnych podatności CSRF, miej na uwadze żądania GET, które modyfikują dane po stronie serwera. Na przykład haker odkrył podatność w funkcji Shopify, która integrowała Twittera na stronie, aby dać możliwość właścicielom sklepów tweetować o ich produktach. Ta funkcja pozwalała również rozłączać konta Twittera z połączonego sklepu. URL, który rozłączał konto, wyglądał następująco:
https://twitter-commerce.shopifyapps.com/auth/twitter/disconnect/
Jak się okazuje, odwiedzenie tego linku powodowało wysłanie poniższego żądania GET:
GET /auth/twitter/disconnect HTTP/1.1
Host: twitter-commerce.shopifyapps.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0)
Gecko/20100101 Firefox/43.0
Accept: text/html, application/xhtml+xml, application/xml
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://twitter-commerce.shopifyapps.com/account
Cookie: _twitter-commerce_session=REDACTED
Connection: keep-alive
W dodatku, kiedy ten link został zaimplementowany, Shopify nie weryfikował w żaden sposób wiarygodności żądań GET wysłanych do niego, czyniąc tym samym URL podatnym na CSRF.
Haker WeSecureApp, który wysłał zgłoszenie, dołączył następujący dokument HTML jako dowód:
<html>
<body>
<img src="https://twitter-commerce.shopifyapps.com/auth/twitter/disconnect">
</body>
</html>
Przy otwarciu dokument HTML powodował automatyczne wysłanie żądania GET na adres https://twitter-commerce.shopifyapps.com przez atrybut src w znaczniku <img>
. Jeśli ktoś z połączonym kontem Twittera z Shopify odwiedził witrynę z powyższym tagiem, jego konto na Twitterze zostałoby odłączone od usługi Shopify.Wnioski
Miej na uwadze żądania HTTP, które wykonują pewne działania na serwerze, takie jak odłączenie konta na Twitterze przez żądanie GET. Jak już zostało wspomniane wcześniej, żądania GET nie powinny nigdy modyfikować żadnych danych na serwerze. Taką podatność mógłbyś znaleźć, korzystając z serwera proxy, takiego jak Burp lub ZAP, w celu monitorowania żądań HTTP wysyłanych do Shopify.
Zmiana stref użytkowników Instacart
Poziom trudności: Niski
URL: https://admin.instacart.com/api/v2/zones/
Źródło: https://hackerone.com/reports/157993/
Data zgłoszenia: 9 sierpnia 2015
Nagroda: 100 $
Kiedy szukasz możliwych miejsc do testów, zwracaj uwagę zarówno na punkty końcowe API, jak i ich strony internetowe. Instacart to aplikacja do dostarczania produktów spożywczych, która pozwala dostawcom na ustawianie stref, w których będą pracować. Strona aktualizowała te strefy przez żądanie POST do administracyjnej subdomeny Instacart. Pewien haker odkrył, że punkt końcowy strefy na tej subdomenie był podatny na CSRF. Na przykład można było modyfikować strefę ofiary, używając poniższego kodu:
<html>
<body>
<form action="https://admin.instacart.com/api/v2/zones" method="POST">
<input type="hidden" name="zip" value="10001" />
<input type="hidden" name="override" value="true" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>
W tym przykładzie haker utworzył formularz HTML w celu wysłania żądania POST do punktu końcowego /api/v2/zones
. Haker dołączył dwa ukryte wejścia: jedno do zmiany kodu pocztowego nowej strefy na 10001 oraz drugie w celu ustawienia parametru override na true , dzięki czemu wartość zip użytkownika została podmieniona na tę podaną przez hakera. Dodatkowo haker dołączył przycisk submit w celu utworzenia żądania POST , w odróżnieniu od przykładu z Shopify, który korzystał z funkcji automatycznego przesyłania w JavaScript.Choć ten przykład jest już pomyślny, haker mógł poprawić skuteczność exploita, używając technik opisanych wcześniej, takich jak użycie ukrytej ramki iFrame w celu automatycznego wysłania żądania w imieniu ofiary. Pozwoliłoby to zademonstrować, jak wyglądałoby wykorzystanie tej podatności w akcji; podatności, które są całkowicie poddane kontroli hakera, mają znacznie większe szanse na powodzenie niż te, które nie są.
Wnioski
Kiedy szukasz podatności, oprócz samych stron internetowych bierz również pod uwagę punkty końcowe API, które stanowią świetne źródło potencjalnych podatności. Okazjonalnie deweloperzy zapominają, że hakerzy są w stanie znaleźć i wykorzystać je, ponieważ nie są tak łatwo dostępne jak zwykłe strony internetowe. Na przykład aplikacje mobilne często wykonują żądania HTTP do punktów końcowych API, które możesz monitorować przy użyciu Burp lub Zap, tak samo jak w przypadku stron internetowych.
Przejęcie konta Badoo
Poziom trudności: Średni