hacktricks/pentesting-web/parameter-pollution.md

93 lines
6.3 KiB
Markdown
Raw Normal View History

# Parameter Pollution
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2023-12-31 01:25:17 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
2020-07-30 08:34:18 +00:00
{% embed url="https://websec.nl/" %}
2020-07-30 08:34:18 +00:00
# HTTP Parameter Pollution (HPP) Overview
HTTP Parameter Pollution (HPP) je tehnika gde napadači manipulišu HTTP parametrima kako bi promenili ponašanje web aplikacije na nepredviđene načine. Ova manipulacija se vrši dodavanjem, modifikovanjem ili dupliciranjem HTTP parametara. Efekat ovih manipulacija nije direktno vidljiv korisniku, ali može značajno promeniti funkcionalnost aplikacije na serverskoj strani, sa uočljivim uticajima na klijentskoj strani.
## Example of HTTP Parameter Pollution (HPP)
URL transakcije bankarske aplikacije:
2020-07-30 08:34:18 +00:00
- **Original URL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000`
2020-07-30 08:34:18 +00:00
Umetanjem dodatnog `from` parametra:
2020-07-30 08:34:18 +00:00
- **Manipulated URL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
2020-07-30 08:34:18 +00:00
Transakcija može biti pogrešno naplaćena na `accountC` umesto na `accountA`, pokazujući potencijal HPP-a da manipuliše transakcijama ili drugim funkcionalnostima kao što su resetovanje lozinke, podešavanja 2FA ili zahtevi za API ključem.
2020-07-30 08:34:18 +00:00
### **Technology-Specific Parameter Parsing**
2020-07-30 08:34:18 +00:00
- Način na koji se parametri analiziraju i prioritetizuju zavisi od osnovne web tehnologije, što utiče na to kako se HPP može iskoristiti.
- Alati poput [Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/) pomažu u identifikaciji ovih tehnologija i njihovih ponašanja prilikom analize.
2020-07-30 08:34:18 +00:00
## PHP and HPP Exploitation
2020-07-30 08:34:18 +00:00
**OTP Manipulation Case:**
2020-07-30 08:34:18 +00:00
- **Context:** Mehanizam prijavljivanja koji zahteva jednokratnu lozinku (OTP) je iskorišćen.
- **Method:** Presretanjem OTP zahteva koristeći alate poput Burp Suite, napadači su duplicirali `email` parametar u HTTP zahtevu.
- **Outcome:** OTP, namenjen za inicijalnu email adresu, umesto toga je poslat na drugu email adresu navedenu u manipulisanom zahtevu. Ova greška je omogućila neovlašćen pristup zaobilaženjem predviđene sigurnosne mere.
2020-07-30 08:34:18 +00:00
Ovaj scenario ističe kritičan propust u backend-u aplikacije, koji je obradio prvi `email` parametar za generisanje OTP-a, ali je koristio poslednji za isporuku.
2020-07-30 08:34:18 +00:00
**API Key Manipulation Case:**
2020-07-30 08:34:18 +00:00
2024-02-10 13:11:20 +00:00
- **Scenario:** Aplikacija omogućava korisnicima da ažuriraju svoj API ključ putem stranice za podešavanje profila.
- **Attack Vector:** Napadač otkriva da dodavanjem dodatnog `api_key` parametra u POST zahtev može manipulisati ishodom funkcije ažuriranja API ključa.
- **Technique:** Koristeći alat poput Burp Suite, napadač kreira zahtev koji uključuje dva `api_key` parametra: jedan legitimni i jedan zlonameran. Server, obrađujući samo poslednju pojavu, ažurira API ključ na vrednost koju je naveo napadač.
- **Result:** Napadač dobija kontrolu nad funkcionalnošću API-ja žrtve, potencijalno pristupajući ili modifikujući privatne podatke neovlašćeno.
2020-07-30 08:34:18 +00:00
Ovaj primer dodatno naglašava potrebu za sigurnim rukovanjem parametrima, posebno u funkcijama koje su kritične kao što je upravljanje API ključem.
2024-02-06 03:10:38 +00:00
## Parameter Parsing: Flask vs. PHP
2024-02-06 03:10:38 +00:00
Način na koji web tehnologije obrađuju duple HTTP parametre varira, utičući na njihovu podložnost HPP napadima:
2024-02-06 03:10:38 +00:00
- **Flask:** Usvaja prvu vrednost parametra koja se susreće, kao što je `a=1` u upitu `a=1&a=2`, prioritetizujući inicijalnu instancu nad kasnijim duplikatima.
- **PHP (na Apache HTTP Server-u):** Nasuprot tome, prioritetizuje poslednju vrednost parametra, birajući `a=2` u datom primeru. Ovo ponašanje može nenamerno olakšati HPP eksploate tako što poštuje manipulisan parametar napadača umesto originalnog.
2020-07-30 08:34:18 +00:00
## References
2024-02-04 16:10:29 +00:00
* [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
* [https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution)
2022-04-28 16:01:33 +00:00
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2023-12-31 01:25:17 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}