Envoi d'une demande CURL avec une adresse IP personnalisée
19
Cela ne devrait-il pas être possible? Supposons que je n'ai pas besoin de réponse, je veux simplement envoyer une demande. Ne devrions-nous pas être en mesure de modifier les en-têtes TCP / IP, car notre ordinateur les envoie? Il me manque probablement quelque chose, vraiment curieux, en apprenant à ce sujet à l'université.
-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:".
Je veux changer l'adresse IP source, je pense, et cela ne le permet pas pour autant que je
sache
À quel protocole? J'ai ajouté un exemple réel du changement d'adresse IP source reflété dans les journaux d'accès Apache.
geedoubleya
2
http http http http
tmm
Cela ne changera pas l'IP que la machine voit attachée à la requête TCP brute.
de Raad
3
Je pense que la réponse acceptée ne vous aidera pas vraiment à usurper complètement votre adresse IP. Vous ne pouvez pas vraiment usurper votre IP source à moins d'avoir accès à des routeurs proches de la machine cible.
TCP fonctionne sur un mécanisme de prise de contact à 3 voies. Vous ne pourrez pas terminer cette poignée de main car la réponse de la poignée de main de la machine cible ira à votre adresse IP usurpée et non à la vôtre (sauf si, comme dit précédemment, vous contrôlez ses routeurs à proximité et redirigez la réponse vers vous-même).
PS: Vous pourrez peut-être envoyer un message UDP, mais je ne l'ai pas essayé.
Étant donné que la question d'origine demandait comment cela serait fait curl, je suppose qu'ils essaient d'accéder à une ressource HTTP. HTTP sur UDP n'est pas quelque chose qui curlprend en charge AFAIK ni quelque chose au-delà de l'expérimentation à ce stade.
IvanGoneKrazy
1
Il est possible de modifier l'adresse IP source, si votre interface réseau locale a plusieurs adresses IP.
Supposons que vous ayez un serveur qui possède 2 adresses IP 1.1.1.10et 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
Vous pouvez vérifier votre adresse IP publique actuelle avec le formidable service Web ifconfig.co :
$ curl -4 ifconfig.co
1.1.1.10
Pour accéder au service Web ifconfig.co à l'aide de l'autre adresse IP ( 2.2.2.20), vous pouvez créer un itinéraire basé sur l'adresse IP du serveur cible. Utilisez dig pour trouver les adresses IP cibles à partir des Aenregistrements DNS :
$ dig ifconfig.co
...
ifconfig.co. 39 IN A 104.28.18.94
ifconfig.co. 39 IN A 104.28.19.94
...
Ajoutez maintenant des itinéraires personnalisés pour ces adresses 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
En exécutant à nouveau curl, vous voyez que vous utilisez l'autre adresse IP source:
$ curl -4 ifconfig.co
2.2.2.20
De plus, vos informations de routage sont mises à jour:
$ 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
Remarque: cela ne fonctionne que si l'adresse IP source peut être résolue sur votre serveur, sinon la négociation TCP à 3 échouera, comme indiqué ici .
Je pense que la réponse acceptée ne vous aidera pas vraiment à usurper complètement votre adresse IP. Vous ne pouvez pas vraiment usurper votre IP source à moins d'avoir accès à des routeurs proches de la machine cible.
TCP fonctionne sur un mécanisme de prise de contact à 3 voies. Vous ne pourrez pas terminer cette poignée de main car la réponse de la poignée de main de la machine cible ira à votre adresse IP usurpée et non à la vôtre (sauf si, comme dit précédemment, vous contrôlez ses routeurs à proximité et redirigez la réponse vers vous-même).
PS: Vous pourrez peut-être envoyer un message UDP, mais je ne l'ai pas essayé.
la source
curl
, je suppose qu'ils essaient d'accéder à une ressource HTTP. HTTP sur UDP n'est pas quelque chose quicurl
prend en charge AFAIK ni quelque chose au-delà de l'expérimentation à ce stade.Il est possible de modifier l'adresse IP source, si votre interface réseau locale a plusieurs adresses IP.
Supposons que vous ayez un serveur qui possède 2 adresses IP
1.1.1.10
et2.2.2.20
:Vous pouvez vérifier votre adresse IP publique actuelle avec le formidable service Web ifconfig.co :
Pour accéder au service Web ifconfig.co à l'aide de l'autre adresse IP (
2.2.2.20
), vous pouvez créer un itinéraire basé sur l'adresse IP du serveur cible. Utilisez dig pour trouver les adresses IP cibles à partir desA
enregistrements DNS :Ajoutez maintenant des itinéraires personnalisés pour ces adresses IP:
En exécutant à nouveau curl, vous voyez que vous utilisez l'autre adresse IP source:
De plus, vos informations de routage sont mises à jour:
Remarque: cela ne fonctionne que si l'adresse IP source peut être résolue sur votre serveur, sinon la négociation TCP à 3 échouera, comme indiqué ici .
la source