นี่คือพอร์ตMIPSซึ่งมีอยู่ใน SerComm ที่ผลิตเราเตอร์และอุปกรณ์เกตเวย์ภายในบ้าน (Linksys, Netgear, Cisco) ที่ใช้สำหรับอัพเกรดเฟิร์มแวร์
นี่คือการจัดการโดยscfgmgr
กระบวนการซึ่งกำลังฟังบนพอร์ต 32764
เมื่อเข้าถึงผ่าน telnet ข้อมูลที่ขึ้นต้นด้วยScMM
หรือMMcS
(ขึ้นอยู่กับ endianess ของระบบ) ดูเหมือนว่าจะถูกส่งคืน
มันเป็นโปรโตคอลไบนารีง่าย ๆ ที่มีส่วนหัว (0xC ไบต์) ตามด้วย payload
โครงสร้างส่วนหัว:
typedef struct scfgmgr_header_s {
unsigned long magic;
int cmd;
unsigned long len;
} scfgmgr_header;
สิ่งนี้ขึ้นอยู่กับแหล่งที่มาของ Cisco GPL (เช่น wap4410n_v2.0.1.0_gpl.tgz ที่ decommissioned ftp-eng.cisco.com)
สำหรับข้อมูลที่เกิดขึ้นจริงให้ดูคำอธิบาย elvanderb และรหัสหลามตัวอย่าง
ปัจจุบันมีชื่อเสียงในเรื่องบัฟเฟอร์ล้นล้นซึ่งสามารถให้คุณเข้าถึงอุปกรณ์ได้อย่างสมบูรณ์ ( แบ็คดอร์ ) สิ่งนี้ถูกค้นพบโดยEloi Vanderbekenในวันคริสต์มาสปี 2013 อย่างไรก็ตามอาจเป็นที่รู้จักกันว่าแฮ็กเกอร์จีนกลับมาในปี 2008 ( ไฟล์ cgi )
นี่คือวิธีการทำงาน
บัฟเฟอร์ล้นมากเกินไป:
ข้อความ:
ดังนั้นการใช้ข้อความล้นง่ายสามารถให้รายละเอียดที่น่าสนใจมากมาย:
อย่างไรก็ตามอาจทำให้การกำหนดค่าถูกรีเซ็ตดังนั้นอย่าทำที่บ้าน
ต่อไปนี้เป็นคำสั่งที่ตรงกันข้ามที่ดำเนินการโดยเราเตอร์ที่ดำเนินการผ่านพอร์ตนี้
nvram
- การกำหนดค่าการถ่ายโอนข้อมูล
get var
- รับการกำหนดค่าต่างๆ
สแตกบัฟเฟอร์ที่มากเกินไป (หากตัวแปรถูกควบคุมโดยผู้ใช้)
set var
- ตั้งค่าการกำหนดค่า var
บัฟเฟอร์ล้นตามสแต็กบัฟเฟอร์เอาต์พุต (ขนาด≈ 0x10000) อยู่บนสแต็ก
commit nvram
- อ่าน nvram / dev / mtdblock / 3 จาก / tmp / nvram และตรวจสอบ CRC
ตั้งค่า nvram (/ dev / mtdblock / 3) จาก / tmp / nvram; ตรวจสอบ CRC
ตั้งค่าโหมดบริดจ์เปิด (ไม่แน่ใจฉันไม่มีเวลาทดสอบ)
nvram_set(“wan_mode”, bridgedonly)
nvram_set(“wan_encap”, 0)
nvram_set(“wan_vpi”, 8)
nvram_set(“wan_vci”, 81)
system(“/usr/bin/killall br2684ctl”)
system(“/usr/bin/killall udhcpd”)
system(“/usr/bin/killall -9 atm_monitor”)
system(“/usr/sbin/rc wan stop >/dev/null 2>&1”)
system(“/usr/sbin/atm_monitor&”)
แสดงความเร็วอินเทอร์เน็ตที่วัดได้ (ดาวน์โหลด / อัพโหลด)
cmd (ใช่มันเป็นเปลือก…)
คำสั่งพิเศษ:
- ออกจาก, ลาออก, เลิก -> ออกจาก ... (มีชีวิต = 0)
- cd: เปลี่ยนไดเรกทอรี (WTF นิดหน่อย)
คำสั่งอื่น ๆ :
- ล้นจำนวนเต็มในการจัดการ stdout (?) ไม่ใช้ประโยชน์ แต่ยัง ...
- บัฟเฟอร์ล้นบนเอาต์พุต cmd (บัฟเฟอร์เดียวกันอีกครั้ง) ...
เขียนไฟล์
- ชื่อไฟล์ในส่วนของข้อมูล
- root dir = / tmp
- การสำรวจเส้นทางไดเรกทอรีอาจเป็นไปได้ (ไม่ได้ทดสอบ แต่เป็นการเปิด (sprintf (“ / tmp /% s”, payload)) …)
เวอร์ชันส่งคืน
ip เราเตอร์โมเด็มส่งคืน
เรียกคืนการตั้งค่าเริ่มต้น
- nvram_set (“ restore_default”, 1)
- nvram_commit
อ่าน / dev / mtdblock / 0 [-4: -2]
- ไม่รู้ว่ามันคืออะไรฉันไม่มีเวลาที่จะทดสอบ
dump nvram บนดิสก์ (/ tmp / nvram) และกระทำ
ที่มา: (สไลด์โชว์) Linksys บันทึกคริสต์มาสของฉันได้อย่างไร!
ปกติที่ชนิดของพอร์ตควรจะเป็นอย่างเป็นทางการโดยIANA
นี่คือสิ่งที่unSpawnตอบกลับใน LinuxQuestions ในปี 2550 ที่เกี่ยวข้องกับพอร์ตนี้:
หากเป็นพอร์ต IANA ที่ได้รับมอบหมายอย่างเป็นทางการ (ที่มีตัวเลขระหว่าง 0 ถึงประมาณ 30,000) หมายเลขนั้นควรสอดคล้องกับบริการใน / etc / services ('getent services portnumber') ไฟล์บริการของเครื่องสแกนเช่น Nmap หรือออนไลน์ ฐานข้อมูลเช่น ISC ของ Sans
/proc/sys/net/ipv4/ip_local_port_range
sysctl
โปรดทราบว่าการใช้งานพอร์ตชั่วคราวสามารถกำหนดค่าการใช้ในประเทศ ค่าเริ่มต้นเก่าคือ 1024-5000 สำหรับเซิร์ฟเวอร์มีการใช้ค่า 32768-61000 และบางแอปพลิเคชันต้องการบางอย่างเช่น 1025-65535
นอกจากนี้โปรดทราบว่าสิ่งเหล่านี้เป็นการแมปแบบตัวเลขต่อบริการแบบสแตติกและในขณะที่อินสแตนซ์ / etc / services จะพูดว่าTCP/22
จับคู่ SSH ที่ไม่จำเป็นต้องเป็นกรณีในสถานการณ์เฉพาะ
อื่นถ้ามันเป็นท่าที่คุณไม่ทราบว่ากระบวนการไม่ผูกกับมันแล้วถ้าคุณมีการเข้าถึงไปยังโฮสต์คุณสามารถสอบปากคำโดยใช้netstat -anp
, หรือlsof -w -n -i protocol:portnumber
fuser -n protocol portnumber
นี่เป็นวิธีที่แม่นยำที่สุด
มิฉะนั้นถ้าคุณไม่มีสิทธิ์เข้าถึงโฮสต์คุณสามารถสอบปากคำได้โดยยกตัวอย่างเช่น telnet'ting นี่ไม่ใช่วิธีที่ถูกต้องและในกรณีของโฮสต์ที่ถูกบุกรุกคุณอาจแจ้งเตือนผู้บุกรุกว่าคุณอยู่ในเคสของเธอ
ดูสิ่งนี้ด้วย: