hacktricks/pentesting-web/parameter-pollution.md

91 lines
6.8 KiB
Markdown
Raw Normal View History

# Contaminación de Parámetros
2023-06-05 18:33:24 +00:00
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2023-06-05 18:33:24 +00:00
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2023-06-05 18:33:24 +00:00
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
# Visión General de la Contaminación de Parámetros HTTP (HPP)
2023-06-05 18:33:24 +00:00
La Contaminación de Parámetros HTTP (HPP) es una técnica donde los atacantes manipulan los parámetros HTTP para cambiar el comportamiento de una aplicación web de maneras no deseadas. Esta manipulación se realiza añadiendo, modificando o duplicando los parámetros HTTP. El efecto de estas manipulaciones no es visible directamente para el usuario, pero puede alterar significativamente la funcionalidad de la aplicación en el lado del servidor, con impactos observables en el lado del cliente.
2023-06-05 18:33:24 +00:00
## Ejemplo de Contaminación de Parámetros HTTP (HPP)
2023-06-05 18:33:24 +00:00
Una URL de transacción de una aplicación bancaria:
2023-06-05 18:33:24 +00:00
- **URL Original:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000`
2023-06-05 18:33:24 +00:00
Al insertar un parámetro `from` adicional:
2023-06-05 18:33:24 +00:00
- **URL Manipulada:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
2023-06-05 18:33:24 +00:00
La transacción puede ser incorrectamente cargada a `accountC` en lugar de `accountA`, mostrando el potencial de HPP para manipular transacciones u otras funcionalidades como restablecimientos de contraseña, configuraciones de 2FA o solicitudes de clave API.
2023-06-05 18:33:24 +00:00
### Análisis de Parámetros Específicos de Tecnología
2023-06-05 18:33:24 +00:00
- La forma en que se analizan y priorizan los parámetros depende de la tecnología web subyacente, lo que afecta cómo se puede explotar HPP.
- Herramientas como [Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/) ayudan a identificar estas tecnologías y sus comportamientos de análisis.
2023-06-05 18:33:24 +00:00
## Explotación de PHP y HPP
2023-06-05 18:33:24 +00:00
**Caso de Manipulación de OTP:**
2023-06-05 18:33:24 +00:00
- **Contexto:** Se explotó un mecanismo de inicio de sesión que requería un One-Time Password (OTP).
- **Método:** Al interceptar la solicitud de OTP utilizando herramientas como Burp Suite, los atacantes duplicaron el parámetro `email` en la solicitud HTTP.
- **Resultado:** El OTP, destinado al correo electrónico inicial, en lugar se envió a la segunda dirección de correo electrónico especificada en la solicitud manipulada. Esta falla permitió el acceso no autorizado al eludir la medida de seguridad prevista.
2023-06-05 18:33:24 +00:00
Este escenario destaca una supervisión crítica en el backend de la aplicación, que procesó el primer parámetro `email` para la generación de OTP pero utilizó el último para la entrega.
2023-06-05 18:33:24 +00:00
**Caso de Manipulación de Clave API:**
2023-06-05 18:33:24 +00:00
- **Escenario:** Una aplicación permite a los usuarios actualizar su clave API a través de una página de configuración de perfil.
- **Vector de Ataque:** Un atacante descubre que al agregar un parámetro `api_key` adicional a la solicitud POST, puede manipular el resultado de la función de actualización de la clave API.
- **Técnica:** Utilizando una herramienta como Burp Suite, el atacante crea una solicitud que incluye dos parámetros `api_key`: uno legítimo y otro malicioso. El servidor, procesando solo la última ocurrencia, actualiza la clave API al valor proporcionado por el atacante.
- **Resultado:** El atacante obtiene control sobre la funcionalidad de la API de la víctima, potencialmente accediendo o modificando datos privados de manera no autorizada.
2023-06-05 18:33:24 +00:00
Este ejemplo subraya aún más la necesidad de un manejo seguro de parámetros, especialmente en funciones tan críticas como la gestión de claves API.
## Análisis de Parámetros: Flask vs. PHP
La forma en que las tecnologías web manejan los parámetros HTTP duplicados varía, afectando su susceptibilidad a ataques de HPP:
- **Flask:** Adopta el valor del primer parámetro encontrado, como `a=1` en una cadena de consulta `a=1&a=2`, priorizando la instancia inicial sobre duplicados posteriores.
- **PHP (en el Servidor HTTP Apache):** Contrariamente, prioriza el valor del último parámetro, optando por `a=2` en el ejemplo dado. Este comportamiento puede facilitar inadvertidamente las explotaciones de HPP al honrar el parámetro manipulado del atacante sobre el original.
## Referencias
* [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)
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>