Özel IP ile CURL isteği gönderme


19

Mümkün değil mi? Bir yanıta ihtiyacım olmadığını varsayalım, sadece bir istek göndermek istiyorum. Bilgisayarımız gönderdiğinden, tcp / ip başlıklarını değiştiremeyiz mi? Muhtemelen bir şeyleri kaçırıyorum, gerçekten merak ediyorum, üniversitede bunu öğreniyorum.

Yanıtlar:


25

-H/--headerArgümanı kullanarak şunları yapabilirsiniz :

IP adresinizi taklit edebilirsiniz:

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

Örnek:
müşteri

$ curl http://webhost.co.uk  

web sunucusu

$ 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"

ip adresine sahip istemci değişti

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

web sunucusu

$ 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"  

adam kıvırmak

 -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:".

Referanslar:

Modify_method_and_headers


1
Bence kaynak IP değiştirmek istiyorum, ve ben söyleyebildiğim kadarıyla izin vermez ...
tmm

Hangi protokole? Apache erişim günlüklerine yansıtılan kaynak IP adresi değişikliğine gerçek dünya örneği ekledim.
geedoubleya

2
http http http http
tmm

Bu, makinenin ham TCP isteğine bağlı olarak gördüğü IP'yi değiştirmez.
de Raad

3

Kabul edilen cevabın IP'nizi taklit etmenize gerçekten yardımcı olmayacağını düşünüyorum. Hedef makineye yakın yönlendiricilere erişiminiz yoksa kaynak IP'nizi gerçekten taklit edemezsiniz.

TCP 3 yollu bir el sıkışma mekanizması üzerinde çalışır. Hedef makineden gelen el sıkışma yanıtı kendinizin değil, sahte IP'nize gideceğinden (daha önce de belirtildiği gibi, yakınlardaki yönlendiricilerini denetlemediğiniz ve yanıtı kendinize yönlendirmediğiniz sürece) bu el sıkışmasını tamamlayamazsınız.

Not: Bir UDP mesajı gönderebilirsiniz, ancak denemedim.


Orijinal soru bunun nasıl yapılacağını sorduğundan beri, curlbazı HTTP kaynaklarına erişmeye çalıştıklarını varsayıyorum. UDP üzerinden HTTP curl, AFAIK'ı destekleyen veya bu noktada deneysel olmayan bir şey değildir .
IvanGoneKrazy

1

Yerel ağ arayüzünüzde birden fazla IP adresi varsa, kaynak IP adresini değiştirmek mümkündür.

2 IP adresine sahip bir sunucunuz olduğunu varsayalım 1.1.1.10ve 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

Mevcut genel IP adresinizi müthiş ifconfig.co web hizmetiyle doğrulayabilirsiniz :

$ curl -4 ifconfig.co
1.1.1.10

Diğer IP adresini ( ) kullanarak ifconfig.co web hizmetine erişmek için 2.2.2.20, hedef sunucunun IP adresini temel alarak bir rota oluşturabilirsiniz. DNS Akayıtlarından hedef IP adreslerini bulmak için dig'i kullanın :

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

Şimdi bu IP adresleri için özel rotalar ekleyin:

$ 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

Kıvrımı tekrar çalıştırdığınızda, diğer kaynak IP adresini kullandığınızı görürsünüz:

$ curl -4 ifconfig.co
2.2.2.20

Ayrıca, yönlendirme bilgileriniz güncellenir:

$ 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

Not: belirttiği gibi kaynak IP adresi, aksi TCP 3 yollu el sıkışma başarısız olur, sunucuya çözülebilir eğer bu sadece çalışır burada .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.