Ir al contenido principal

Spoof IP

Hola amigos, contaros que desde hace tiempo andaba detrás de un reto hacking en el que se pedía spoofear cierta IP, que era inválida.

Como no podía ser que mi máquina tomase una ip inválida para spoofear, solo cabía esperar que en el servidor se compruebe la ip considerando la cabecera X-FORWARDED-FOR.

El script en el que necesito spoofear mi ip está escrito en PHP, y en este lenguaje muchar veces los programadores comprueban la cabacera X-FORWARDED-FOR, por ejemplo:


$ipString=@getenv("HTTP_X_FORWARDED_FOR"); 

El problema radica en que el valor de la cabecera x-forwarded-for puede ser spoofeado si se modifican las cabeceras http que se envían al servidor.

Se podrían construir paquetes personalizados, pero he preferido usar alguna herramienta ya existente para facilitar la tarea (y tardar menos en pasar el reto).

Instalaremos en local (por ejemplo) un proxy, y ponemos este entre nuestro navegador y la puerta de enlace escuchando en algún puerto, después se configura el navegador para que el tráfico de red pase por el proxy en el puerto indicado. En mi caso el proxy que he utilizado es burp suite free edition, aunque también se podría haber hecho con achilles, que es un proxy más modesto y limitado, pero cumple bien su función.



Ejemplo de mi configuración, el puerto que uso es el 8080 al ser el puerto en el que he puesto a escuchar el proxy:

Ahora solamente queda, por pasos:
  1. Configurar el proxy en modo intercepción, para que se encargue de capturar los paquetes destinados a la web en la que queremos spoofear.
  2. Visitar la web en cuestión.

En mi caso me he construido yo la web en un servidor local, el código está en PHP:

<?php
$remote_ip = getenv('HTTP_X_FORWARDED_FOR');
echo $remote_ip;
?>




Ahora deberíamos de tener los datos del paquete que le queremos enviar al servidor, podemos editarlo y enviarlo al servidor o dejarlo como está. Nosotros lo vamos a editar, yo lo voy a hacer desde la pestaña raw, en esta pestaña, nos vamos a la zona donde se encuentra la información que vamos a enviar, y añadimos una línea nueva (cuidado con la primera letra, debe ser mayúscula, a mi no me funciona si la pongo en minúscula):


X-forwarded-for:   la.ip.que.quieras

Después de escribir la línea anterior, le damos al botón de forward para enviar los datos al servidor y ver qué pasa:

Decir que además de poder spoofear, se podrían provocar:
  • Inyecciones SQL si las ip's fuesen almacenadas y no filtradas.
  • Ataques XSS persistentes si la ip se muestra a otros usuarios (por ejemplo un foro, o los comentarios de un periódico).

Como moraleja tenemos que el campo X-forwarded-for es spoofeable por el usuario, y por lo cual se debería de desconfiar de los datos aportados a través de este campo.

Sería más fiable usar (en php):
$_SERVER['REMOTE_ADDR']

Así es como se comportan las dos instrucciones ante el ataque:

Como vemos, realizar comprobaciones sobre la cabecera http x-forwarded-for es inseguro.

Un saludo.

Comentarios

  1. Interesante man. Disculpa, ya descargue el Burp Suite Free Edition, se puede en esta tool realizar X-forwarded-for ciclicos?, es decir, spoffear mi ip tipo: 10.0.1.1 y que vaya incrementando automaticamente a: 10.0.1.2, 10.0.1.3, 10.0.1.4 hasta 10.0.1.255?, es decir un incremento pero ciclico, se puede con Burp Suite y com oseria man? o con otro Modificador de Headers?, espero tu respuesta y gracias denuevo, saludos.

    ResponderEliminar
  2. Best Places To Bet On Boxing - Mapyro
    Where microtouch solo titanium To Bet On Boxing. It's a sports betting wooricasinos.info event in which you bet on the outcome of a game. 출장안마 In the boxing 1xbet app world, each player must decide if or not to herzamanindir

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Join o producto cartesiano de dos tablas en EXCEL 2007

Hace unos dias inicie mi ocupacion como becario de informatica en la facultad de humanidades y ciencias de la educacion de la UJAEN. Y como no, no han tardado en surgir los problemas. Supongamos que tenemos dos tablas, y queremos hacer una tabla que tenga datos de estas dos tablas, segun un criterio , y es que solo pueden aparecer ciertas filas, mas exactamente aquellas donde coincida cierto campo, en este ejemplo, el codigo de la asignatura. Si queremos realizar el join o producto cartesiano tal y como lo hariamos en una base de datos, parece ser que si no estamos trabajando con una bbdd sino con Excel, la cosa se complica un poco. Para "multiplicar tablas" en excel, primero vamos a hacer una cosa, cada tabla la vamos a guardar en hojas separadas, en nuestro caso, una tabla la guardamos en Hoja1 , y la otra en Hoja2 Ahora, nos situamos en la hoja donde queramos que aparezca el producto cartesiano de nuestras dos tablas, nos vamos a la ficha DATOS . Veremos que h...

Polynomial regression using python

We are going to learn how to create a polynomial regression and make a prediction over a future value using python. The data set have been fetched from INE (national statistics institute) , that data is the EPA ( active population survey ), that tell us the national total (Spain), both genders. 16 and over are unemployed ( in thousands ). Example data: label serie rate 0 2002T1 0 2152.8 1 2002T2 1 2103.3 2 2002T3 2 2196.0 3 2002T4 3 2232.4 4 2003T1 4 2328.5 Data CSV can be downloaded here: https://drive.google.com/file/d/1fwvAZe7lah5DX8-DDEpmfeUDYQhKcfzG/view?usp=sharing Lets see how looks that data: Fine, as we can see the data describe a curve, so its for that because we want to use a polynomial regression. To try to approximate that curve we will use a grade 2 polynomial or...

Use django ORM standalone within your nameko micro-services

Learning about micro services with python, I found a great tool named nameko . https://www.nameko.io/ Nameko is a Python framework to build microservices that doesn't care in concrete technologies you will use within your project. To allow that microservices to work with a database, you can install into your project a wide variety of third parties, like SQLAlchemy (just like any other). To have an easy way to communicate with the database and keep track of the changes made to the models, I chose Django: I'm just learning about microservices and I want to keep focused on that. Easy to use, Django is a reliable web framework, have a powerful and well known ORM. Also using Django we will have many of the different functionalities that this framework provide. To make all this magic to work together, I developed a python package that allow you to use Django as a Nameko injected dependency: https://pypi.org/project/django-nameko-standalone/ You can found the source ...