본문 바로가기
IT 및 정보보호 관련 소식&정보

Linux study_OverTheWire[04: ssh -i, ssh -t, setuid]

by 건행오 2020. 5. 7.
반응형

안녕하세요. 은남입니다. :)

 

제 리눅스 공부 목적으로 포스팅합니다.

Over The Wire

Over The Wire :Bandit

 

OverTheWire: Bandit

We're hackers, and we are good-looking. We are the 1%. Bandit The Bandit wargame is aimed at absolute beginners. It will teach the basics needed to be able to play other wargames. If you notice something essential is missing or have ideas for new levels, p

overthewire.org

2020/04/16 - [IT 및 정보보호 관련 소식&정보] - Linux study_Over The Wire_bandit [01 : ls, cat, find -type ]

2020/04/19 - [IT 및 정보보호 관련 소식&정보] - Linux study_Over The Wire_bandit [02: find -size, ls -alp, strings]

2020/04/21 - [IT 및 정보보호 관련 소식&정보] - Linux study_OverTheWire[03: linux strings, tr, xxd, nc]

 

지난번에 Level 15까지 진행 후 이어서 하려 합니다.


Bandit Level 15 → Level 16

Level Goal

The password for the next level can be retrieved by submitting the password of the current level to port 30001 on localhost using SSL encryption.

Helpful note: Getting “HEARTBEATING” and “Read R BLOCK”? Use -ign_eof and read the “CONNECTED COMMANDS” section in the manpage. Next to ‘R’ and ‘Q’, the ‘B’ command also works in this version of that command…

Commands you may need to solve this level

ssh, telnet, nc, openssl, s_client, nmap

 

현재단계의 패스워드를 로컬 호스트 30001 포트로 제출하면 다음 걸 알려주겠답니다.ㅎㅎ 이번에도 openssl 명령어 및 s_client를 활용해야 할 듯합니다.

 

ssh bandit15@bandit.labs.overthewire.org -p 2220

로 15에 접속하여 localhost 30001 port 접근하면 다음과 같이 나옵니다.

openssl s_client -connect localhost:30001

 openssl s_client

중간에 접근 패스워드(15 레벨)를 제출해주면 다음 패스워드까지 알려주네요.ㅎㅎ

패스워드


Bandit Level 16 → Level 17

Level Goal

The credentials for the next level can be retrieved by submitting the password of the current level to a port on localhost in the range 31000 to 32000. First find out which of these ports have a server listening on them. Then find out which of those speak SSL and which don’t. There is only 1 server that will give the next credentials, the others will simply send back to you whatever you send to it.

Commands you may need to solve this level

ssh, telnet, nc, openssl, s_client, nmap

 

이번에는 로컬 호스트 31000~32000 포트에 현재 패스워드 제출하면 다음단계껄 알려준다고 하네요.ㅎㅎ 먼저 리스닝 중인 포트 찾고 SSL로 접근 시도 시 오직 하나가 다음 인증을 해준다고 하네요. 나머진 입력값 다시 그대로 내뱉고.ㅎㅎ

그래서 접근 후 nmap을 통해 포트스캔을 해봐야 되지 싶습니다.

 

이 nmap은 정말 강력한데요. 관련 사용법이 엄청나서... 이건 따로 한번 공부하면서 포스팅해보려고 합니다.

nmap 목적지 포트 번호 정도 넣어주면 될 것 같습니다.

nmap 포트스캔

그래서 현재 open 중인 포트가 3개 확인됩니다.

우선 31518 포트를 접근했더니, 문제처럼 입력한 값을 다시 내뱉습니다.

Port 31518

그래서 다음 포트를 확인해보았습니다. 31790

31790 접근

그래서 이러한 rsa로 된 패스워드를 확인 가능합니다.

key 값

그러나... 이 패스워드를 복사해서 다음 단계를 진행하려 하니 안됩니다....

안되요..

 그래서 뒤져보니 이걸 키값으로 저장하여 시도 가능한 ssh 커맨드가 있더라고요. Level13에서 써먹은 방법이...

그래서 ssh.key라는 파일을 만들어서 시도를 해봤네요

cat > ssh.key

cat으로 파일만들기

그래서 시도해봤습니다.

ssh -i ssh.key bandit17@bandit.labs.overthewire.org -p 2220

그러면... 권한 문제를 삼더라고요... 본인만 읽어야 된다나... 권한이 잘못되었다고 합니다.

permission error

그래서 파일 권한을 보니 644여서....

400 즉 소유자 읽기 권한으로 수정하여 접근을 시도해보니 접근이 됩니다.ㅎㅎ

그 파일에 대한 권한 변경은 chmod 명령어를 사용하면 됩니다. chmod + 권한 + 파일명 

chmod 400 ssh.key

접근완료

혹시 환경이 root(admin)이 아닌 경우에는 권한이 없다고 문제를 삼을 수 있습니다.

이땐 sudo 명령어를 활용하여 파일 권한을 변경할 수 있습니다.

그 파일 권한에 대해서 보면 다음과 같이 볼 수 있는데요

제일 앞의 -는 파일을 나타내며 d인 경우 디렉터리, l인 경우 링크를 의미합니다.

그 외에는 파일 또는 디렉터리에 대한 권한을 의미하며, user, group, other에 대해 각각 rwx로 표현됩니다. 

rwx : 6  r:4 w:2 x:1


Bandit Level 17 → Level 18

Level Goal

There are 2 files in the homedirectory: passwords.old and passwords.new. The password for the next level is in passwords.new and is the only line that has been changed between passwords.old and passwords.new

NOTE: if you have solved this level and see ‘Byebye!’ when trying to log into bandit18, this is related to the next level, bandit19

Commands you may need to solve this level

cat, grep, ls, diff

 

 

이번엔 2개 파일이 홈 디렉터리에 있는데 구패스워드, 신패스워드랍니다. 다음 레벨 패스워드는 신패스워드에 있는데  두 패스워드 사이에 유일하게 변경된 라인이라네요...

뭐 두 파일 비교하라는 거 같습니다. 그래서 diff 명령어를 사용하라나 봅니다.

diff 명령어는 비교할 파일명을 그냥 넣어주면 되는데요.

diff passwords.new passwords.old

diff 활용

결과 값에서

kfBf3 eYk5 BPBRzwjqutbbfE887 SVc5 Yd

를 다음 단계에 사용해보려 합니다.(제일 마지막 건 패스워드가 아니라고 나오더라고요)


Bandit Level 18 → Level 19

Level Goal

The password for the next level is stored in a file readme in the homedirectory. Unfortunately, someone has modified. bashrcto log you out when you log in with SSH.

Commands you may need to solve this level

ssh, ls, cat

 

bandit18에 접근했더니 안됩니다.... Byebye가 떠버리네요

Bandit18 접근시도

level 19로 가는 설명을 보니 홈 디렉터리의 readme를 읽으라고 합니다. 그런데. bashrc를 수정해놔서 로그인 시도하면 byebye 해버린다네요.ㅎㅎ

 

그 ssh -t를 사용하면 psuedo terminal라는 가상 터미널을 생성하여 Inpu/output을 가능하게 해 준다고 하네요. 구글링을 통해서 나온 건데, 정확한 건 따로 더 알아봐야 될 것 같습니다. 그래서 다음 명령어를 이용하면 됩니다.

 

ssh -t

그러면 Byebye!라는 아웃풋이 아닌 readme 파일을 읽어달라는 명령어에 대한 결과물을 확인할 수 있습니다. 신기하네요..;

 


Bandit Level 19 → Level 20

Level Goal

To gain access to the next level, you should use the setuid binary in the homedirectory. Execute it without arguments to find out how to use it. The password for this level can be found in the usual place (/etc/bandit_pass), after you have used the setuid binary.

 

이번에는 setuid를 확인해서 처리해야겠네요.

우선 setuid는??

소유자가 root로 된 파일에 setuid가 설정되어 있으면 일반 사용자가 이를 실행 시 소유자의 권한으로 실행할 수 있게 하는 건데요.

 

bandit20-do의 소유자 권한이 bandit20으로 되어 있고, 권한이 rws로 setuid가 실행에 걸려있네요.ㅎㅎ 이놈의 권한을 이용하여 pwd가 있는 파일을 열면 해당 권한을 활용하여 패스워드 접근이 가능합니다.

GbKksEFF4 yrVs6 il55 v6 gwY5 aVje5 f0 j

 

 

 

 

 

 

반응형

댓글