การส่งคำขอ CURL ด้วย IP ที่กำหนดเอง


19

มันควรจะเป็นไปไม่ได้? สมมติว่าฉันไม่ต้องการคำตอบฉันแค่ต้องการส่งคำขอ เราไม่ควรเปลี่ยน tcp / ip header ได้เพราะคอมพิวเตอร์ของเราส่งมัน? ฉันอาจจะหายไปบางสิ่งบางอย่างอยากรู้อยากเห็นจริง ๆ เรียนรู้เกี่ยวกับมันในมหาวิทยาลัย

คำตอบ:


25

คุณสามารถใช้-H/--headerอาร์กิวเมนต์:

คุณสามารถหลอกที่อยู่ IP ของคุณ:

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

ตัวอย่าง:
ลูกค้า

$ curl http://webhost.co.uk  

เว็บโฮสต์

$ 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 มีการเปลี่ยนแปลง

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

เว็บโฮสต์

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

ชายขด

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

อ้างอิง:

Modify_method_and_headers


1
ฉันต้องการเปลี่ยนแหล่ง IP ฉันคิดว่าและมันไม่อนุญาตเท่าที่ฉันสามารถบอกได้ ...
tmm

โปรโตคอลไหน? ฉันได้เพิ่มตัวอย่างโลกแห่งความจริงของการเปลี่ยนแปลงที่อยู่ IP ของแหล่งที่มาซึ่งสะท้อนให้เห็นในบันทึกการเข้าถึง apache
geedoubleya

2
http http http http
tmm

สิ่งนี้จะไม่เปลี่ยน IP ที่เครื่องเห็นแนบมากับคำร้องขอ TCP ดิบ
de Raad

3

ฉันคิดว่าคำตอบที่ยอมรับจะไม่ช่วยให้คุณหลอก IP ของคุณได้ตลอดทาง คุณไม่สามารถปลอมแปลง IP ต้นทางของคุณได้นอกเสียจากว่าคุณจะเข้าถึงเราเตอร์ใกล้กับเครื่องเป้าหมาย

TCP ทำงานบนกลไกการจับมือ 3 ทาง คุณจะไม่สามารถดำเนินการจับมือนี้ให้เสร็จสมบูรณ์เนื่องจากการตอบสนองการจับมือกันจากเครื่องเป้าหมายจะไปที่ IP ปลอมแปลงของคุณและไม่ใช่ของคุณเอง (เว้นแต่จะกล่าวก่อนหน้านี้ว่าคุณสามารถควบคุมเราเตอร์ใกล้เคียง

PS: คุณอาจจะสามารถส่งข้อความ UDP ได้ แต่ฉันไม่ได้ลองเลย


เนื่องจากคำถามเดิมถามเกี่ยวกับวิธีการนี้curlฉันจะสมมติว่าพวกเขาพยายามเข้าถึงทรัพยากร HTTP บางอย่าง HTTP ผ่าน UDP ไม่ใช่สิ่งที่curlสนับสนุน AFAIK หรือเป็นสิ่งที่เกินกว่าการทดลองในตอนนี้
IvanGoneKrazy

1

เป็นไปได้ที่จะเปลี่ยนที่อยู่ IP ต้นทางหากอินเตอร์เฟสเครือข่ายท้องถิ่นของคุณมีที่อยู่ IP หลายแห่ง

สมมติว่าคุณมีเซิร์ฟเวอร์ที่มี 2 ที่อยู่ IP 1.1.1.10และ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

คุณสามารถตรวจสอบที่อยู่ IP สาธารณะปัจจุบันของคุณด้วยบริการเว็บifconfig.co ที่ยอดเยี่ยม :

$ curl -4 ifconfig.co
1.1.1.10

ในการเข้าถึงบริการเว็บifconfig.coโดยใช้ที่อยู่ IP อื่น ( 2.2.2.20) คุณสามารถสร้างเส้นทางตามที่อยู่ IP ของเซิร์ฟเวอร์เป้าหมาย ใช้ dig เพื่อค้นหาที่อยู่ IP เป้าหมายจากAระเบียนDNS :

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

ตอนนี้เพิ่มเส้นทางที่กำหนดเองสำหรับที่อยู่ 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

วิ่งงออีกครั้งคุณจะเห็นว่าคุณกำลังใช้ที่อยู่ IP ของแหล่งอื่น:

$ curl -4 ifconfig.co
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
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

หมายเหตุ: งานนี้เฉพาะในกรณีที่แหล่งที่อยู่ IP สามารถแก้ไขได้ยังเซิร์ฟเวอร์ของคุณมิฉะนั้น TCP 3 วิธีการจับมือกันจะล้มเหลวเป็นแหลมออกที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.