Bài viết này chỉ để tham khảo để tăng thêm sự hiểu biết về các phương pháp hack chứ ko xài được nữa, nhưng hy vọng qua đó bạn có thể hình dung được những cách hacking mà hacker nước ngoài đã từng áp dụng, do đây là những bài viết được dịch từ tài liệu English nên có nhiều từ khó hiểu tuy nhiên vẫn có thể hiểu được, mong các bạn thông cảm. Bài đầu là bài viết về "Symlink - một kiểu tấn công cổ điển đối với hệ thống Unix" :
Các tập tin tạm hầu hết trên các hệ thống đã trở thành bãi chứ đồ phế liệu điện tử. May thay, trong Unix hầu hết các tập tin tạm được tạo trong 1 thư mục, đó là /tmp (nó giống như thư mục temp của windows). Tuy đây là nơi tiện dụng để ghi các tập tin tạm, song nó cũng đầy hiểm hoạ. Nhiều chương trình gốc SUID được viết mà để tạo các tập tin làm việc trong /tmp hoặc các thư mục khác mà không chút kiểm tra tính đúng đắn nào. Vấn đề bảo mật chính nảy sinh từ các chương trình mù quáng theo các symbolic link đến các tập tin khác. Symbolic link là 1 cơ chế, ở đó một tập tin được tạo thông qua lệnh ln. Symbolic link chẳng qua là một tập tin trỏ đến 1 tập tin khác (hiểu như là shortcut trong windows) . Hãy tạo một symbolic link từ /tmp/foo và trỏ nó đến /etc/passwd.
[gk@sunami /tmp]$ ln -s /tmp/foo /etc/passwd
Giờ đây nếu ta cat từ /tmp/foo, ta sẽ lấy được nội dung file /etc/passwd. Tính năng có vẻ như "Lành" này là một mối hiểm hoạ. Tuy các tập tin trích chuyển [scratch files] được tạo trong /tmp vẫn thường bị lạm dụng nhiểu nhất, song vẫn có các ứng dụng tạo các tập tint trích chuyển ở nơi khác trên hệ tập tin.
Trong ví dụ, ta sẽ nghiên cứu kiểu khai thác dtappgather của Solaris (Bugtrap ID 131). Dtappgather là một trình tiện ích có trong môi trường vi tính chung [common desktop evironment]. Mỗi lần thi hành dtappgather , nó tạo một tập tin tạm tên /var/dt/appconfig/appmanager/generic-display-0 và chmod là 0666. Nó cũng thay đổi quyền sở hữu tập tin thành UID của người dùng đã thi hành chương trình (tức là attacker). Đáng tiếc, dtappgather không tiến hành kiểm tra tính đúng đắn để xác định xem tập tin đó tồn tại hay đó là symbolic link. Do đó, nếu bọn tấn công tạo một symbolic link từ /var/dt/appconfigappmanager/generic-display-0 đến một tập tin khác trên hệ tập tin (ví dụ, /etc/passwd), chmod của tập tin này sẽ là 0666 và quyền sở hữu tập tin sẽ đổi thành của attacker. Chủ sở hữu là chmod của tập tin /etc/passwd là root:sys:
bash-2.02$ ls -1 /etc/passwd
-r-xr-xr-x 1root sys 560 May 5 22:36 /etc/passwd
Kế đó, ta sẽ tạo một symbolic link từ /var/dt/appconfig/appmanager/generic-display-0 đến /etc/passwd
ls - /etc/passwd /var/dt/appconfig/appmanager/generic-display-0
Cuối cùng, thi hành dtappgather và kiểm tra các chmod của tập tin /etc/passwd
bash-2.02$ /usr/dt/bin/dtappgather
MakeDirectory:
/var/dt/appconfig/appmanager/generic-display-0 : File exits
bash-2.02$ ls -1 /etc/passwd
-r-xr-xr-x 1 gk staff 560 May 5 22:36 /etc/passwd
Dtappgather mù quáng theo symbolic link đến /etc/passwd và đã thay đổi quyền sở hữu của tập tin thành ID người dùng của chúng ta. Cũng cần phải lặp lại tiến trình trên với /etc/shadow. Sau khi quyền sở hữu của /etc/passwd và /etc/shadow được đổi thành ID của attacker, attacker có thể sửa đổi cả hai tập tin và bổ sung một tài khoản UID 0 (tương đương root) và tập tin passwd. Trò chơi kết thúc trong vòng chưa đầy một phút làm việc.
Biện pháp phòng chống Symlink
Các thói quen viết security code là biện pháp phòng chống tốt nhất sẵn dùng. Đáng tiếc, nhiều chương trình được viết mã mà không tiến hành kiểm tra tính đúng đắn trên các tập tin hiện có. Các lập trình viên phải kiểm tra để xem tập tin có tồn tại hay không trước khi tạo ra nó, bằng cách dùng các cờ O_EXCL | O_CREAT. Khi tạo các tập tin tạm, bạn set UMASK rồi dùng các hàm tmp file( ) hoặc mktemp( ). Nếu thực sự muốn xem phần bổ trợ nhỏ của các tập tin tạm, bạn thi hành lệnh sau trong /bin hoặc /usr/sbin/.
bash-2.02$ string * Igrep tmp
Nếu chương trình là SUID, attacker có tiềm năng thi hành một cuộc tấn công simlink. Như thường lệ, bạn gỡ bỏ SUID ra khỏi nhiều tập tin càng tốt, để giảm nguy cơ của các chỗ yếu simlink. Cuối cùng, hãy xét khả năng dùng mo065t công cụ như L0ght Watch giám sát hoạt động của /tmp và thông báo cho bạn về các chương trình tạo tậo tin tạm. Có thề tìm L0ght Watch tại
http://www.L0ght.com/advisories/l0ght-watch.taz.gz.