คลัง
linux-privesc

Linux Enumeration

Linux Enumeration คือการเก็บข้อมูลระบบหลังได้ shell แรก เพื่อหาช่องทาง privilege escalation — ผู้ใช้, สิทธิ์, service, ไฟล์ตั้งค่าผิด, software เวอร์ชันเก่า บทนี้รวบรวมคำสั่ง manual enumeration ครบทุกหมวดอย่างเป็นระบบ พร้อมสิ่งที่ต้องมองหา (เนื้อหาเพื่อฝึกใน lab/CTF/ระบบที่ได้รับอนุญาต)

BeginnerIntermediate#enumeration#linux#privesc#manual#system-info#ctf

1. หลักการ

หลังได้ shell แรก (มัก low-privilege) เป้าหมายคือยกระดับเป็น root การ enumerate อย่างเป็นระบบคือกุญแจ — เก็บข้อมูลทุกด้านแล้วมองหา misconfiguration หรือ ช่องโหว่ ที่นำไป root ทำ manual enumeration ควบคู่กับ automated (LinPEAS) เพราะบางอย่าง tool พลาด และ manual ช่วยเข้าใจระบบจริง

เนื้อหานี้เพื่อฝึกในสภาพแวดล้อมที่ได้รับอนุญาต (CTF, lab, pentest engagement) เท่านั้น
จาก shell ถึง root — ลำดับที่ควรไล่
ได้ shell แรก (low-priv)
sudo -l
รันอะไรด้วย sudo ได้บ้าง
รันได้GTFOBins → root
SUID / SGID / Capabilities
find / -perm -4000 ; getcap -r /
SUID binaryGTFOBins (ดู SUID)
cap_setuidCapabilities → root
cron / writable script / PATH hijack
root รัน script เราแก้ได้ใส่ payload → root
service / NFS / docker group
อยู่ docker/lxd groupcontainer escape

2. ข้อมูลระบบและผู้ใช้

system + user enumerationLinux
# ระบบ + kernel (หา kernel exploit)
uname -a; cat /etc/os-release
cat /proc/version
hostname

# ผู้ใช้ปัจจุบัน + สิทธิ์
id; whoami
sudo -l                          # คำสั่งที่รันด้วย sudo ได้ (สำคัญมาก!)

# ผู้ใช้ทั้งหมด
cat /etc/passwd | grep -v nologin    # user ที่ login ได้
cat /etc/group
ls -la /home/                    # home directories

# ใครเคย login / กำลัง login
last; w; who

# เราอยู่ group ไหน (docker/lxd/sudo = น่าสนใจ)
groups
sudo -l คือคำสั่งแรกที่ต้องลองเสมอ — ถ้ารันอะไรด้วย sudo ได้ มักมีทาง privesc (GTFOBins)

3. ไฟล์และสิทธิ์

หาไฟล์ที่ตั้งสิทธิ์ผิดLinux
# SUID/SGID binaries (ดูหัวข้อ SUID/SGID)
find / -perm -4000 -type f 2>/dev/null      # SUID
find / -perm -2000 -type f 2>/dev/null      # SGID

# ไฟล์/dir ที่เขียนได้ทุกคน (world-writable)
find / -writable -type d 2>/dev/null
find / -perm -2 -type f 2>/dev/null

# ไฟล์ที่ user เราเป็นเจ้าของในที่แปลกๆ
find / -user $(whoami) 2>/dev/null | grep -vE '^/proc|^/sys'

# config ที่อาจมี credential
cat ~/.bash_history
ls -la ~/.ssh/
find / -name "*.conf" -o -name "*.config" 2>/dev/null | head
grep -riE 'password|passwd|pwd' /etc/ 2>/dev/null | head
cat /var/www/html/config.php 2>/dev/null    # web config

# capabilities (ดูหัวข้อ Capabilities)
getcap -r / 2>/dev/null
SUID/SGID, world-writable, capabilities, credential ใน config/history = จุด privesc หลัก

4. Process, service, cron, network

service + scheduled + networkLinux
# process ที่รัน (โดยเฉพาะที่รันเป็น root)
ps aux | grep root
ps -ef --forest

# cron jobs (ดูหัวข้อ Cron Jobs)
cat /etc/crontab
ls -la /etc/cron.*
crontab -l

# service
systemctl list-units --type=service --state=running
ls -la /etc/systemd/system/

# network (port ที่เปิด → service ภายใน)
ss -tulpn; netstat -tulpn 2>/dev/null
# internal service ที่ bind 127.0.0.1 = น่าสนใจ (port forward)

# software เวอร์ชัน (หา exploit)
dpkg -l 2>/dev/null | head; rpm -qa 2>/dev/null | head
process รันเป็น root + cron + internal service = เป้า privesc; ss -tulpn หา service ที่ฟังเฉพาะ localhost

5. Checklist สิ่งที่ต้องมองหา

  • sudo -l — รันอะไรด้วย sudo ได้ → GTFOBins
  • SUID/SGID แปลกๆ → GTFOBins (ดู SUID/SGID)
  • capabilities (cap_setuid ฯลฯ) → privesc (ดู Capabilities)
  • cron jobs ที่รัน script ที่เราเขียนได้ → ดู Cron/Writable Scripts
  • writable PATH/script ที่ root รัน → PATH Hijacking
  • kernel เก่า → kernel exploit (ดู Kernel Exploitation)
  • credential ใน history/config/.ssh
  • กลุ่มพิเศษ (docker/lxd) → container escape (ดู Docker Escape)
  • NFS no_root_squash (ดู NFS)
  • internal service (port localhost) → exploit + port forward
ทำ manual ควบคู่ LinPEAS (ดูหัวข้อถัดไป) — LinPEAS เร็วและ highlight สิ่งน่าสนใจ แต่ manual ช่วยเข้าใจและจับสิ่งที่ tool พลาด

6. Quick Reference

  • เริ่ม: id; sudo -l; uname -a
  • SUID: find / -perm -4000; capabilities: getcap -r /
  • cron: cat /etc/crontab, ls /etc/cron.*
  • network: ss -tulpn (internal service)
  • credential: ~/.bash_history, ~/.ssh, config files
  • checklist: sudo/SUID/cap/cron/PATH/kernel/groups/NFS
  • ทำคู่ LinPEAS (automated)

🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ

สมมติเพิ่งได้ shell แรกบนเป้าหมาย (เช่นผ่านช่องโหว่ web) มีแค่ Kali เปล่าๆ และทักษะพื้นฐาน ยังไม่รู้ว่าจะเริ่มตรงไหนก่อนเพื่อขึ้นเป็น root ทำตามลำดับนี้ทีละขั้น อย่ากระโดดข้าม

  1. 1พิมพ์ id ; whoami ; hostname ; uname -a ก่อนเสมอ เพื่อรู้ว่าตัวเองเป็นใคร สิทธิ์อะไร ระบบอะไร
  2. 2พิมพ์ sudo -l ทันที — ถ้ารันอะไรด้วย sudo ได้ (มี NOPASSWD หรือรู้ password) ให้ไปเช็ค GTFOBins ตาม binary นั้นทันที
  3. 3ถ้า sudo ไม่มีทาง พิมพ์ find / -perm -4000 -type f 2>/dev/null และ getcap -r / 2>/dev/null หา SUID/capability
  4. 4ถ้ายังไม่เจอ ให้พิมพ์ cat /etc/crontab และ ls -la /etc/cron.* ดู cron ที่ root รัน
  5. 5พิมพ์ find / -writable -type f 2>/dev/null | grep -vE '^/proc|^/sys' หาไฟล์ระบบที่เขียนได้
  6. 6พิมพ์ groups ดูว่าตัวเองอยู่ group docker/lxd ไหม และ cat /etc/exports ดู NFS no_root_squash
  7. 7ถ้าไม่มีอะไรเจอเลยจากขั้นตอนข้างบน ให้โหลด linpeas.sh มารันเพื่อสแกนซ้ำแบบครบทุกด้าน (อาจจับสิ่งที่มือพลาด)
  8. 8ระหว่างนี้เก็บ credential ที่เจอด้วย: cat ~/.bash_history และ ls -la ~/.ssh/
  9. 9ถ้าทุกอย่างข้างบนตันหมด ค่อยพิจารณา kernel exploit เป็นทางเลือกสุดท้าย (เสี่ยง crash)
ลำดับการไล่ vector ตั้งแต่ shell แรกถึง root
id ; whoami ; hostname ; uname -a
รู้ตัวเองก่อนว่าเป็นใคร สิทธิ์อะไร
sudo -l
รันอะไรด้วย sudo ได้บ้าง
✅ รันได้ (มี NOPASSWD หรือรู้ password)→ เช็ค GTFOBins ตาม binary นั้น
❌ ไม่มี/ไม่รู้ password→ ไปสแกน SUID/SGID/capability ต่อ
เจอ SUID/SGID/capability ที่ abuse ได้ไหม?
✅ เจอ→ ไป exploit ตาม GTFOBins (SUID/SGID/Capabilities)
❌ ไม่เจอ→ ไปเช็ค cron/writable files
เจอ cron/writable script/service ที่ root ใช้ไหม?
✅ เจอ→ ใส่ payload รอรัน
❌ ไม่เจอ→ เช็ค group พิเศษ + NFS + service ภายใน
ขั้นตอน/งานเครื่องมือใน Kaliติดตั้งเพิ่ม (ถ้าไม่มี)เครื่องมือออนไลน์
ตรวจตัวเอง/สิทธิ์เบื้องต้นid, whoami, sudo -l--
หา SUID/SGID/capabilityfind, getcap-gtfobins.github.io
หา cron/writable filescat, ls, find -writable--
enumeration อัตโนมัติเสริม-linpeas-
monitor process แบบ real-time-pspy-
หา credential ที่หลงเหลือgrep, cat ~/.bash_history--
หา exploit ตาม service/kernel versionsearchsploit-exploit-db.com
🚑 ถ้าตันสนิท ลองท่าถัดไป: SUID/SGID/Capabilities (permission bit ที่ยังไม่เช็คครบ) · Cron Jobs (งานที่ root รันเป็นระยะ) · LinPEAS (สแกนซ้ำแบบอัตโนมัติให้ครบ) · Docker Escape (ถ้าอยู่ group docker/lxd) · Kernel Exploitation (ทางเลือกสุดท้ายเมื่อ misconfiguration หมดจริงๆ)

โน้ตของฉัน

ยังไม่มีโน้ตสำหรับหัวข้อนี้