Improper permission setting – Sticky bit not set in Word-writeable directories

Sticky bit

Sticky เป็นบิตพิเศษในการให้สิทธิในการเข้าถึงไฟล์ แต่จะตั้งค่ากับไดเรกทอรี ซึ่งมีความหมาย คือไฟล์ในไดเรกทอรีจะมี ลบ เปลี่ยนชื่อ ได้เฉพาะ

  • เจ้าของไฟล์
  • เจ้าของไดเรกทอรี
  • root 

วิธีตรวจสอบ

ใช้คำสั่งตามข้างล่างเพื่อตรวจสอบว่ามี Word-writable directories หรือไม่ ถ้ามีและจำเป็นต้องใช้ให้ตั้งค่า Stickey bit ดังนี้

  • ตรวจสอบโดยใช้คำสั่ง
     find / -xdev -type d -perm -002 \! -perm -1000 
  • สามารถแก้ไขโดยใช้คำสั่งดังนี้
     chmod +t /tmp2 

วิธีทดลอง

  • ติดตั้ง Kali Linux
  • สร้าง User account ใหม่ โดยใช้คำสั่ง
      
    useradd oat  
    id oat  
    sudo passwd oat  
    
  • เปิด SSH service ตามบทความ https://blog.itselectlab.com/?p=5066
      
    service ssh start  
    nmap -sS 127.0.0.1  
    
  • เข้าไปที่ / แล้วตรวจสอบ Directory ชื่อ tmp จะพบว่า มี permission คือ Word-writeable (777) และแถมด้วย Stickey bit คือ ตัว t ดังนี้
      
    cd /  
    ls -al  
    
  • จากนั้นให้สร้าง Directory ขึ้นมาใน / แล้วตั้ง permission ให้เป็น Word-writeable (777)
     
    mkdir tmp2 
    chmod 777 tmp2 
    
  • สร้างไฟล์ ให้กับ ทั้งสอง Directory และ set permission เป็น Word-writeable (777) ดังนี้
     
    vim test.txt 
    chmod 777 
    test.txt 
    
  • ในการใช้ vim มีหลักการอยู่ว่า เมื่อพิมพ์ ข้อมูลลงไปแล้ว ให้ กดปุ่ม “esc” จากนั้นพิมพ์ :w แล้ว “enter” เพื่อ save ข้อความ และพิมพ์ : ตามด้วย x แล้ว “enter” อีกครั้งเพื่อออกจากโปรแกรม
  • แล้วทำซ้ำที่ /tmp2 อีกครั้ง
  • จากนั้นให้ทดลอง SSH เข้ามา โดยใช้ account ใหม่ที่สร้างไว้ เพื่อทดลองลบไฟล์ test2.txt และ test.txt ในแต่ละ Folder โดยใช้คำสั่ง ดังนี้
     
    ssh oat@192.168.71.128 
    
  • จากการทดลองพบว่า ไฟล์ test2.txt ที่อยู่ใน Directory ที่ไม่ set stickey bit สามารถลบออกไปได้ แต่ในขณะที่ test1.txt ที่อยู่ใน Directory ที่ set stickey bit จะแสดงข้อความว่า “cannot remove…”

อ้างอิง