티스토리 뷰
id : bandit13
password : wbWdlBxEir4CaE8LaPhauuOo6pwRmrDw
(2023.04 기준)
/etc/bandit_pass/bandit14 에 패스워드가 저장되어 있는데, bandit14 user 만 읽을 수 있다고 합니다.
이번 단계에서는 패스워드를 획득하는게 아니라 ssh 개인키를 이용하면 통과할 수 있다고 하네요.
그동안 별 생각없이 ssh 로 원격 로그인을 이용해왔지만
이제는 ssh 통신의 세부 원리 를 알아야 할 때가 되었습니다.
ssh 통신의 세부 원리부터 공부하고 이 문제에 접근해봅시다.
ssh 를 통해 서버에 최초로 접속하면 이런식의 메세지를 볼 수 있습니다.
꼭 bandit13 이 아니라 bandit.overthewire.org 에 한번이라도 접속한 클라이언트는 해당 메세지가 안보일 겁니다.
이 상황에서 Accept 를 눌러서 ssh 접속이 정상으로 된 상황은
내 PC에 bandit 서버의 공개키를 등록하고 ssh 를 연결했다는 것입니다.
윈도우용 putty 프로그램은
레지스트리 HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys
에 해당 정보를 저장하고, 리눅스는 그냥 사용자 홈디렉토리/.ssh/known_hosts 에 저장됩니다.
해당 파일을 편집에서 기존의 bandit 호스트 정보를 삭제하면 다시 처음 접속할때의 화면이 나오겠죠?
어째튼 로그인 후 sshkey.private 을 살펴보니 base64 로 인코딩된 RSA 개인키값이 나오네요
개인키 값은 원래 base64 로 인코딩해서 관리됩니다.
이걸 억지로 base64 디코딩 해봤자 별 의미 없습니다.
문제에서 /etc/bandit_pass/bandit14 경로에 대한 정보를 준게 있습니다.
살펴보니까 진짜 bandit14 만 접근 가능하도록 막혀있네요.
ssh 통신에서 중요한 점은 공개키는 암호화 용이고,
개인키는 공유되지 않는 고유키이며 복호화하는데 사용된다는 점입니다.
ssh 를 조금 더 활용하면
특정 클라이언트의 공개키를 호스트(서버)의 신뢰할 수 있는 사용자 목록(authorized_keys)에
등록함으로써 인증절차(로그인)을 생략하고 이용할 수도 있습니다.
아무튼 공개키 등록만으로도 바로 접속이 가능한데
특정 ID 개인키를 가지고 있다는 것은 바로 접속이 가능한 수준의 보안키를 획득했다는 뜻입니다.
문제에서는 bandit14 의 개인키를 그냥 던져주긴 했지만요.
ssh --help 와 man ssh 를 살펴보면 개인키 파일을 이용해서 바로 접속이 가능한 옵션이 있음을 알 수 있습니다.
보통의 경우는 접속하고자 하는 서버의 ~/.ssh 폴더에 authorized_keys 가 등록되고
내 개인키가 ~/.ssh/id_rsa 로 저장되어 있으면 인증을 생략한 자동 로그인이 가능합니다.
-i 는 개인키가 ~/.ssh/id_rsa 가 아닌 특정파일을 지정할 때 사용하는 명령입니다.
리눅스에서 ssh 를 커맨드로 사용해서 바로 bandit14 로 접속해보겠습니다.
기존은 ssh [id]@[호스트주소] 입니다.
-i 로 키파일을 지정해서 동일서버(localhost) 의 bandit14 로 ssh 통신을 정식으로 시도합니다.
bandit14 의 개인키를 이용해서 성공적으로 ssh 로그인에 성공했습니다.
※ 2023.04 현재는 위 명령어로 진행하면 접속이 되지 않습니다.
예전과 다르게 관리자용 22번 포트와 bandit 유저용 2220 포트를 구분해서 운영하기 때문인데
이를 반영해서 ssh -i sshkey.private bandit14@localhost -p 2220 으로 명령어를 변경해줘야 합니다.
bandit14의 홈디렉토리를 살펴보면 ~/.ssh/authorized_keys 가 존재하고
bandit13 의 개인키와 페어를 이루는 공개키가 등록되어 있는 것을 확인할 수 있습니다.
이제 남은건 bandit14 패스워드를 직접 확인하는 일이네요.
패스워드 4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e 를 획득했습니다.
(예전 스샷입니다)
'수업 노트 > bandit' 카테고리의 다른 글
[lesson15] bandit level 15 → 16 (0) | 2021.09.19 |
---|---|
[lesson14] bandit level 14 → 15 (1) | 2021.09.18 |
[lesson12] bandit level 12 → 13 (0) | 2021.09.05 |
[lesson11] bandit level 11 → 12 (1) | 2021.08.28 |
[lesson10] bandit level 10 → 11 (0) | 2021.08.28 |
- Total
- Today
- Yesterday
- tar
- Natas
- SSL
- OverTheWire
- 32bit
- Bandit
- 리터럴
- tr
- 리눅스
- Encode
- Linux
- 웹보안공부
- java
- 압축파일
- gz
- 웹보안
- BASE64
- ssh
- OpenSSL
- bz2
- solution
- grep
- Strings
- natas7
- X32
- HTTPS
- 풀이
- nc
- over the wire
- find
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |