워게임/bandit

[overthewire] bandit23 -> bandit24 워게임 풀어보기

HutJy 2024. 10. 25. 21:48
반응형

 

문제 해석

시간 기반 작업 스케줄러인 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의 비밀번호를 읽어올 수 있습니다.

반응형