
The password for the next level is stored in a file readme in the homedirectory. Unfortunately, someone has modified .bashrc to log you out when you log in with SSH.
다음 레벨의 패스워드는 home 디렉토리의 readme 파일에 저장되어 있다. 불행히도 누군가 .bashrc를 조작했고 SSH로 접근하려 하면 로그아웃 된다.
ssh, ls, cat
우선 SSH로 접근이 불가하므로 이전 레벨인 bandit17 권한을 이용해 접근했다.
리눅스 파일 시스템에서 /etc 디렉토리는 환경 설정 관련 파일을 가지고 있다. 그 중 passwd 파일은 사용자의 패스워드 정보를 가지고 있다. 사용자가 패스워드를 입력하면 etc/passwd 파일에 있는 패스워드와 입력한 패스워드를 해시함수로 비교하고 값이 동일하면 로그인 처리한다. 따라서 etc/passwd 파일에는 해시로 암호화된 패스워드가 있다.
bandit17 계정으로 로그인해 /etc/passwd 파일의 내용 중 bandit18과 관련된 라인을 찾았다.
bandit17@bandit:~$ cat /etc/passwd | grep bandit18
bandit18:x:11018:11018:bandit level 18:/home/bandit18:/bin/bash
[사용자 계정]:[사용자 암호]:[사용자 ID]:[사용자가 속한 그룹 ID]:[사용자 코멘트 정보]:[사용자의 홈 디렉토리 정보]:[사용자의 기본 shell 정보]
bandit18 계정의 로그인 관련 정보를 확인할 수 있다. bandit18 계정의 암호는 x 표기가 되어 있으므로 /etc/shadow 파일에서 확인할 수 있을 것이다. 기본 shell은 bash다. 따라서 bandit18 계정으로 로그인하는 경우 bash shell이 실행되고 이는 .bashrc의 설정을 따른다. 그렇다면 .bashrc 파일 내에 SSH 연결 시 로그아웃 처리하라는 라인이 있을 것으로 예상해볼 수 있다.
그렇다면 bash로 접근할 수 없을 때, .bashrc 파일에 접근해 내용을 수정하거나 bash shell을 사용하지 않고 다른 shell을 사용하면 어떨까? bandit18 계정의 패스워드를 가지고 있으므로 똑같이 SSH로 접근하더라도 bash 계열의 shell을 사용하지 않으면 .bashrc 파일의 설정을 따르지 않을 것이다.
ssh -t bandit18@bandit.labs.overthewire.org -p 2220 sh
cat readme