Разрабатывая приложение, использующее Instagram API, я заметил, что мне приходят не преобразованные теги. Безусловно, такая проблема решается за пару строчек кода. Но я подумал, а что если не все разработчики преобразовывают теги в сущности перед выводом на страницу, полностью доверяя API. Кто будет ожидать, что в описании страницы Instagram будет JS скрипт вместо текста?
Я нашел такие сайты.
Для начала добавил в описание профиля подключение удаленного скрипта js, а в описание некоторых фотографии строку
<script >alert(document.cookie);</script>
и несколько хештегов, среди которых #instagramapi.
Первый сайт, который я нашел — это Iconosquare.
IconoSquare — полезное приложение для анализа и управления вашим аккаунтом в Инстаграм. Удобный веб-интерфейс сэкономит время и поможет в общении с подписчиками. Через IconoSquare можно просматривать профили или искать по хэштегу
На этом сайте в решил искать свою фотографию по хештегу #instagramapi, в моем случае это была фотография с котом.
При нажатии на фотографию меня перекидывало на страницу, где содержится описание фотографии, но Iconosquare забыли преобразовать html-теги в сущности. Это дало возможность выполнения XSS.
Открыв исходники страницы, сразу стало понятно, что они забыли преобразовать теги в мета описании страницы.
На странице пользователя они не преобразовывали имя и описание профиля Instagram — и вот результат.
Следующий сайт, который я нашел — это facegram.io.
Как я понял, facegram.io — это еще один Instagram Web Viewer. У сервиса около 50 000 подписчиков на Facebook, так что, думаю, его можно считать популярным.
Тут мы тоже ищем по хештегу #instagramapi и вот результат:
Аналогично на странице пользователя.
На самом деле я нашел 27 сайтов, где можно провести XSS-атаку. Думаю, что не обязательно расписывать их всех, вот ссылки на страницы с XSS.
tagboard.com/instagramapi/search
pinsta.me/asset_93
yooying.com/p/783308509456027184_220257738
instaliga.com/asset_93/783308509456027184_220257738
collec.to/i/783308509456027184_220257738
songery.net/img/783308509456027184_220257738
carouselle.me/#/by/asset_93
picbi.com/asset_93
webgram.ru/p/asset_93/
twitnow.ru/instagram/u?q=220257738&u=asset_93
instagramsearchonline.com/tag/instagramapi/#.VL7H3EesXfI
japastagram.com/ph/?q=902278032086716165_220257738
www.lakako.com/post/783308509456027184
pingram.me/asset_93
www.netstagram.com/user/220257738
tagstag.com/user/asset_93
the-photo-flow.com/search.html?q=asset_93
instaprof.appspot.com/profile/asset_93
facegram.io/u/asset_93&script-alert-script&220257738
instagramology.com/media/902278032086716165_220257738
bitroad.net/u/asset_93&Asset-Mamyraimov
sharetagram.com/user/220257738/asset_93
www.vinevideoviewer.com/u/220257738
Нужно искать по хештегу instagramapi, либо же по пользователю asset_93.
techslides.com/demos/instagram-viewer/
instaviewer.net/
findgram.com/
Я пытался написать в Iconosquare и в поддержку нескольких других сайтов, но они никак не отреагировали. Может быть, кто-нибудь из вас сможет сообщить разработчикам этих сайтов об уязвимости.
P.S. Эта статья написана, чтобы сообщить разработчикам о том, что не стоить доверять полученным от Instagram API данным.
P.P.S. Аналогичная ситуация и с приложениями, использующими Facebook API. Вот пример.
Автор: JIenpukoH