hacktricks/pentesting-web/parameter-pollution.md

5.7 KiB

Contaminación de Parámetros

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de AWS de HackTricks)!

Otras formas de apoyar a HackTricks:

Visión General de la Contaminación de Parámetros HTTP (HPP)

La Contaminación de Parámetros HTTP (HPP) es una técnica de ataque que implica la manipulación de parámetros HTTP para alterar el comportamiento esperado de una aplicación web. Este tipo de ataque es relativamente sencillo pero puede ser sorprendentemente efectivo. Aunque la manipulación de parámetros ocurre en el lado del servidor y no es visible para el usuario, los cambios de comportamiento resultantes pueden ser observados en el lado del cliente.

Ejemplo de Contaminación de Parámetros HTTP (HPP)

Considera una URL estándar de transacción para una aplicación bancaria:

URL: https://www.victim.com/send/?from=accountA&to=accountB&amount=10000

Esta URL inicia una transacción de 10,000 desde la cuentaA a la cuentaB. Sin embargo, introducir otro parámetro from de la siguiente manera:

URL Manipulada: https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC

podría resultar en que la transacción se descuente de la cuentaC en lugar de la cuentaA. Esto ejemplifica cómo se puede utilizar HPP para manipular parámetros. Es importante destacar que esta vulnerabilidad no se limita a las solicitudes GET, sino que también puede ser explotada en solicitudes POST en diversas funcionalidades como cambios de contraseña, autenticación de dos factores o transmisiones de claves API.

Es importante reconocer que el análisis de parámetros depende de la tecnología web específica utilizada. Herramientas como Wappalyzer pueden ser utilizadas para identificar tecnologías web y comprender sus comportamientos de análisis de parámetros.

PHP

Un ejemplo notable de explotación de HPP involucró los siguientes pasos:

  1. Manipulación de OTP:
  • Se tenía como objetivo una página de inicio de sesión que solicitaba un OTP.
  • Después de enviar una solicitud de OTP, la solicitud HTTP subsiguiente fue interceptada utilizando Burp Suite.
  • Se agregó otro correo electrónico a la solicitud, duplicando efectivamente el parámetro email.
  • El OTP destinado al primer correo electrónico fue enviado por error al segundo correo electrónico, permitiendo el acceso no autorizado a la primera cuenta.

Este incidente destaca cómo el backend de la aplicación procesaba los parámetros email, utilizando el primero para la generación de OTP y el segundo para la entrega de OTP.

Análisis de Parámetros en Flask y PHP

Diferentes tecnologías web analizan los parámetros de manera única. Por ejemplo, con una consulta como a=1&a=2, Flask y PHP interpretarán el parámetro de manera diferente:

  • Flask: Toma la primera ocurrencia (a=1).
  • PHP (en el Servidor HTTP Apache): Toma la última ocurrencia (a=2).

Esta diferencia en el manejo de parámetros puede impactar significativamente en el comportamiento de la aplicación y en la vulnerabilidad a ataques de HPP. Se pueden encontrar más detalles al respecto en este artículo.

Referencias

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de AWS de HackTricks)!

Otras formas de apoyar a HackTricks: