hacktricks/pentesting-web/parameter-pollution.md

93 lines
6.7 KiB
Markdown
Raw Normal View History

# Inquinamento dei Parametri
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Impara e pratica Hacking AWS:<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">\
Impara e pratica Hacking GCP: <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>Supporta HackTricks</summary>
2023-12-31 01:25:17 +00:00
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
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/" %}
# Panoramica dell'Inquinamento dei Parametri HTTP (HPP)
L'Inquinamento dei Parametri HTTP (HPP) è una tecnica in cui gli attaccanti manipolano i parametri HTTP per cambiare il comportamento di un'applicazione web in modi non intenzionati. Questa manipolazione avviene aggiungendo, modificando o duplicando i parametri HTTP. L'effetto di queste manipolazioni non è direttamente visibile all'utente, ma può alterare significativamente la funzionalità dell'applicazione sul lato server, con impatti osservabili sul lato client.
2020-07-30 08:34:18 +00:00
2024-02-10 13:03:23 +00:00
## Esempio di Inquinamento dei Parametri HTTP (HPP)
2020-07-30 08:34:18 +00:00
Un URL di transazione di un'applicazione bancaria:
2020-07-30 08:34:18 +00:00
- **URL Originale:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000`
2020-07-30 08:34:18 +00:00
Inserendo un ulteriore parametro `from`:
2020-07-30 08:34:18 +00:00
- **URL Manipolato:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
2020-07-30 08:34:18 +00:00
La transazione potrebbe essere erroneamente addebitata a `accountC` invece di `accountA`, dimostrando il potenziale dell'HPP di manipolare transazioni o altre funzionalità come il ripristino della password, le impostazioni 2FA o le richieste di chiavi API.
2020-07-30 08:34:18 +00:00
### **Parsing dei Parametri Specifico per Tecnologia**
2020-07-30 08:34:18 +00:00
- Il modo in cui i parametri vengono analizzati e prioritizzati dipende dalla tecnologia web sottostante, influenzando come l'HPP può essere sfruttato.
- Strumenti come [Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/) aiutano a identificare queste tecnologie e i loro comportamenti di parsing.
2020-07-30 08:34:18 +00:00
2024-02-10 13:03:23 +00:00
## Sfruttamento di PHP e HPP
2020-07-30 08:34:18 +00:00
2024-02-10 13:03:23 +00:00
**Caso di Manipolazione OTP:**
2020-07-30 08:34:18 +00:00
- **Contesto:** Un meccanismo di login che richiede una Password Usa e Getta (OTP) è stato sfruttato.
2024-02-10 13:03:23 +00:00
- **Metodo:** Intercettando la richiesta OTP utilizzando strumenti come Burp Suite, gli attaccanti hanno duplicato il parametro `email` nella richiesta HTTP.
- **Risultato:** L'OTP, destinato all'email iniziale, è stato invece inviato al secondo indirizzo email specificato nella richiesta manipolata. Questa vulnerabilità ha consentito l'accesso non autorizzato eludendo la misura di sicurezza prevista.
2020-07-30 08:34:18 +00:00
Questo scenario evidenzia una grave svista nel backend dell'applicazione, che ha elaborato il primo parametro `email` per la generazione dell'OTP ma ha utilizzato l'ultimo per la consegna.
2020-07-30 08:34:18 +00:00
2024-02-10 13:03:23 +00:00
**Caso di Manipolazione della Chiave API:**
2020-07-30 08:34:18 +00:00
- **Scenario:** Un'applicazione consente agli utenti di aggiornare la propria chiave API tramite una pagina delle impostazioni del profilo.
- **Vettore di Attacco:** Un attaccante scopre che aggiungendo un ulteriore parametro `api_key` alla richiesta POST, può manipolare l'esito della funzione di aggiornamento della chiave API.
- **Tecnica:** Utilizzando uno strumento come Burp Suite, l'attaccante crea una richiesta che include due parametri `api_key`: uno legittimo e uno malevolo. Il server, elaborando solo l'ultima occorrenza, aggiorna la chiave API al valore fornito dall'attaccante.
2024-02-10 13:03:23 +00:00
- **Risultato:** L'attaccante ottiene il controllo sulla funzionalità API della vittima, potenzialmente accedendo o modificando dati privati in modo non autorizzato.
2020-07-30 08:34:18 +00:00
Questo esempio sottolinea ulteriormente la necessità di una gestione sicura dei parametri, specialmente in funzionalità critiche come la gestione delle chiavi API.
2024-02-06 03:10:38 +00:00
## Parsing dei Parametri: Flask vs. PHP
2024-02-06 03:10:38 +00:00
2024-02-10 13:03:23 +00:00
Il modo in cui le tecnologie web gestiscono i parametri HTTP duplicati varia, influenzando la loro suscettibilità agli attacchi HPP:
2024-02-06 03:10:38 +00:00
- **Flask:** Adozione del primo valore del parametro incontrato, come `a=1` in una stringa di query `a=1&a=2`, privilegiando l'istanza iniziale rispetto ai duplicati successivi.
- **PHP (su Apache HTTP Server):** Al contrario, privilegia l'ultimo valore del parametro, optando per `a=2` nell'esempio fornito. Questo comportamento può involontariamente facilitare gli exploit HPP onorando il parametro manipolato dall'attaccante rispetto all'originale.
2020-07-30 08:34:18 +00:00
2024-02-10 13:03:23 +00:00
## Riferimenti
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" %}
Impara e pratica Hacking AWS:<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">\
Impara e pratica Hacking GCP: <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>Supporta HackTricks</summary>
2023-12-31 01:25:17 +00:00
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}