hacktricks/pentesting-web/parameter-pollution.md

9.1 KiB
Raw Blame History

Параметричне забруднення

{% hint style="success" %} Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks
{% endhint %}

{% embed url="https://websec.nl/" %}

Огляд HTTP Параметричного Забруднення (HPP)

HTTP Параметричне Забруднення (HPP) — це техніка, при якій зловмисники маніпулюють HTTP параметрами, щоб змінити поведінку веб-додатку ненавмисними способами. Ця маніпуляція здійснюється шляхом додавання, модифікації або дублювання HTTP параметрів. Ефект цих маніпуляцій не видно безпосередньо користувачу, але може суттєво змінити функціональність додатку на стороні сервера, з помітними наслідками на стороні клієнта.

Приклад HTTP Параметричного Забруднення (HPP)

URL транзакції банківського додатку:

  • Оригінальний URL: https://www.victim.com/send/?from=accountA&to=accountB&amount=10000

Вставивши додатковий параметр from:

  • Маніпульований URL: https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC

Транзакція може бути неправильно зарахована на accountC замість accountA, демонструючи потенціал HPP для маніпуляції транзакціями або іншими функціональностями, такими як скидання паролів, налаштування 2FA або запити API ключів.

Парсинг Параметрів, Специфічний для Технології

  • Спосіб парсингу та пріоритету параметрів залежить від основної веб-технології, що впливає на те, як HPP може бути використано.
  • Інструменти, такі як Wappalyzer, допомагають ідентифікувати ці технології та їх поведінку при парсингу.

PHP та Експлуатація HPP

Ситуація з маніпуляцією OTP:

  • Контекст: Механізм входу, що вимагає одноразового пароля (OTP), був експлуатований.
  • Метод: Перехоплюючи запит OTP за допомогою інструментів, таких як Burp Suite, зловмисники дублювали параметр email у HTTP запиті.
  • Результат: OTP, призначений для початкової електронної пошти, був надісланий на другу електронну адресу, вказану в маніпульованому запиті. Ця вразливість дозволила несанкціонований доступ, обминаючи заплановану міру безпеки.

Цей сценарій підкреслює критичну помилку в бекенді додатку, який обробляв перший параметр email для генерації OTP, але використовував останній для доставки.

Ситуація з маніпуляцією API ключем:

  • Сценарій: Додаток дозволяє користувачам оновлювати свій API ключ через сторінку налаштувань профілю.
  • Вектор атаки: Зловмисник виявляє, що, додавши додатковий параметр api_key до POST запиту, він може маніпулювати результатом функції оновлення API ключа.
  • Техніка: Використовуючи інструмент, такий як Burp Suite, зловмисник формує запит, що містить два параметри api_key: один легітимний і один шкідливий. Сервер, обробляючи лише останнє входження, оновлює API ключ на значення, надане зловмисником.
  • Результат: Зловмисник отримує контроль над функціональністю API жертви, потенційно отримуючи доступ або змінюючи приватні дані без дозволу.

Цей приклад ще більше підкреслює необхідність безпечного оброблення параметрів, особливо в таких критичних функціях, як управління API ключами.

Парсинг Параметрів: Flask проти PHP

Спосіб, яким веб-технології обробляють дубльовані HTTP параметри, варіюється, що впливає на їх вразливість до атак HPP:

  • Flask: Приймає перше значення параметра, яке зустрічається, наприклад, a=1 у рядку запиту a=1&a=2, надаючи пріоритет початковому екземпляру над наступними дублікатами.
  • PHP (на Apache HTTP Server): Навпаки, надає пріоритет останньому значенню параметра, вибираючи a=2 у наведеному прикладі. Ця поведінка може ненавмисно сприяти експлуатації HPP, визнаючи маніпульований параметр зловмисника замість оригінального.

Посилання

{% embed url="https://websec.nl/" %}

{% hint style="success" %} Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks
{% endhint %}