Bandit Wargame 풀이 기록입니다.
1. 문제 목표 및 접속 정보
이번건 25→26을 이어서 가야함
2. 풀이 과정
1. (첫 번째 단계) 실행파일같아서 실행해보니..
bandit26@bandit:~$ ./bandit27-do
Run a command as another user.
Example: ./bandit27-do id
2. 해결 방법
2-1 권한 보기
bandit26@bandit:~$ ls -al
total 44
drwxr-xr-x 3 root root 4096 Oct 14 09:26 .
drwxr-xr-x 150 root root 4096 Oct 14 09:29 ..
-rwsr-x--- 1 bandit27 bandit26 14884 Oct 14 09:26 bandit27-do
전에한거랑 비슷한거같다 setuid
2-2 벤딧27권한으로 cat시도
bandit26@bandit:~$ ./bandit27-do cat "/etc/bandit_pass/bandit27"
upsNCc7vzaRDx6oZC6GiR6ERwe1MowGB
크랙
3. Level [27] 비밀번호 (Flag) 획득
자신의 권한으로는 읽을 수 없는 파일을, SetUID가 설정된 래퍼(Wrapper) 프로그램을 이용하여 bandit27의 권한으로 읽어내어 플래그를 획득했습니다.
[upsNCc7vzaRDx6oZC6GiR6ERwe1MowGB]
4. 핵심 명령어 및 개념
- SetUID (Set User ID) 재확인: 파일 권한이
rwsr-x---처럼 실행 권한 자리에s가 있는 경우다. 이 프로그램을 실행하면 실행시킨 사람(bandit26)이 아니라 파일 주인(bandit27)의 권한으로 프로세스가 돌아간다. * - Binary Wrapper (래퍼 프로그램):
bandit27-do처럼 자신이 직접 기능을 수행하기보다, 다른 명령어를 인자(Argument)로 받아 대신 실행해 주는 프로그램을 말한다. 시스템 관리자가 특정 기능만 허용하려고 만들지만,cat같은 명령어를 허용하는 순간 모든 파일을 읽을 수 있는 보안 구멍이 된다. - Privilege Escalation (권한 상승): 낮은 권한의 사용자(
bandit26)가 시스템에 존재하는 허점(이번 경우엔bandit27-do)을 이용하여, 본래 접근할 수 없는 높은 권한(bandit27)의 데이터에 접근하는 해킹 기법이다. - ls -al (권한 확인): 해킹의 기본은 정찰이다.
ls -al을 통해 파일의 소유자와 권한(s비트 유무)을 확인하는 습관이 이번 문제 해결의 열쇠였다.