Необычный способ найти XSS-инъекцию за одну минут (в Яндекс)
При регистрации нового пользователя или обновлении его данных разработчики не забывают валидировать поля ввода, но что будет, если мы поместим полезную нагрузку прямо в аккаунт Google (в поля имени и фамилии), а затем зарегистрируемся на сайт через этот аккаунт? Мы можем получить сохраненный XSS.
Перейдем к примеру
Около месяца назад я начал свое исследование одной из программ вознаграждения за обнаружение ошибок, и с их разрешения я могу раскрыть подробности. это был TimeWeb Ltd — российский хостинг-провайдер.
Как всегда, я начал с регистрации учетной записи, чтобы расширить сферу своей деятельности. Чтобы сэкономить время, я решил зарегистрироваться через социальные сети, используя для этого аккаунт Яндекса (Яндекс — российский аналог Google), где мое полное имя
И после регистрации через эту вредоносную учетную запись Яндекса, в моем общедоступном профиле TimeWeb я увидел
Но вот проблема. Мы не можем зарегистрировать такой аккаунт из-за ограничений на количество спецсимволов в поле имени. Решение довольно простое, разделите полезную нагрузку на две части, одну часть для имени, а другую для фамилии. А поскольку полное имя находится в одном теге <span>, полезная нагрузка будет объединена.
Нам достаточно зарегистрироваться через учетную запись Яндекса на целевом сайте.
И Бум…. У нас есть XSS-уязвимость.
by @LoveBug
от себя:
очень интересное направление атаки. все привыкли фильтровать свои поля, но вот API со сторонних ресурсов никто никогда не фильтрует. не раз встречал такой вектор атаки, даже у крупных урлов
При регистрации нового пользователя или обновлении его данных разработчики не забывают валидировать поля ввода, но что будет, если мы поместим полезную нагрузку прямо в аккаунт Google (в поля имени и фамилии), а затем зарегистрируемся на сайт через этот аккаунт? Мы можем получить сохраненный XSS.
Перейдем к примеру
Около месяца назад я начал свое исследование одной из программ вознаграждения за обнаружение ошибок, и с их разрешения я могу раскрыть подробности. это был TimeWeb Ltd — российский хостинг-провайдер.
Как всегда, я начал с регистрации учетной записи, чтобы расширить сферу своей деятельности. Чтобы сэкономить время, я решил зарегистрироваться через социальные сети, используя для этого аккаунт Яндекса (Яндекс — российский аналог Google), где мое полное имя
«>{{7*7}}<img>
И после регистрации через эту вредоносную учетную запись Яндекса, в моем общедоступном профиле TimeWeb я увидел
«>49<img>. Код выполнен, значит, мы можем провести XSS-атаку. Нам просто нужно зарегистрировать учетную запись Яндекса со следующим именем:
Код:
{{constructor.constructor(‘alert(`XSS`)’)()}}
Но вот проблема. Мы не можем зарегистрировать такой аккаунт из-за ограничений на количество спецсимволов в поле имени. Решение довольно простое, разделите полезную нагрузку на две части, одну часть для имени, а другую для фамилии. А поскольку полное имя находится в одном теге <span>, полезная нагрузка будет объединена.
Нам достаточно зарегистрироваться через учетную запись Яндекса на целевом сайте.
И Бум…. У нас есть XSS-уязвимость.
by @LoveBug
от себя:
очень интересное направление атаки. все привыкли фильтровать свои поля, но вот API со сторонних ресурсов никто никогда не фильтрует. не раз встречал такой вектор атаки, даже у крупных урлов