Mengirim permintaan CURL dengan IP khusus

19

Bukankah seharusnya itu mungkin? Anggap saja saya tidak butuh jawaban, saya hanya ingin mengirim permintaan. Tidakkah kita dapat mengubah tcp / ip header, karena komputer kita mengirimkannya? Saya mungkin kehilangan sesuatu, hanya benar-benar ingin tahu, mempelajarinya di universitas.

tmm
sumber

Jawaban:

25

Anda dapat menggunakan -H/--headerargumen:

Anda bisa menipu alamat ip Anda:

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

Contoh:
klien

$ curl http://webhost.co.uk  

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

klien dengan alamat ip berubah

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

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

man curl

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

Referensi:

Modify_method_and_headers

geedoubleya
sumber
1
Saya ingin mengubah IP sumber saya pikir, dan itu tidak memungkinkan sejauh yang saya tahu ...
tmm
Ke protokol mana? Saya telah menambahkan contoh dunia nyata dari perubahan alamat IP sumber yang tercermin dalam log akses apache.
geedoubleya
2
http http http http
tmm
Ini tidak akan mengubah IP yang dilihat mesin terlampir pada permintaan TCP mentah.
de Raad
3

Saya pikir jawaban yang diterima tidak akan benar-benar membantu Anda menipu IP Anda sepanjang jalan. Anda tidak dapat benar-benar menipu IP sumber Anda kecuali Anda memiliki akses ke router yang dekat dengan mesin target.

TCP bekerja pada mekanisme jabat tangan 3 arah. Anda tidak akan dapat menyelesaikan jabat tangan ini karena respons jabat tangan dari mesin target akan menuju ke IP palsu Anda dan bukan milik Anda sendiri (kecuali, seperti yang dikatakan sebelumnya, Anda mengendalikan router-router terdekatnya dan mengarahkan respons ke diri Anda sendiri).

PS: Anda mungkin dapat mengirim pesan UDP, tetapi saya belum mencobanya.

looney Tuhan
sumber
Karena pertanyaan awal bertanya tentang bagaimana hal ini akan dilakukan curl, saya berasumsi mereka mencoba mengakses beberapa sumber HTTP. HTTP over UDP bukanlah sesuatu yang curlmendukung AFAIK juga bukan sesuatu yang eksperimental pada saat ini.
IvanGoneKrazy
1

Dimungkinkan untuk mengubah alamat IP sumber, jika antarmuka jaringan lokal Anda memiliki beberapa alamat IP.

Misalkan Anda memiliki server yang memiliki 2 alamat IP, 1.1.1.10dan 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

Anda dapat memverifikasi alamat IP publik Anda saat ini dengan layanan web ifconfig.co yang mengagumkan :

$ curl -4 ifconfig.co
1.1.1.10

Untuk mengakses layanan web ifconfig.co menggunakan alamat IP lainnya ( 2.2.2.20), Anda dapat membuat rute berdasarkan alamat IP server target. Gunakan dig untuk menemukan alamat IP target dari Acatatan DNS :

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

Sekarang tambahkan rute khusus untuk alamat IP ini:

$ 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

Menjalankan curl lagi, Anda melihat bahwa Anda menggunakan alamat IP sumber lain:

$ curl -4 ifconfig.co
2.2.2.20

Juga, informasi perutean Anda diperbarui:

$ 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

Catatan: ini hanya berfungsi jika alamat IP sumber dapat diselesaikan ke server Anda, jika tidak jabat tangan TCP 3 arah akan gagal, seperti yang ditunjukkan di sini .

pymkin
sumber