1. 문제
- 홈 디렉터리에 setuid 바이너리를 사용해야 합니다.
2. 관련 지식
- Linux와 Unix 시스템에서 setuid, setgid는 파일 또는 디렉터리에 특별한 권한을 부여하여 사용자가 해당 파일을 실행하거나 디렉터리에 접근할 때 파일 소유자 또는 그룹의 권한으로 동작할 수 있도록 설정한다.
- Sticky Bit는 특정 디렉터리에서 파일 관리 권한을 제어하는 데 사용된다.
2.1 setuid (Set User ID)
2.1.1 개념
- setuid 비트가 설정된 실행 파일을 사용자가 실행하면 해당 파일은 실행자의 권한 대신 파일 소유자의 권한으로 실행됨.
- 일반적으로 시스템 파일 수정, 비밀번호 변경 등과 같이 더 높은 권한이 필요한 작업에 사용된다.
2.1.2 설정 방법
- chmod 4755 <파일 이름>: 4는 setuid를 설정하는 플래그.
- ls -l로 확인 시 권한 필드에서 s로 표시:
- -rwsr-xr-x 1 root root 12345 Dec 25 12:34 /usr/bin/passwd
2.1.3 예제
- /usr/bin/passwd:
- 사용자 비밀번호를 변경할 때 시스템 파일(/etc/passwd, /etc/shadow)을 수정해야 하므로 setuid가 필요.
- 이 파일은 root 권한으로 실행된다.
2.2 setgid (Set Group ID)
2.2.1 개념
- 파일: setgid 비트가 설정된 실행 파일은 실행자가 속한 그룹이 아니라 파일의 그룹 권한으로 실행된다.
- 디렉터리: 디렉터리에 setgid가 설정되면 해당 디렉터리에 생성되는 모든 파일과 하위 디렉터리는 디렉터리의 그룹을 상속받는다.
2.2.2 설정 방법
- chmod 2755 <파일/디렉터리 이름>: 2는 setgid를 설정하는 플래그.
- ls -l로 확인 시 권한 필드에서 s로 표시:
- drwxr-sr-x 2 root engineers 4096 Dec 25 12:34 shared_folder
2.2.3 예제
- 디렉터리에서 그룹 상속:
- mkdir shared chmod 2770 shared ls -ld shared # 결과: drwxrws--- 2 root engineers 4096 Dec 25 12:34 shared
2.4 보안 고려 사항
2.4.1 setuid 및 setgid의 보안 위험
- 루트 권한 남용
- 잘못 설계된 setuid 프로그램은 공격자가 루트 권한을 획득하는 데 악용될 수 있습니다.
- 예: 버퍼 오버플로 공격을 통해 악성 코드를 실행.
- 잘못 설계된 setuid 프로그램은 공격자가 루트 권한을 획득하는 데 악용될 수 있습니다.
- 환경 변수 조작
- setuid 프로그램이 실행될 때 환경 변수를 철저히 검사하지 않으면 공격자가 권한을 악용할 수 있습니다.
- 예: GNU libc의 공유 라이브러리를 통한 취약점.
2.4.2 Sticky Bit의 보안 역할
- Sticky Bit는 디렉터리 내 파일 삭제 권한을 파일 소유자에게 제한하여 불필요한 파일 삭제를 방지.
3. 풀이
- 해당 bandit20-do를 확인해보니
- euid를 보면 일시적으로 bandit20의 소유자 권한을 얻을 수 있다.
- 그렇다면 bandit20을 실행해서 비밀번호를 읽어오면 된다.
'Wargame > bandit wargame' 카테고리의 다른 글
Bandit Level 20 → 21 (2) | 2025.01.06 |
---|---|
20 → 21 까지 필요한 명령어 (0) | 2025.01.06 |
Bandit Level 18 → 19 (0) | 2025.01.06 |
Bandit Level 17 → 18 (0) | 2025.01.06 |
17 → 19 까지 필요한 명령어 (0) | 2025.01.06 |