✅ 1. HIỂU VỀ QUYỀN FILE LINUX (FILE PERMISSIONS)
Mỗi file/thư mục trong Linux có 3 loại quyền:
- r (read) — đọc nội dung
- w (write) — ghi/chỉnh sửa/xóa
- x (execute) — thực thi (file) / vào được (thư mục)
Quyền được chia cho 3 nhóm người dùng:
- User (u) — chủ sở hữu file
- Group (g) — nhóm người dùng
- Others (o) — tất cả người dùng khác
👉 Khi gõ ls -l
, bạn thấy:
Giải thích:
-
→ loại file (-
= file thường,d
= thư mục)rwx
→ quyền của user (chủ sở hữu)r-x
→ quyền của groupr--
→ quyền của others1
→ số hard linkkali kali
→ owner và group1024
→ kích thướcApr 5 10:00
→ thời gian sửa đổiscript.sh
→ tên file✅ 2.
chmod
— THAY ĐỔI QUYỀN FILE/THƯ MỤCChức năng: Thay đổi quyền truy cập (read/write/execute).
🔹 2 cách dùng: Symbolic mode và Numeric mode
🅰️ Symbolic Mode (dễ hiểu, trực quan)
Cú pháp:
bashu
= user,g
= group,o
= others,a
= all+
thêm quyền,-
bớt quyền,=
gán quyềnr
,w
,x
— quyền cụ thể
💡 Ví dụ:
bash🅱️ Numeric Mode (dùng số — phổ biến hơn)
Mỗi quyền có giá trị:
r
= 4w
= 2x
= 1
→ Cộng lại → ra số quyền.
Ví dụ:
rwx
= 4+2+1 = 7r-x
= 4+0+1 = 5rw-
= 4+2+0 = 6
→ Quyền file gồm 3 chữ số:
[user][group][others]
💡 Ví dụ:
bash
✅ 3. chown
& chgrp
— THAY ĐỔI CHỦ SỞ HỮU & NHÓM
🔹 chown
— Change Owner
💡 Ví dụ:
👉 Trong pentest:
- Nếu bạn có quyền
sudo chown
, có thể chiếm quyền file hệ thống → privilege escalation. - Nếu thư mục web có quyền ghi và bạn đổi owner → upload shell dễ dàng.
🔹 chgrp
— Change Group (ít dùng hơn — chown
có thể thay thế)
✅ 4. umask
— THIẾT LẬP QUYỀN MẶC ĐỊNH KHI TẠO FILE/THƯ MỤC
Chức năng: Quy định quyền mặc định khi tạo file mới.
→ umask
là giá trị bị trừ đi từ quyền tối đa:
- File: mặc định
666
(rw-rw-rw-) - Thư mục: mặc định
777
(rwxrwxrwx)
💡 Ví dụ:
👉 Trong pentest:
- Nếu bạn tạo file trong
/tmp
— kiểm traumask
để biết quyền mặc định → có thể bị người khác đọc/ghi không? ✅ 5.
find
— TÌM KIẾM FILE THEO NHIỀU TIÊU CHÍ (CỰC KỲ QUAN TRỌNG!)Chức năng: Tìm file/thư mục theo tên, quyền, owner, kích thước, thời gian...
🔹 Cú pháp cơ bản:
bash💡 Các cách dùng HAY GẶP TRONG PENTEST:
➤ Tìm file theo tên:
bash➤ Tìm file theo quyền:
bash➤ Tìm file theo owner:
bash➤ Tìm file theo kích thước:
bash➤ Kết hợp với hành động:
bash🧠 TÌNH HUỐNG THỰC TẾ
Bạn SSH vào máy nạn nhân với quyền user thường → muốn escalate lên root.
🔍 Bước 1: Tìm file SUID khả nghi
bash→ Kết quả:
💥 Bước 2: Khai thác SUID find
bash→ Bạn có shell root!
👉 Đây là lý do vì sao
find
,chmod
,chown
là bộ 3 quyền lực trong Privilege Escalation.📝 GHI NHỚ NHANH — IN RA DÁN TRƯỚC MÁY
⚠️ MẸO AN TOÀN & HIỆU QUẢ
- Luôn dùng
2>/dev/null
khifind
trong root → tránh ngập màn hình lỗi. - Dùng
ls -l
như phản xạ — trước khi đọc/ghi/xóa file. - Khi upload webshell → nhớ
chmod +x
nếu cần thực thi. - Khi tìm SUID → note lại các binary có thể khai thác:
find
,nmap
,vim
,bash
,cp
,mv
...
GIẢI THÍCH
SUID
là gì? (Set User ID)📌 KHÁI NIỆM:
- SUID = Set User ID upon execution
- Là một bit quyền đặc biệt trên file (thường là file thực thi — binary/script).
- Khi bật SUID → bất kỳ ai chạy file đó sẽ có quyền của CHỦ SỞ HỮU file, chứ không phải quyền của người chạy.
💡 VÍ DỤ THỰC TẾ:
Giả sử file
/usr/bin/passwd
có quyền:bash→ Chữ
s
ở vị tríx
của user → SUID đã bật.→ Dù bạn là user
kali
, khi chạypasswd
để đổi mật khẩu → hệ thống sẽ cho phép bạn ghi vào file/etc/shadow
(chỉ root mới ghi được) → vìpasswd
đang chạy với quyền root.- Luôn dùng
- Nếu bạn tìm thấy file SUID có thể khai thác (vd:
find
,nmap
,vim
,bash
,cp
...) → bạn có thể leo thang đặc quyền lên root! - Trong Linux, có 3 luồng (stream) mặc định:
0
→ stdin (nhập vào)1
→ stdout (xuất ra — kết quả lệnh)2
→ stderr (xuất lỗi — error message)
- Khi pentest, bạn thường tìm file trên toàn hệ thống — nhưng chỉ có quyền user thường → rất nhiều lỗi “Permission denied”.
- Dùng
2>/dev/null
giúp bạn tập trung vào kết quả hữu ích, không bị phân tâm bởi lỗi. perm
là viết tắt của permission — quyền.- Trong lệnh
find
,-perm
là option để tìm file theo quyền. - Linux dùng hệ bát phân (octal) để biểu diễn quyền.
- Bit SUID có giá trị là 4000 (trong hệ octal).
- Bit SGID (Set Group ID) là 2000.
- Bit Sticky là 1000.
/usr
là thư mục hệ thống chứa các chương trình, thư viện, tài liệu... dùng chung cho tất cả người dùng.- KHÔNG PHẢI là “user” — nhiều người nhầm!
💥 Ví dụ khai thác SUID find
:
→ Dòng lệnh này sẽ mở shell với quyền của chủ sở hữu file find
— nếu find
có SUID và owner là root → bạn có shell root!
👉 Lệnh tìm SUID trong hệ thống:
→ 2>/dev/null
nghĩa là:
“Chuyển hướng tất cả THÔNG BÁO LỖI (stderr) vào
/dev/null
— tức là GIẤU CHÚNG ĐI, không hiển thị ra màn hình.”
💡 VÍ DỤ:
→ Lệnh này tìm tất cả file .log
từ thư mục gốc /
.
→ Nhưng khi quét /
, bạn không có quyền đọc nhiều thư mục → Linux sẽ in ra hàng trăm dòng lỗi kiểu:
→ Dùng 2>/dev/null
để giấu hết lỗi đi, chỉ hiện kết quả thật sự → màn hình sạch sẽ, dễ đọc!
💡 VÍ DỤ:
→ Tìm tất cả file có quyền 4000 → tức là có bật SUID.
🔢 Giải thích số 4000:
→ -perm -4000
: tìm file có bật bit SUID (dấu -
nghĩa là “ít nhất phải có quyền này”).
💡 CẤU TRÚC BÊN TRONG /usr
:
- Khi bạn tìm SUID, thường thấy các file trong
/usr/bin
— vì đây là nơi chứa các binary hệ thống. - Khi upload exploit, bạn có thể lưu trong
/usr/local/tmp
hoặc/usr/share
nếu có quyền ghi. - Khi enum hệ thống, bạn cần kiểm tra
/usr/bin
,/usr/sbin
để tìm version dịch vụ, công cụ có sẵn...
🅰️ SGID (Set Group ID — giá trị 2000)
- Tương tự SUID, nhưng áp dụng cho nhóm (group).
- File có SGID → khi chạy, sẽ có quyền của nhóm chủ sở hữu.
- Thư mục có SGID → file tạo bên trong sẽ thừa kế nhóm của thư mục, không phải nhóm của người tạo.
→ Dùng trong môi trường chia sẻ nhóm.
🅱️ Sticky Bit (giá trị 1000)
- Thường dùng cho thư mục.
- Ai cũng có thể tạo file, nhưng chỉ chủ sở hữu file mới được xóa file đó.
- Ví dụ: thư mục
/tmp
→ Chữ t
ở cuối → sticky bit đã bật.
→ User A tạo file trong /tmp
→ User B không thể xóa file đó → tránh phá hoại.
No comments:
Post a Comment