Contaminación de parámetros HTTP
La contaminación de parámetros HTTP (HPP por sus siglas en inglés HTTP parameter pollution) es una vulnerabilidad de la aplicación web que se aprovecha mediante la inyección de delimitadores de cadenas de consulta codificadas en parámetros ya existentes. La vulnerabilidad ocurre si la entrada del usuario no está codificada correctamente para la salida de una aplicación web. Esta vulnerabilidad permite la inyección de parámetros en URL creadas por aplicaciones web. Fue presentado al público por primera vez en 2009 por Stefano di Paola y Luca Carettoni, en la conferencia OWASP EU09 Polonia.El impacto de dicha vulnerabilidad varía y puede variar desde una "simple molestia" hasta la interrupción total del comportamiento previsto de una aplicación web. Anular los parámetros HTTP para alterar el comportamiento de una aplicación web, pasar por alto los puntos de control de validación de entrada y acceso, así como otras vulnerabilidades indirectas, son posibles consecuencias de un ataque HPP.
No existe un estándar RFC sobre lo que se debe hacer cuando ha pasado múltiples parámetros. HPP podría usarse para la contaminación de canales cruzados, sin pasar por la protección CSRF y los controles de validación de entrada WAF.
Comportamiento
Cuando ha pasado varios parámetros con el mismo nombre, así es como se comporta el backend.
Tecnología | resultado del análisis | Ejemplo |
---|---|---|
ASP.NET/IIS | Todas las ocurrencias concatenadas con una coma | parámetro=val1,val2 |
ASP/IIS | Todas las ocurrencias concatenadas con una coma | parámetro=val1,val2 |
PHP/Apache | Solo última ocurrencia | parámetro=val2 |
PHP/Zeus | Solo última ocurrencia | parámetro=val2 |
JSP, Servlet/Apache Tomcat | Solo la primera aparición | parámetro=val1 |
JSP, servlet/servidor de aplicaciones Oracle | Solo la primera aparición | parámetro=val1 |
JSP, servlet/embarcadero | Solo la primera aparición | parámetro=val1 |
IBM Lotus Domino | Solo última ocurrencia | parámetro=val2 |
Servidor HTTP de IBM | Solo la primera aparición | parámetro=val1 |
mod_perl,libapreq2/Apache | Solo la primera aparición | parámetro=val1 |
Perl CGI/Apache | Solo la primera aparición | parámetro=val1 |
mod_wsgi (Python)/Apache | Solo la primera aparición | parámetro=val1 |
Pitón/Zope | Todas las ocurrencias en la lista (matriz) | parámetro=['val1','val2'] |
Tipos
Lado del cliente
- Primer orden / HPP reflejado
- Segundo pedido / HPP almacenado
- Tercer Orden / DOM HPP
Lado del servidor
- HPP estándar
- HPP de segundo orden
Prevención
La validación de entrada adecuada y el conocimiento de la tecnología web en HPP es una protección contra la contaminación de parámetros HTTP.
Contenido relacionado
AmigaDOS
Vigilancia predictiva
Patrón de fachada