QUẢN LÝ NGƯỜI DÙNG VÀ QUYỀN — sudo
, /etc/passwd
, /etc/shadow
, groups
, id
, su
💡 Mục tiêu: Hiểu cách Linux quản lý người dùng và nhóm — làm nền tảng để khai thác sudo misconfigurations, password reuse, group abuse
✅ 1. CÁC LỆNH CƠ BẢN ĐỂ XEM THÔNG TIN NGƯỜI DÙNG
🔹 whoami
— bạn là ai?
→ In ra tên user hiện tại.
🔹 id
— xem UID, GID, nhóm
→ Kết quả ví dụ:
👉 Giải thích:
uid=1000(kali)
→ user ID và têngid=1000(kali)
→ group ID chínhgroups=...
→ các nhóm mà user này thuộc về
⚠️ Trong pentest: Nếu bạn thấy
groups=...,27(sudo)
→ user này có thể dùngsudo
→ tiềm năng leo quyền!
🔹 groups
— xem các nhóm bạn thuộc về
→ Tương tự phần groups
trong lệnh id
.
🔹 cat /etc/passwd
— xem danh sách tất cả user
→ Kết quả ví dụ:
👉 Cấu trúc từng dòng:
username
→ tên đăng nhậppassword
→ luôn làx
— vì mật khẩu thật nằm trong/etc/shadow
UID
→ User ID (root = 0)GID
→ Group ID chínhGECOS
→ thông tin mô tả (tên thật, số điện thoại…)homedir
→ thư mục homeshell
→ shell mặc định khi login
🔍 Trong pentest: Tìm user có shell
/bin/bash
hoặc/bin/sh
— vì họ có thể login → có thể có mật khẩu yếu hoặc file nhạy cảm trong home.✅ 2.
/etc/shadow
— NƠI CHỨA MẬT KHẨU THẬT (HASH)🔹 Xem nội dung
/etc/shadow
— CẦN QUYỀN ROOTbash→ Kết quả ví dụ:
👉 Cấu trúc:
password_hash
→ mật khẩu đã được băm (hash) — không thể đọc ngược$6$
→ hash dùng thuật toán SHA-512$1$
→ MD5 (cũ),$5$
→ SHA-256⚠️ Chỉ root mới đọc được
/etc/shadow
— vì đây là file cực kỳ nhạy cảm.💡 TRONG PENTEST — TẠI SAO QUAN TRỌNG?
- Nếu bạn dump được
/etc/shadow
(vd: qua LFI, backup file, hoặc leo quyền một phần) → bạn có thể bẻ hash mật khẩu bằngjohn
hoặchashcat
.- Nếu bạn thấy dòng
root::...
→ mật khẩu root trống → login không cần pass!- Nếu bạn thấy
username:!:...
hoặcusername:*:...
→ tài khoản bị khóa.
✅ 3. sudo
— LỆNH VÀNG
🔹 sudo
là gì?
- Cho phép user thực thi lệnh với quyền của user khác (mặc định là root).
- Được cấu hình trong file
/etc/sudoers
. 🔹
sudo -l
— LỆNH QUAN TRỌNG NHẤT KHI PENTESTbash→ Liệt kê các lệnh bạn được phép chạy với
sudo
— KHÔNG CẦN NHẬP MẬT KHẨU (nếu có cấu hìnhNOPASSWD
).👉 Ví dụ kết quả:
bash→ Dịch:
“User
kali
có thể chạyfind
hoặcbash
với quyền root — mà không cần nhập mật khẩu.”💥 → Bạn có thể leo root ngay lập tức:
bash🔹 Cấu trúc trong
/etc/sudoers
bash→ Thường dùng
visudo
để chỉnh sửa — tránh lỗi cú pháp.✅ 4.
su
— CHUYỂN ĐỔI NGƯỜI DÙNG🔹
su
— switch userbash→ Nhập mật khẩu của
username
→ chuyển sang user đó.bash→ Nhập mật khẩu root → trở thành root.
🔹
su -
— chuyển user và load môi trườngbash→ Không chỉ chuyển user → mà còn vào thư mục home, load biến môi trường như khi login thật.
✅ 5. THÊM/ XÓA USER & GROUP — (CHO BIẾT, ÍT DÙNG TRONG PENTEST)
🔹 Tạo user mới
bash→ Hệ thống sẽ hỏi mật khẩu, thông tin...
🔹 Tạo group
bash🔹 Thêm user vào group
bash→
-aG
= append to Group🔹 Xóa user
bash🧠 TÌNH HUỐNG THỰC TẾ
Bạn SSH vào máy nạn nhân với user
john
→ muốn leo lên root.🔍 Bước 1: Kiểm tra quyền sudo
bash→ Kết quả:
bash💥 Bước 2: Khai thác
zip
để leo rootTra GTFOBins → https://gtfobins.github.io/gtfobins/zip/
→ Dùng lệnh:
bash→ Bạn có shell root!
👉 Đây là lý do vì sao
sudo -l
là lệnh đầu tiên bạn phải gõ sau khi có shell ban đầu.✍️ BÀI TẬP THỰC HÀNH (TRONG KALI)
- Gõ
whoami
,id
,groups
→ ghi lại kết quả. - Xem nội dung
/etc/passwd
→ tìm user có UID=0 (root). - Dùng
sudo cat /etc/shadow
→ xem hash mật khẩu (nếu có). - Gõ
sudo -l
→ xem bạn được phép chạy lệnh gì với sudo. - Tạo user mới:
sudo adduser testuser
→ đặt mật khẩu. - Thêm
testuser
vào groupsudo
:bash - Chuyển sang user
testuser
:bash - Kiểm tra
sudo -l
trong usertestuser
→ so sánh với userkali
. - Quay lại user
kali
, xóatestuser
:bash
📝 GHI NHỚ NHANH
whoami → bạn là ai? id → xem UID, GID, groups cat /etc/passwd → xem danh sách user (không có mật khẩu thật) sudo cat /etc/shadow → xem hash mật khẩu (cần root) sudo -l → XEM NGAY SAU KHI CÓ SHELL — có thể leo root không? su → chuyển user (cần mật khẩu) su - → chuyển user + load môi trường
- Gõ
Nếu
sudo -l
cho phép chạyfind
,nmap
,vim
,cp
,mv
,zip
,tar
,awk
,perl
,python
... → tra GTFOBins để leo root.- Nếu
/etc/shadow
bị lộ → dùngjohn
hoặchashcat
để crack. - User có UID=0 → là root — kể cả tên không phải “root”.
- User có shell
/bin/false
hoặc/usr/sbin/nologin
→ không thể login → ít giá trị khai thác.
No comments:
Post a Comment