Привет %username%
Знаешь ли ты, как поведет себя веб-приложение, если передать ему несколько параметров с одним именем?
А вот теперь сравни:
- https://yandex.ru/search/?text=несколько&text=параметров
- https://go.mail.ru/search?q=несколько&q=параметров
- https://www.google.ru/?q=несколько&q=параметров
В зависимости от поведения, эти свойства можно использовать по-разному, подробнее можно почитать, например, тут. Для php, типичное поведение — это использование последнего указанного параметра, если таковых несколько.
Так суть поста-то в чём. Многие используют красивенькие кнопочки на сайтах, вида понравился материал — поделись! Так эти кнопочки могут быть не только уязвимы к xss РАЗ, ДВА (by @HVMephisto) так еще и к parameter pollution.
А вот тебе пример, любая статья на lenta.ru. Ссылка для шаринга будет иметь вид:
https://vk.com/share.php?url=http://lenta.ru/news/2014/09/19/assangegoogle/
Ок, странице share.php предается параметр url с сайтом. А если будет ДВА URL? Тут и появляется возможность эксплуатации. А вектор такой, ты даешь ссылку на проверенный сайт, пользователь решается поделиться с друзьями — в ленту публикуется совершенно другая ссылка.
Вот, для примера, попробуй расшарить ЭТУ ССЫЛКУ
А все происходит потому, что некоторые передают параметры без urlencode, что позволяет эти параметры подменять (добавляя новые). Особенно весело смотрится подмена картинок.
Сайтов, в которых можно провернуть этот трюк — много. Будь внимателен. И это. Шарь давай, шарь!
благодарю за трек