Bandit Level 25 → Level 26
Level Goal
Logging in to bandit26 from bandit25 should be fairly easy… The shell for user bandit26 is not /bin/bash, but something else. Find out what it is, how it works and how to break out of it.
Sol)
이번엔 막연하게 문제를 던져 줬다. bash가 아니라 다른 어떤 것이라고 한다. 그리고 꽤 쉽게 찾을 수도 있다고 한다.
일단 계정 디렉토리에 뭐가 있는지 살펴보면
친절하게도 'bandit26.sshkey'가 있다. 이걸로 bandit26으로 접속을 시도한다.
이전 계정들과 다르게 텍스트형태의 그림같은게 출력되고 종료된다.
그럼 일단 level16에서 시도한 방법과 level18에서 시도한 방법을 섞어 시도했지만
안된다. 일단 뭔가 바로 종료되도록 하는 것 같은데 그게 이전 문제들과 달리 로그인 자체가 다르지 않을까 의심해본다. 그래서 리눅스 로그인과 문제에서 나온 "bin/bash"를 연관지어 찾아봤다.
구글링해보니 'nologin'계정이라는 것이 있어 다른 블로그의 포스팅을 찾아봤는데 계정 정보를 보려면 '/etc/passwd' 파일을 찾아봐야 한다고 한다. 예상은 bandit26이 nologin 계정이 아닐까 싶어 일단 확인해본다.
이전에 썼던 계정들과 쓸 계정들 전부 다 뜨는데 파일 이름이 passwd인데 비밀번호는 없는 듯하다. 구조가 이해가 불가능 하니 또 찾아봤다.
bandit26:x:11026:11026:bandit level 26:/home/bandit26:/usr/bin/showtext
형태를 보면 ':'으로 구분되어 있다. 첫번째 부터
- 사용자명
- 비밀번호(보안상 'x'로 표기되어 있다고 한다.)
- UID(User ID)
- GID(Group ID)
- 사용자 추가정보
- 홈 디렉토리
- 로그인 쉘
로 구성되어 있다. 여기서 봐야할 곳은 로그인 쉘인데 다른 계정들은 '/bin/bash'로 되어 있지만 bandit26의 계정은 '/usr/bin/showtext'로 되어있다.
로그인 쉘은 사용자가 로그인할 때 실행되는 것으로 문제에서 bin/bash가 아니라는 것은 아마 bash로 실행되지 않는다는 것을 말하나보다.
이 'showtext'를 출력해보면
이런 형태로 되어 있어 'exit 0' 부분을 수정하려 했지만 권한이 읽기만 가능하다.
'more' 명령어를 찾아보니 화면단위로 끊어 읽는다고 한다. 그리고 "!<cmd>"로 다를 쉘 명령어를 입력 할 수 있다고 설명하는데 해봤는데 안되더라. 그래서 다른 명령어를 찾아보니 more이 실행 되는 중에 v를 입력하면 해당 파일을 vi편집기로 열 수 있다고 한다.
일단 more 가 실행 중으로 만들기 위해 화면을 작게 만들고 다시 같은 방법('ssh -i bandit26.sshkey ~~~')으로 접속한다.
그럼 위와 같이 일단 more가 실행 되는 상태다. 이때 'v'를 눌러 편집기를 실행한다. 그리고 vi 명령어 중 'e'명령어로 다른 파일을 열도록 하는데 그게 우리가 원했던 '/etc/bandit_pass/bandit26'이다.(이때 계정은 bandit26이라 열린다.)
그럼 'readonly'상태로 파일을 읽을 수 있게 된다.