🧠 SUID / SGID / Sticky Bit 권한 상승 Cheat Sheet
✅ 퍼미션 구조 요약
[특수비트][사용자][그룹][기타]
↑ ↑ ↑ ↑
SUID rwx rwx rwx
예시: -rwsr-xr-x → SUID 설정된 실행 파일
🔐 1. SUID (Set User ID)
| 항목 | 내용 |
|---|
| ✅ 역할 | 실행 시, 파일 소유자 권한으로 실행됨 (보통 root) |
| ⚠️ 주요 위험 | 일반 사용자가 root 권한 명령어 실행 가능 |
| 📁 퍼미션 예시 | -rwsr-xr-x, 숫자: 4xxx |
| 💡 실전 예 | /usr/bin/passwd (root 소유 + SUID) |
| 🔍 확인 명령어 | find / -perm -4000 -type f 2>/dev/null |
| 🎯 OSCP 포인트 | 루트 SUID 바이너리에서 쉘 실행 가능 시 → root shell 획득 가능 |
👥 2. SGID (Set Group ID)
| 항목 | 내용 |
|---|
| ✅ 역할 | 실행 시, 파일 소유 그룹 권한으로 실행됨 |
| 📁 디렉토리에서의 역할 | 디렉토리에 설정 시, 생성되는 파일/폴더가 같은 그룹 소유로 생성됨 |
| 📁 퍼미션 예시 | 파일: -rwxr-sr-x, 디렉토리: drwxrwsr-x, 숫자: 2xxx |
| 🔍 확인 명령어 (파일) | find / -perm -2000 -type f 2>/dev/null |
| 🔍 확인 명령어 (디렉토리) | find / -perm -2000 -type d 2>/dev/null |
| 💡 활용 포인트 | 공격보단 공용 디렉토리 관리용으로 많이 사용됨 |
🧷 3. Sticky Bit
| 항목 | 내용 |
|---|
| ✅ 역할 | 디렉토리 내 파일 소유자만 삭제 가능하게 제한함 |
| 📁 퍼미션 예시 | drwxrwxrwt, 숫자: 1xxx |
| 💡 일반 예시 | /tmp 디렉토리 → 누구나 파일 생성 가능하지만, 남의 파일은 삭제 불가 |
| 🔍 확인 명령어 | ls -ld /tmp 또는 find / -perm -1000 -type d 2>/dev/null |
| ⚠️ 실전 포인트 | 공격 대상은 아님 → symlink, race condition 공격 시 참고됨 |
🔢 특수 비트 숫자 요약
| 특수 비트 | 설명 | 퍼미션 숫자 예시 |
|---|
| SUID | 사용자 권한으로 실행 | 4xxx |
| SGID | 그룹 권한으로 실행 | 2xxx |
| Sticky Bit | 디렉토리 내 삭제 제한 | 1xxx |
| 조합 가능 예시 | SUID+SGID=6xxx, 모두=7xxx 등 | 6xxx, 7xxx |
🛠️ 실전 확인 명령어 모음
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null
find / -perm -1000 -type d 2>/dev/null
🧒 어린이 요약 버전
“특수한 숫자 하나가 앞에 붙으면, 이건 특별한 파일이야!”
- 4는 사용자 권한 따라간다 →
SUID
- 2는 그룹 권한 따라간다 →
SGID
- 1은 남의 파일 못 지운다 →
Sticky Bit
📌 다음 단계 추천
SUID 권한 상승 실습 예제가 필요하다면 아래를 요청해보세요:
python, nmap, bash, perl, find 권한 상승 실습 예제
GTFOBins 기반 SUID 바이너리 분석법
/tmp 디렉토리를 활용한 race condition, symlink 공격 실습