문제
Level 13. The password for the next level is stored in /etc/bandit_pass/bandit14 and can only be read by user bandit14. For this level, you don’t get the next password, but you get a private SSH key that can be used to log into the next level. Note: localhost is a hostname that refers to the machine you are working on.
/etc/bamdit_pass/bandit14 에 패스워드가 저장되어있지만, bandit14만 읽기 권한이 있다.
이 단계에선 다음 패스워드를 못얻지만, private SSH key를 통해 다음 단계에 로그인을 할 수 있다!
이 두가지 정보를 통해서 문제를 풀기 전에 사전지식 몇가지를 알아보도록 하자!
리눅스 ssh 접속 명령
ssh는 Secure Shell의 약자로 보안적으로 좀 더 안전하게 사용할 수 있는 네트워크 프로토콜입니다.
ssh를 통해 우리는 네트워크 상의 다른 컴퓨터에 로그인할 수 있어 서버에 접속 시 자주 사용하는 접속 방식이다.
ssh사용법
ssh [옵션] [사용자]@[원격지 ip]
ssh 옵션 종류
- default : 사용자 이름으로 접속 요청
- -p : 원격 호스트의 연결포트 설정
- -i : private 키 읽어 올 아이덴티티 파일 설정
예시
- ssh username@111.111.111.111
- ssh username@111.111.111.111 -p 8888
- ssh username@111.111.111.111 -i key_file
RSA 접속 (공개키 암호화)
리눅스에서 SSH 접속을 할 때, 가장 기본적인 접속 방법은 id와 password를 통해 서버에 접속하는게 일반적이지만 보안상의 문제로 비밀번호를 노출하지 않고 접속하는 방법을 사용한다.
그 중에 RSA 인증 방식을 통해 공개키(Public Key)와 개인키(Private Key)를 통해 접속하는 방법이 있다.
공개키는 방식은 이러하다.
- 메세지를 공개키를 통해 평문을 암호화를 한다.
- 암호문을 개인키를 가지고 있는 사람에게 보낸다.
- 개인키를 통해 암호문을 복호화하여 메세지를 읽는다.
개인키를 탈취당하지 않는다면, 암호화된 메세지가 유출되더라도 읽을 수 없게 됩니다.
서버에 저장된 개인키를 클라이언트에서 서버로 요청을 보내어 SSH를 통해 접속할 수 있습니다.
풀이
먼저 /etc/bandit_pass/bandit14 파일에 bandit14의 패스워드가 있는 것을 알 수 있습니다.
그렇기때문에 해당 파일을 읽을 수 있는지, 한 번 확인하는게 우선이 되겠죠?
이렇게 Permission denied 를 당하는건 해당 파일을 읽을 권한이 없기 때문입니다.
그리고 ls -la /etc/bandit_pass 명령어를 통해 어떤 권한을 가지면, 해당 파일을 읽을 수 있는지 확인해보면 bandit14 계정만 읽을 수 있는 것을 확인할 수 있어요.
마지막으로 ls -la 명령어로 현재 계정 폴더에 무슨 파일이 있는지 확인해봅시다.
아무래도 sshkey.private과 그 안에 RSA PRIVATE KEY가 힌트가 되겠지요?!
그러면 우리는 어떻게 문제를 접근해야하냐! 주어진 힌트를 통해 다음과 같이 풀 생각을 할 수 있어야합니다.
- private SSH Key의 힌트를 통해 ssh 접속을 할 수 있는 문제구나!
- RSA 인증 방식으로 private key 가 생성되었구나!
- localhost라는 호스트네임으로 접속할 수 있겠구나!
자 그러면 위에서 배운 사전 지식으로 여러분은 어떻게 문제를 푸시겠나요?
먼저 생각하고 아래를 확인해보세요!
생각하셨나요?! 그러면 답을 확인해봅시다.
ssh-i sshkey.private bandit14@localhost -p 2220
위에서 배운대로 우리는 bandit14 계정의 localhost 라는 hostname으로 2220 포트에 접속을 하면 됩니다.
또한 접속할 땐, 우리가 아는 RSA private key를 함께 주어 비밀번호없이도 key 인증 방식을 통해 접속할 수 있게 됩니다.
이제 접속을 하셨다면 마지막으로 /etc 아래있는 패스워드를 찾으러 가볼까요?
cat /etc/bandit_pass/bandit14
이렇게 정답을 확인하세요!
더보기를 눌러 비밀번호를 확인하세요!
비밀번호는 다음과 같다.
Level13. fGrHPx402xGC7U7rXKDaxiWFTOiF0ENq
'Bandit' 카테고리의 다른 글
리눅스 ncat SSL 네트워크 통신 | Bandit Level 15 -> Level 16 (0) | 2023.09.03 |
---|---|
리눅스 nc 데이터 전송 명령 | Bandit Level 14 -> Level 15 (1) | 2023.09.02 |
리눅스 압축 풀기 gzip, tar, bzip2 | Bandit Level 12 -> Level 13 (0) | 2023.08.31 |
리눅스 문자 변환, 삭제 명령어 tr | Bandit Level 11 -> Level 12 (0) | 2023.08.31 |
Bandit Level 9 -> Level 10 -> level 11 | 리눅스 문자만 추출 strings, base64 인코딩 (0) | 2023.08.31 |