Envío de solicitud CURL con IP personalizada


19

¿No debería ser posible? Supongamos que no necesito una respuesta, solo quiero enviar una solicitud. ¿No deberíamos poder alterar los encabezados tcp / ip, porque nuestra computadora lo envía? Probablemente me estoy perdiendo algo, solo realmente curioso, aprendiendo sobre eso en la universidad.

Respuestas:


25

Puedes usar el -H/--headerargumento:

Podrías falsificar tu dirección IP:

curl --header "X-Forwarded-For: 192.168.0.2" http://example.com

Ejemplo:
cliente

$ curl http://webhost.co.uk  

alojamiento web

$ tailf access.log | grep 192.168.0.54   
192.168.0.54 - - [10/Nov/2014:15:56:09 +0000] "GET / HTTP/1.1" 200 14328 "-"   
"curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3   
libidn/1.18 libssh2/1.4.2"

cliente con dirección IP modificada

$ curl --header "X-Forwarded-For: 192.168.0.99" http://webhost.co.uk   

alojamiento web

$ tailf access.log | grep 192.168.0.99  
192.168.0.99 - - [10/Nov/2014:15:56:43 +0000] "GET / HTTP/1.1" 200  
14328 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0  
zlib/1.2.3 libidn/1.18 libssh2/1.4.2"  

hombre rizo

 -H/--header <header>
              (HTTP)  Extra header to use when getting a web page. You may
              specify any number of extra headers. Note that if you should add
              a custom header that has the same name as one of the internal
              ones curl would use, your externally set header  will  be  used
              instead  of the internal one. This allows you to make even
              trickier stuff than curl would normally do. You should not
              replace internally set headers without knowing perfectly well
              what you’re doing. Remove an internal header by  giving  a
              replacement without content on the right side of the colon,
              as in: -H "Host:".

Referencias

Modify_method_and_headers


1
Quiero cambiar la fuente IP creo, y no permite que en lo que puedo decir ...
TMM

¿A qué protocolo? He agregado un ejemplo del mundo real del cambio de la dirección IP de origen que se refleja en los registros de acceso de apache.
geedoubleya

2
http http http http
tmm

Esto no cambiará la IP que la máquina ve adjunta a la solicitud TCP sin procesar.
de Raad

3

Creo que la respuesta aceptada realmente no te ayudará a falsificar tu IP por completo. Realmente no puede falsificar su IP de origen a menos que tenga acceso a enrutadores cercanos a la máquina de destino.

TCP funciona en un mecanismo de enlace de 3 vías. No podrá completar este apretón de manos ya que la respuesta del apretón de manos de la máquina objetivo irá a su IP falsificada y no a la suya propia (a menos que, como se dijo antes, controle sus enrutadores cercanos y redirija la respuesta hacia usted).

PD: es posible que pueda enviar un mensaje UDP, pero no lo he probado.


Como la pregunta original preguntaba cómo se haría esto curl, supongo que están intentando acceder a algún recurso HTTP. HTTP sobre UDP no es algo que curladmita AFAIK ni es algo más allá de lo experimental en este momento.
IvanGoneKrazy

1

Es posible cambiar la dirección IP de origen, si su interfaz de red local tiene múltiples direcciones IP.

Supongamos que tiene un servidor que tiene 2 direcciones IP 1.1.1.10y 2.2.2.20:

$ ip route
default via 1.1.1.193 dev eth0 
1.1.1.192/27 via 1.1.1.193 dev eth0 
1.1.1.192/27 dev eth0  proto kernel  scope link  src 1.1.1.10
2.2.2.20 via 2.2.2.20 dev eth0  scope link

Puede verificar su dirección IP pública actual con el increíble servicio web ifconfig.co :

$ curl -4 ifconfig.co
1.1.1.10

Para acceder al servicio web ifconfig.co utilizando la otra dirección IP ( 2.2.2.20), puede crear una ruta basada en la dirección IP del servidor de destino. Use dig para encontrar las direcciones IP de destino de los Aregistros DNS :

$ dig ifconfig.co
...
ifconfig.co.            39      IN      A       104.28.18.94
ifconfig.co.            39      IN      A       104.28.19.94
...

Ahora agregue rutas personalizadas para estas direcciones IP:

$ ip route add 104.28.18.94/32 via 1.1.1.193 dev eth0 src 2.2.2.20
$ ip route add 104.28.19.94/32 via 1.1.1.193 dev eth0 src 2.2.2.20

Al ejecutar curl nuevamente, verá que está utilizando la otra dirección IP de origen:

$ curl -4 ifconfig.co
2.2.2.20

Además, su información de enrutamiento se actualiza:

$ ip route
default via 1.1.1.193 dev eth0 
1.1.1.192/27 via 1.1.1.193 dev eth0 
1.1.1.192/27 dev eth0  proto kernel  scope link  src 1.1.1.10
2.2.2.20 via 2.2.2.20 dev eth0  scope link
104.28.18.94 via 1.1.1.193 dev eth0  src 2.2.2.20
104.28.19.94 via 1.1.1.193 dev eth0  src 2.2.2.20

Nota: esto solo funciona si la dirección IP de origen se puede resolver en su servidor; de lo contrario, el protocolo de enlace TCP de 3 vías fallará, como se indica aquí .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.