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