Jawaban:
Anda dapat menggunakan -H/--header
argumen:
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:
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.
curl
, saya berasumsi mereka mencoba mengakses beberapa sumber HTTP. HTTP over UDP bukanlah sesuatu yang curl
mendukung AFAIK juga bukan sesuatu yang eksperimental pada saat ini.
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.10
dan 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 A
catatan 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 .