BLOG
Tracefield · 02
Tracefield · 01
블로그 · 14
Vibe Audit · 04
Vibe Audit · 03
Vibe Audit · 02
Vibe Audit · 01
출판편집자 · 01
StudyTree · 01
SecurityOps · 02
SecurityOps · 01
AI챗봇 · 04
AI챗봇 · 03
AI챗봇 · 02
AI챗봇 · 01
퍼플심 · 04
퍼플심 · 03
퍼플심 · 02
퍼플심 · 01
블로그 · 13
rootscan · 07
rootscan · 06
블로그 · 12
블로그 · 11
블로그 · 10
블로그 · 09
블로그 · 08
블로그 · 07
블로그 · 06
블로그 · 05
블로그 · 04
블로그 · 03
블로그 · 02
블로그 · 01
rootscan · 05
rootscan · 04
rootscan · 03
asmspeak · 03
asmspeak · 02
rootscan · 02
asmspeak · 01
rootscan · 01
웹보안도구 · 02
웹보안도구 · 01
루트캠프 · 02
루트캠프 · 01
All notes 167
2025-12-13 / 호스트기반모의해킹 · 35
리눅스 SUID 권한 악용
1. 개요
SUID(Set User ID)는 리눅스의 특수 권한 중 하나로, 파일 실행 시 실행자가 아닌 "파일 소유자(Owner)"의 권한으로 실행되게 하는 기능이다.
- 정상 용도: 일반 사용자가 비밀번호를 변경할 때 사용하는
/usr/bin/passwd는 root 권한이 필요하므로 SUID가 설정되어 있다.
- 악용: 만약
find, vim, bash 같은 일반 바이너리에 관리자의 실수로 SUID가 설정되어 있다면, 공격자는 이를 이용해 Root 권한으로 명령어를 실행할 수 있다.
2. SUID 개념 및 식별
2.1 권한 비트 확인
ls -l /usr/bin/passwd
- 실행 권한(
x) 자리에 s가 있으면 SUID가 설정된 것이다.
- 소유자가
root이고 s가 있다면, 누가 실행하든 Root 권한으로 실행된다.
2.2 취약한 SUID 파일 탐색
공격자는 시스템 전체에서 루트 소유이면서 SUID가 걸린 파일을 찾아야 한다.
find / -user root -perm -4000 -type f 2>/dev/null
-user root: 소유자가 루트인 파일.
-perm -4000: SUID 비트(4000)가 설정된 파일.
- 결과 예시:
/usr/bin/passwd, /usr/bin/ping(정상), /usr/bin/find(비정상 - 타겟).
3. GTFOBins를 이용한 공격(Exploitation)
GTFOBins(https://gtfobins.github.io)는 유닉스 바이너리를 이용해 권한 상승/우회를 할 수 있는 명령어 모음 사이트다.
3.1 타겟 분석(Find 바이너리)
find 명령어에 SUID가 설정된 것을 발견했다고 가정하자.
- GTFOBins 접속 -> "find" 검색 -> "SUID" 항목 클릭.
- 제공된 페이로드 확인:
find . -exec /bin/sh -p \; -quit
find의 -exec 옵션은 찾은 파일에 대해 특정 명령어를 실행하는 기능이다.
- SUID가 걸린
find가 /bin/sh를 실행하므로, 쉘 또한 Root 권한으로 실행된다.
3.2 공격 실행(실습)
ls -l /usr/bin/find
/usr/bin/find . -exec /bin/sh -p \; -quit
root
- 주의:
-p 옵션은 쉘이 권한을 유지하도록(Privileged) 하는 옵션이다.(일부 최신 쉘은 SUID 실행 시 자동으로 권한을 낮추기 때문).
4. 실무 팁
- 비정상적인 SUID:
vim, bash, more, less, cp, mv 등에 SUID가 걸려 있다면 100% 관리자 실수이며 즉시 공격 가능하다.
- LD_PRELOAD: SUID 파일 실행 시 라이브러리 프리로딩(
LD_PRELOAD)을 통해 악성 라이브러리를 로드하여 루트 권한을 얻는 기법도 존재한다(Sudo 권한 설정 미흡 시에도 사용).