[overthewire] bandit23 -> bandit24 워게임 풀어보기
문제 해석
시간 기반 작업 스케줄러인 cron으로부터 일정한 간격에 자동적으로 실행되는 프로그램이 있다.
"/etc/cron.d/"의 구성과 어떤 명령어가 실행되는지 확인하보자.
메모 1 : 이번 단계에선 직접 많은 자신의 첫 번째 쉘 스크립트가 필요하다. 이것은 아주 큰 성취가 될 것이며, 이번 단계를 통과한다면 당신은 스스로 자랑스러워 해도 됩니다.
메모 2 : 당신의 쉘 스크립트는 한 번 실행되면 삭제되는 것을 기억하세요. 당신은 아마 복사할 수 있는 곳을 원할 수도 있습니다.
일단 이 문제에서 처음 해야할 것은 /etc/cron.d/ 디렉터리를 확인하는 것 입니다.
/etc/cron.d 디렉터리를 확인해보니 cronjob_bandit24라는 파일이 있네요.
저 파일을 읽어보니 /usr/bin/cronjob_bandit24.sh 이라는 쉘 스크립트 파일을 주기적으로
실행시키고 남은 출력값은 /dev/null이라는 파일에 백그라운드로 저장한다고 하네요.
쉘 스크립트 파일은 어떤 프로그램을 실행하는지도 보면
/var/spool/$myname/foo 라는 디렉터리에 있는 모든 파일을 실행 시킨 후 삭제시킨다는 내용이네요.
여기서 변수 $myname은 bandit24가 되는데
/usr/bin/cronjob_bandit24.sh이라는 파일의 소유자는 bandit24이기 때문에
이 쉘 스크립트 파일이 실행되면 bandit24 계정의 권한을 이용해서 실행 시킵니다.
그래서 쉘 스크립트를 실행 시킬 때의 whoami 명령어의 결과값은 bandit24가 됩니다.
여기서 중요한 건
"쉘 스크립트 파일을 실행하는 동안에는 bandit24 권한이 생긴다는 것"
따라서 쉘 스크립트가 실행되는 순간 /etc/bandit_pass/bandit24 파일에서 비밀번호를 읽어오면
된다는 것 입니다.
자동으로 실행되는 쉘 스크립트는 /var/spool/bandit24/foo 라는 디렉터리 안에 있는 모든 실행 파일을
실행시키고 삭제하므로 이 디렉터리 안에
/etc/bandit_pass/bandit24 파일을 /tmp/password.txt 파일에 읽어오고
권한을 777로 바꾸는 스크립트 파일을 저장하면
해당 스크립트가 자동으로 실행되어 bandit24의 비밀번호를 읽어올 수 있습니다.