Gửi yêu cầu CURL với IP tùy chỉnh


19

Có nên không? Giả sử tôi không cần phản hồi, tôi chỉ muốn gửi yêu cầu. Chúng ta không nên thay đổi các tiêu đề tcp / ip, bởi vì máy tính của chúng ta gửi nó? Tôi có lẽ đang thiếu một cái gì đó, chỉ thực sự tò mò, tìm hiểu về nó trong uni.

Câu trả lời:


25

Bạn có thể sử dụng -H/--headerđối số:

Bạn có thể giả mạo địa chỉ IP của bạn:

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

Ví dụ:
khách hàng

$ curl http://webhost.co.uk  

máy chủ 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"

khách hàng có địa chỉ IP đã thay đổi

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

máy chủ 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"  

người đàn ông cuộn tròn

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

Tài liệu tham khảo:

Sửa đổi_method_and_headers


1
Tôi muốn thay đổi IP nguồn tôi nghĩ, và nó không cho phép điều đó theo như tôi có thể nói ...
tmm

Giao thức nào? Tôi đã thêm một ví dụ thực tế về thay đổi địa chỉ IP nguồn được phản ánh trong nhật ký truy cập apache.
geedoubleya

2
http http http http
tmm

Điều này sẽ không thay đổi IP mà máy thấy được đính kèm với yêu cầu TCP thô.
de Raad

3

Tôi nghĩ rằng câu trả lời được chấp nhận sẽ không thực sự giúp bạn giả mạo IP của mình mọi cách. Bạn thực sự không thể giả mạo IP nguồn của mình trừ khi bạn có quyền truy cập vào các bộ định tuyến gần với máy đích.

TCP hoạt động trên cơ chế bắt tay 3 chiều. Bạn sẽ không thể hoàn thành cái bắt tay này vì phản hồi bắt tay từ máy mục tiêu sẽ chuyển đến IP giả mạo của bạn chứ không phải của riêng bạn (trừ khi, như đã nói trước đó, bạn điều khiển các bộ định tuyến gần đó và chuyển hướng phản hồi về phía mình).

PS: Bạn có thể gửi tin nhắn UDP, nhưng tôi chưa thử.


Vì câu hỏi ban đầu đã hỏi về cách thực hiện với điều này curl, tôi cho rằng họ đang cố gắng truy cập một số tài nguyên HTTP. HTTP qua UDP không phải là thứ gì đó curlhỗ trợ AFAIK cũng không phải là thứ gì đó vượt quá thử nghiệm vào thời điểm này.
IvanGoneKrazy

1

Có thể thay đổi địa chỉ IP nguồn, nếu giao diện mạng cục bộ của bạn có nhiều địa chỉ IP.

Giả sử bạn có một máy chủ có 2 địa chỉ IP 1.1.1.102.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

Bạn có thể xác minh địa chỉ IP công cộng hiện tại của mình bằng dịch vụ web ifconfig.co tuyệt vời :

$ curl -4 ifconfig.co
1.1.1.10

Để truy cập dịch vụ web ifconfig.co bằng địa chỉ IP khác ( 2.2.2.20), bạn có thể tạo tuyến dựa trên địa chỉ IP của máy chủ đích. Sử dụng đào để tìm địa chỉ IP mục tiêu từ các Abản ghi DNS :

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

Bây giờ thêm các tuyến tùy chỉnh cho các địa chỉ IP này:

$ 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

Chạy lại curl, bạn thấy rằng bạn đang sử dụng địa chỉ IP nguồn khác:

$ curl -4 ifconfig.co
2.2.2.20

Ngoài ra, thông tin định tuyến của bạn được cập nhật:

$ 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

Lưu ý: điều này chỉ hoạt động nếu địa chỉ IP nguồn có thể được phân giải đến máy chủ của bạn, nếu không, bắt tay 3 bước TCP sẽ thất bại, như được chỉ ra ở đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.