✅ 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,chownlà 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/nullkhifindtrong root → tránh ngập màn hình lỗi. - Dùng
ls -lnhư phản xạ — trước khi đọc/ghi/xóa file. - Khi upload webshell → nhớ
chmod +xnế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
SUIDlà 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/passwdcó quyền:bash→ Chữ
sở vị tríxcủ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/nullgiú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. permlà viết tắt của permission — quyền.- Trong lệnh
find,-permlà 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.
/usrlà 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/tmphoặc/usr/sharenế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