Realizar un ataque Parameter Tampering

Qué es Parameter Tampering

Un ataque de tipo Parameter Tampering es un tipo de hacking ético que busca este tipo de vulnerabilidad, de la que hay que ser consciente de su importancia y por qué se debe evitar.

La vulnerabilidad de tipo Parameter Tampering consiste en la “manipulación del valor de algún parámetro que se intercambia entre cliente y servidor con fines malintencionados”.

Un ejemplo de esta vulnerabilidad es el siguiente.

 

Supongamos que accedemos a una aplicación, nos logamos y tenemos un botón para consultar nuestros datos. Al pulsar ese botón, se realiza una petición al servidor, en la cual se le envía un parámetro con nuestro DNI. El servidor recibe esa petición, consulta en la base de datos los datos que tiene para ese DNI y los envía en una respuesta.

¿Qué pasaría si el usuario modifica la petición que envía ese botón y en lugar de poner su DNI pone el DNI de otra persona?

Si existe esta vulnerabilidad, el servidor no va a comprobar si el usuario tiene permiso para ello, y va a devolver los datos de otra persona.

Cómo evitar el Parameter Tampering

Para evitar un ataque de este tipo, fundamentalmente se debe:

  • Validar siempre en el servidor, es decir, cada acción que realice el usuario debe ser validada en el servidor para confirmar que tiene permiso para ello. En el ejemplo anterior, el servidor debe validar que el usuario con el que se ha accedido tiene permisos para consultar los datos del DNI que ha modificado.
  • No enviar datos innecesarios. En el mismo ejemplo previo se está enviando como parámetro el DNI del usuario que está accediendo. Esto no debería ser necesario, ya que el servidor podría, a partir del id de sesión del usuario, sacar cuál es el nombre de usuario que tiene esa sesión, y a partir del mismo consultar en su base de datos qué DNI tiene el usuario y darle sus datos. De esta forma se evita este tipo de problemas, ya que los usuarios no envían ningún parámetro.

Ejemplo de cómo hacer un ataque tipo Parameter Tampering

Para realizar este tipo de ataque utilizaremos una herramienta llamada OWASP ZAP, con la que vamos a capturar la petición que hagamos a través del navegador, antes de que se envíe al servidor, para modificar un parámetro.

Por defecto herramienta escucha en el puerto 8080, pero en este caso lo tenemos configurado para que lo haga en el puerto 8089, así que en el navegador tenemos que configurar el proxy para que todo el tráfico se reenvíe al puerto 8089 y pase por la herramienta.

En Firefox se hace en esta pantalla.

A continuación, accedemos a una aplicación tengo tenemos preparada, en la que tenemos una serie de artículos y un precio.

Si compramos una escalera, que tiene un precio de 20, nos aparecerá en la pantalla un mensaje indicando que la hemos comprado a ese precio.

Ahora vamos a intentar modificar ese precio para comprar la escalera más barata. Para ello vamos a la herramienta anterior y pulsamos el botón correspondiente para que capture las peticiones.

De nuevo vamos al navegador y pulsamos en el botón de comprar la escalera. En esta ocasión el proceso de compra no continúa, porque en la herramienta tenemos parada la petición, y ha aparecido una nueva pestaña con el nombre “Punto de interrupción”.

En la misma podemos ver los datos de la petición que se está enviando, y los parámetros de la misma que se envían, que en este caso son “artículo” y “precio”, los cuáles indican la escalera y el coste de la misma, que son 20.

Modificamos el valor de compra y lo cambiamos por 1, y pulsamos en el botón para que continúe el envío de la petición.

Se reanuda el proceso de compra, y al finalizar vemos que en pantalla nos muestra el mensaje de compra indicando que se ha comprado una escalera con un precio de 1.

Para evitar que se produzca este tipo de ataque, habría que evitar enviar el precio del artículo, enviando únicamente el producto que se está comprando, y que el servidor haga una consulta a la base de datos para consultar el precio de la misma.

Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información