2023. 7. 16. 18:42ㆍWar Game/OverTheWire
문제
다음 단계로 넘어가는 암호는 현재 단계의 암호를 31000~32000 범위의 localhost 포트에 입력하면 얻을 수 있다고 한다. 먼저 이러한 포트 중 서버가 수신 대기하는 포트를 찾고 SSL 인증이 있는 서버를 찾는다. 그런 다음 문제에 맞는 서버는 1개뿐이며 다른 서버는 보내는 모든 것을 다시 보낼 것이라고 한다.
Keyword
ssh, nmap, nc, openssl, s_client, mkdir, chmod, cat, cd, vi, ls
풀이
nmap -sC -p 31000-32000 localhost
문제에서 제시된 수신 대기 중인 포트를 찾기 위해 nmap 명령어를 사용한다. 포트 스캔 후 ssl 인증이 있는 포트와 수신 대기 중인 포트는 두 포트가 나온다 31518과 31790.
openssl s_client -connect localhost:31518
ssl과 관련됬기 때문에 openssl 명령어를 사용해서 연결을 해준다. 우선 31518 포트에 연결 후에 현재 단계의 암호를 입력했더니 그대로 다시 보낸다. 그렇다면 31518 포트는 문제에 적합한 포트가 아니라는 뜻이다.
openssl s_client -connect localhost:31790
이번에는 31790 포트에 openssl 명령어로 연결 후에 현재 단계의 암호를 입력했더니 개인키(private key)가 출력되는 것을 확인할 수 있었다.
mkdir /tmp/test_bandit16
chmod 777 /tmp/test_bandit16
cd /tmp/test_bandit16
vi sshkey.private
출력된 개인키를 파일로 만들어주기 위해 /tmp/test_bandit16 디렉토리를 만들어준 후에 권한을 부여해 준다. 그리고 이동 후에 sshkey.private 파일에 전에 출력된 개인키 내용을 저장해 준다.
ssh -i sshkey.private bandit17@localhost -p 2220
개인키도 얻었으니 bandit17 계정으로 ssh 연결을 시도해 본다. 그런데 경고문이 출력되고 로그인이 거부되었다. 알아보니 개인키 'sshkey.private'의 권한이 너무 오픈돼있다는 소리다. 즉, 개인키는 중요한 것이기 때문에 다른 사용자가 사용하지 못하게 권한을 부여하란 뜻이다.
chmod 600 sshkey.private
ls -al
개인키 'sshkey.private' 파일의 권한을 자기 자신만 사용할 수 있도록 부여 후에 잘 수행됐는지 확인해준다.
ssh -i sshkey.private bandit17@localhost -p 2220
다시 ssh를 통해 연결을 시도해 주면 bandit17 계정으로 로그인을 할 수 있다.
cat /etc/bandit_pass/bandit17
로그인 후에 /etc/bandit_pass/bandit17을 cat 명령어를 사용해서 내용을 출력하면 bandit17 계정의 암호를 확인할 수 있다.
'War Game > OverTheWire' 카테고리의 다른 글
[OverTheWire:Bandit] Level 18 ~ Level 19 (0) | 2023.07.16 |
---|---|
[OverTheWire:Bandit] Level 17 ~ Level 18 (1) | 2023.07.16 |
[OverTheWire:Bandit] Level 15 ~ Level 16 (0) | 2023.07.15 |
[OverTheWire:Bandit] Level 14 ~ Level 15 (0) | 2023.07.15 |
[OverTheWire:Bandit] Level 13 ~ Level 14 (0) | 2023.07.15 |