มันควรจะเป็นไปไม่ได้? สมมติว่าฉันไม่ต้องการคำตอบฉันแค่ต้องการส่งคำขอ เราไม่ควรเปลี่ยน tcp / ip header ได้เพราะคอมพิวเตอร์ของเราส่งมัน? ฉันอาจจะหายไปบางสิ่งบางอย่างอยากรู้อยากเห็นจริง ๆ เรียนรู้เกี่ยวกับมันในมหาวิทยาลัย
มันควรจะเป็นไปไม่ได้? สมมติว่าฉันไม่ต้องการคำตอบฉันแค่ต้องการส่งคำขอ เราไม่ควรเปลี่ยน tcp / ip header ได้เพราะคอมพิวเตอร์ของเราส่งมัน? ฉันอาจจะหายไปบางสิ่งบางอย่างอยากรู้อยากเห็นจริง ๆ เรียนรู้เกี่ยวกับมันในมหาวิทยาลัย
คำตอบ:
คุณสามารถใช้-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:".
อ้างอิง:
ฉันคิดว่าคำตอบที่ยอมรับจะไม่ช่วยให้คุณหลอก IP ของคุณได้ตลอดทาง คุณไม่สามารถปลอมแปลง IP ต้นทางของคุณได้นอกเสียจากว่าคุณจะเข้าถึงเราเตอร์ใกล้กับเครื่องเป้าหมาย
TCP ทำงานบนกลไกการจับมือ 3 ทาง คุณจะไม่สามารถดำเนินการจับมือนี้ให้เสร็จสมบูรณ์เนื่องจากการตอบสนองการจับมือกันจากเครื่องเป้าหมายจะไปที่ IP ปลอมแปลงของคุณและไม่ใช่ของคุณเอง (เว้นแต่จะกล่าวก่อนหน้านี้ว่าคุณสามารถควบคุมเราเตอร์ใกล้เคียง
PS: คุณอาจจะสามารถส่งข้อความ UDP ได้ แต่ฉันไม่ได้ลองเลย
curl
ฉันจะสมมติว่าพวกเขาพยายามเข้าถึงทรัพยากร HTTP บางอย่าง HTTP ผ่าน UDP ไม่ใช่สิ่งที่curl
สนับสนุน AFAIK หรือเป็นสิ่งที่เกินกว่าการทดลองในตอนนี้
เป็นไปได้ที่จะเปลี่ยนที่อยู่ 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 วิธีการจับมือกันจะล้มเหลวเป็นแหลมออกที่นี่