Bài viết này sẽ giải thích leo thang đặc quyền là gì và cách chúng ta có thể nâng cấp đặc quyền của mình bằng cách sử dụng file quyền SUID. Bạn có thể sử dụng kiến thức này để giải quyết thử thách số 8 của Christmas Advent of Cyber.
Leo thang đặc quyền là gì?
Hệ thống máy tính được thiết kế để nhiều người dùng sử dụng và các đặc quyền có nghĩa là những gì người dùng được phép làm. Các đặc quyền phổ biến bao gồm xem và chỉnh sửa tệp hoặc sửa đổi tệp hệ thống.
Leo thang đặc quyền là hành động khai thác lỗi, lỗ hổng thiết kế hoặc cấu hình trong hệ điều hành hoặc ứng dụng phần mềm để có được quyền truy cập cao hơn vào các tài nguyên thường được bảo vệ từ một ứng dụng hoặc người dùng.
SUID là gì?
SUID là một loại quyền tệp đặc biệt được cấp cho một tệp. Khi người dùng chạy một chương trình, nếu họ có quyền đọc/thực thi chính xác, chương trình đó sẽ chạy bằng các đặc quyền tài khoản của họ. SUID cho phép người dùng chạy một chương trình bằng cách sử dụng các đặc quyền của người dùng khác. Để hiểu thêm về các đặc quyền của tệp, hãy hoàn thành thử thách 4 trong phòng Christmas hoặc đọc tài liệu hỗ trợ tại đây.
Trong một số trường hợp, chúng ta có thể tận dụng lợi thế của việc chạy file với tư cách người dùng khác, để thực hiện các lệnh khai thác. Bạn có thể đang nghĩ, tại sao lại cho phép bất kỳ ai chạy tệp với tư cách người dùng khác chứ, đúng không? Tuy nhiên, chúng ta cần có một số tệp nhị phân nhất định được chạy dưới quyền root bởi người dùng không có đặc quyền.
Ví dụ: nếu chúng ta thay đổi mật khẩu của mình trên Linux, chương trình thực hiện việc này cần có quyền thay đổi file hệ thống. Bạn có thể không có quyền ghi vào thư mục /etc/, nhưng root thì có. Đây là lý do tại sao mã nhị phân mật khẩu có bit SUID.
Nếu một tệp nhị phân có bit SUID thì sẽ có quyền s. Nếu chúng ta kiểm tra các quyền đối với tệp nhị phân mật khẩu, chúng ta có thể thấy các quyền -rwsr-xr-x.
Bit SUID được đặt trên quyền thực thi, có nghĩa là khi người dùng chạy tệp này, nó sẽ chạy với tư cách là chủ sở hữu tệp (là root).
Về bản chất, các tệp SUID thực thi với sự cho phép của chủ sở hữu tệp.
Tận dụng các file SUID
Một số quản trị viên sẽ đặt bit SUID theo cách thủ công để cho phép một số chương trình nhất định được chạy. Giả sử bạn là quản trị viên hệ thống và người dùng không có đặc quyền muốn lập trình yêu cầu file chạy với các đặc quyền cao hơn. Họ có thể đặt bit SUID, sau đó người dùng không có đặc quyền có thể thực thi chương trình mà không cần thêm bất kỳ quyền tài khoản nào.
Chúng ta có thể quét toàn bộ hệ thống tệp để tìm tất cả các tệp có bit SUID, với lệnh sau:
find / -user root -perm -4000 -exec ls -ldb {} \;
Chúng ta có thể thấy một số tệp nhị phân chạy với tư cách là root, là các chương trình hợp pháp có các quyền phù hợp được thiết lập để thực hiện đúng tác vụ.
Nếu một sysadmin đã đặt thủ công bit SUID trên một tệp nhị phân, thì đoạn lệnh trên sẽ tìm thấy các file đó. Bạn có thể tận dụng lệnh này để nâng cao đặc quyền của mình hoặc chạy các lệnh mà bình thường bạn không thể thực hiện được.
Mẹo dành cho thử thách SUID
Một tệp nhị phân Linux chuẩn thông thường (chẳng hạn như lệnh find), có thể thay đổi chủ sở hữu tệp và bit SUID.
Ví dụ: nếu chúng ta muốn biết người dùng đang chạy lệnh find là gì, chúng ta có thể làm như sau:
touch foo
find foo -exec whoami \;
Lệnh này sẽ tìm thấy tệp foo (mà chúng ta vừa tạo), sau đó chạy lệnh với tham số -exec.
Nếu bạn tìm thấy một tệp có vẻ đáng ngờ? Hãy thử chạy nó và xem bạn có thể làm gì với nó? Chạy lệnh whoami để xem tệp có thực sự chạy với tư cách là root hay không.
Nếu bạn được cung cấp tùy chọn để chạy lệnh với tư cách người dùng khác. Tại sao không chạy /bin/bash để chạy bash (nhằm lấy shell) với tư cách người dùng khác?
Ngoài ra, bạn có thể xem cách giải bài về Shodan.io trên TryHackMe tại đây.