>
Июнь 2018
Пн Вт Ср Чт Пт Сб Вс
« Апр    
 123
45678910
11121314151617
18192021222324
252627282930  

Что такое HPP (HTTP Parameter Pollution) атака? Уроки хакинга. Глава 3

HTTP Parameter Pollution, или HPP, происходит, когда сайт принимает пользовательский ввод и использует его для создания запроса к другой системе без валидации этого ввода. Это может пройзойти одним из двух способов, через сервер (или бэкенд) и через клиентскую сторону.

Картинки по запросу HTTP Parameter Pollution

Silverlightfox приводит прекрасный пример серверной HPPатаки на StackExchange предположим, у нас есть следующий сайт, https://www.example.com/transferMoney.php, который через метод POST принимает следующие параметры:

Когда приложение обрабатывает этот запрос, оно создает собственный POST запрос к другому компоненту в бэкенде системы, который, в свою очередь, выполняет транзакцию с фиксированным параметром toAccount.

• ОтдельныйURLбэкенда:https://backend.example/doTransfer.php
• Отдельныепараметрыдлябэкенда:toAccount=9876&amount=100

Теперь, если бэкенд, получая дублирующиеся параметры, принимает только последний параметр, можно предположить, что хакер сможет изменить POST-запрос к сайту для отправки следующего параметра toAccount:

Сайт, уязвимый к HPP атаке передаст запрос бэкенду в таком виде:

В этом случае второй параметр toAccount, отправленный злоумышленником, перезапишет запрос к бэкенду и позволит перевести деньги на предоставленный хакером счет (99999) вместо счета, установленного системой (9876).

Это можно использовать, внося правки в собственные запросы, которые обрабатываются уязвимой системой. Но также это может быть более полезным для хакера, если он может сгенерировать ссылку с другого сайта и обмануть пользователей, заставив их ненамеренно отправить вредный запрос с дополнительными параметрами, добавленными хакером.

С другой стороны, HPP на клиентской стороне включает инъекцию дополнительных параметров в ссылки и другие src атрибуты. Позаимствуем пример с OWASP и предположим, что у нас есть следующий код:

Это принимает значение для par из UTL, убеждается, что оно безопасное и создает из него ссылку. Если хакер отправит:

то полученная в результате ссылка будет выглядеть так:

Это может заставить приложение к выполнению действия редактирования вместо просмотра.

И серверная и клиентская HPP зависят от того, какая технология используется на бэкенде и как она действует, получая несколько параметров с одинаковыми именами. Например, PHP/Apache используют последний переданный параметр из нескольких с одинаковыми именами, Apache Tomcat использует первый параметр, ASP/ISS используют все параметры, и так далее. В результате, нет одного гарантированного способа для отправки нескольких параметров с одинаковыми именами и обнаружение HPP потребует некоторых экспериментов, чтобы узнать, как работает тестируемый вами сайт.

Примеры

1. Кнопки социальных сетей HackerOne

Сложность: Низкая
Url: https://hackerone.com/blog/introducing-signal-and-impact Ссылка на отчет: https://hackerone.com/reports/1059536 Дата отчета: 18 декабря 2015
Выплаченное вознаграждение: $500

Описание: На HackerOne есть кнопки для шаринга контента через популярные социальные сети, такие как Twitter, Facebook и прочие. Эти кнопки содержат конкретные параметры для ссылки на социальную сеть.

Обнаруженная уязвимость позволяла хакеру подставить другие параметры URL в ссылку и направить её на любой сайт, а HackerOne включил бы этот параметр в POST-запрос к социальной сети, создавая таким образом нежелаемое поведение.

Пример использования уязвимости менял url:

на

Обратите внимание на добавленный параметр u. Если бы посетители HackerOne нажали на обновленную таким образом ссылку, пытаясь поделиться контентом через социальные сети, вредоносная ссылка выглядела бы так:

Здесь последний параметр u получает приоритет над первым и, соответственно, используется для публикации на Facebook. При публикации в Twitter, предложенный стандартный текст также мог бы быть изменен:

Выводы

Обращайте внимание на случаи, когда сайты принимают контент и взаимодействуют с другим веб-сервисом, таким, как сайты социальных сетей.
В этих ситуациях может быть возможна отправка переданного содержимого без надлежащих проверок его безопасности.

Риски, раскрываемые использованием HTTP Parameter Pollution сильно зависят от действий, выполняемых бэкендом сайта и тем, куда будут отправлены вредоносные параметры.

Оглавление:

Базовые знания о HTTP протоколе. Глава 1

Что такое HTML иньекция. Уроки хакинга. Глава 2.

Что такое HPP (HTTP Parameter Pollution) атака? Уроки хакинга. Глава 3

Что такое CRLF инъекция, примеры использования. Уроки хакинга, Глава 4.

Уязвимости в логике приложений. Уроки хакинга. Глава 6

Уязвимости в логике работы приложений. Примеры.

Что такое XSS атака (Cross Site Scripting Attacks). Уроки хакинга. Глава 7.

SQL иньекции. Виды и примеры использования. Уроки хакинга. Глава 8.

Уязвимости Открытого Перенаправления. Уроки хакинга. Глава 9

 

Share Button
[Всего голосов: 6    Средний: 4/5]

Вам может быть интересно также:

Last updated by at .

5 комментариев Что такое HPP (HTTP Parameter Pollution) атака? Уроки хакинга. Глава 3

Leave a Reply

You can use these HTML tags

<a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">