Читать книгу Na tropie błędów. Przewodnik hakerski - Peter Yaworski - Страница 30
4.
CROSS-SITE REQUEST FORGERY
Odłączenie Twittera z Shopify
ОглавлениеPoziom trudności: Niski
URL: https://twitter-commerce.shopifyapps.com/auth/twitter/disconnect/
Źródło: https://www.hackerone.com/reports/111216/
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.