QUẢN LÝ NGƯỜI DÙNG VÀ QUYỀN — sudo, /etc/passwd, /etc/shadow, groups, id, su


 

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?

bash
whoami

→ In ra tên user hiện tại.


🔹 id — xem UID, GID, nhóm

bash
id

→ Kết quả ví dụ:

bash
uid=1000(kali) gid=1000(kali) groups=1000(kali),27(sudo),116(docker)

👉 Giải thích:

  • uid=1000(kali) → user ID và tên
  • gid=1000(kali) → group ID chính
  • groups=... → 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ùng sudo → tiềm năng leo quyền!


🔹 groups — xem các nhóm bạn thuộc về

bash
groups

→ Tương tự phần groups trong lệnh id.


🔹 cat /etc/passwd — xem danh sách tất cả user

bash
cat /etc/passwd

→ Kết quả ví dụ:

root:x:0:0:root:/root:/bin/bash
kali:x:1000:1000:kali:/home/kali:/bin/bash
mysql:x:110:115:MySQL Server,,,:/nonexistent:/bin/false

👉 Cấu trúc từng dòng:

username:password:UID:GID:GECOS:homedir:shell
  • username → tên đăng nhập
  • passwordluôn là x — vì mật khẩu thật nằm trong /etc/shadow
  • UID → User ID (root = 0)
  • GID → Group ID chính
  • GECOS → thông tin mô tả (tên thật, số điện thoại…)
  • homedir → thư mục home
  • shell → 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 ROOT

bash
sudo cat /etc/shadow

→ Kết quả ví dụ:

root:$6$TrOIx2aX$...:19487:0:99999:7:::
kali:$6$AbCdEf$...:19487:0:99999:7:::

👉 Cấu trúc:

username:password_hash:last_change:min:max:warn:inactive:expire
  • 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ằng john hoặc hashcat.
  • 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ặc username:*:... → 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 PENTEST

    bash
    sudo -l

    → Liệt kê các lệnh bạn được phép chạy với sudoKHÔNG CẦN NHẬP MẬT KHẨU (nếu có cấu hình NOPASSWD).

    👉 Ví dụ kết quả:

    bash
    User kali may run the following commands on kali:
    (ALL) NOPASSWD: /usr/bin/find
    (root) NOPASSWD: /bin/bash

    → Dịch:

    “User kali có thể chạy find hoặc bash 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
    sudo /bin/bash
    # hoặc
    sudo find . -exec /bin/bash \; -quit

    🔹 Cấu trúc trong /etc/sudoers

    bash
    username hostname=(target_user) NOPASSWD: /path/to/command

    → 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 user

    bash
    su username

    → Nhập mật khẩu của username → chuyển sang user đó.

    bash
    su root

    → Nhập mật khẩu root → trở thành root.


    🔹 su - — chuyển user và load môi trường

    bash
    su - root

    → 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
    sudo adduser newuser

    → Hệ thống sẽ hỏi mật khẩu, thông tin...


    🔹 Tạo group

    bash
    sudo groupadd newgroup

    🔹 Thêm user vào group

    bash
    sudo usermod -aG newgroup username

    -aG = append to Group


    🔹 Xóa user

    bash
    sudo deluser username

    🧠 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
    sudo -l

    → Kết quả:

    bash
    User john may run the following commands on victim:
    (root) NOPASSWD: /usr/bin/zip

    💥 Bước 2: Khai thác zip để leo root

  • Tra GTFOBins → https://gtfobins.github.io/gtfobins/zip/

    → Dùng lệnh:

    bash
    sudo zip /tmp/exploit.zip /etc/shadow -T --unzip-command="sh -c /bin/bash"

    → Bạn có shell root!

    👉 Đây là lý do vì sao sudo -llệ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)

    1. whoami, id, groups → ghi lại kết quả.
    2. Xem nội dung /etc/passwd → tìm user có UID=0 (root).
    3. Dùng sudo cat /etc/shadow → xem hash mật khẩu (nếu có).
    4. sudo -l → xem bạn được phép chạy lệnh gì với sudo.
    5. Tạo user mới: sudo adduser testuser → đặt mật khẩu.
    6. Thêm testuser vào group sudo:
      bash
      sudo usermod -aG sudo testuser
    7. Chuyển sang user testuser:
      bash
      su - testuser
    8. Kiểm tra sudo -l trong user testuser → so sánh với user kali.
    9. Quay lại user kali, xóa testuser:
      bash
      sudo deluser testuser
      sudo rm -rf /home/testuser

    📝 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

     

  •  Nếu sudo -l cho phép chạy find, nmap, vim, cp, mv, zip, tar, awk, perl, python... → tra GTFOBins để leo root.

  • Nếu /etc/shadow bị lộ → dùng john hoặc hashcat để 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