WAR GAME/Nebula

[Exploit-Exercises: Nebula] level06 풀이

jir4vvit 2020. 6. 26. 18:14

환경설정 : iso 파일을 이용하여 서버를 연 후, kali linux을 이용하여 ssh로 서버에 접속함.
kali linux version : 4.19.0-kali3-amd64

* level06

ID: level06

PW: level06

 

level 06

flag06 계정 자격 증명은 legacy unix system(취약한 유닉스 시스템)에서 나왔다.

이 level을 수행하려면 level06 계정으로 로그인해라. 이 레벨의 파일은 /home/flag06에서 찾을 수 있다.

 


문제에서 제시한 /home/flag06 에 가보았다.

딱히 힌트가 없는 것 같다. 

 

그래서 구글링을 해보았다...

 

잊고 있었는데 내 블로그에도 포스팅 한 내용 이었다. (이래서 복습이 중요하다 ㅠㅁㅠ)

FTZ 트레이닝을 하면서 배운 내용이었다. 

jiravvit.tistory.com/entry/FTZ-Trainer-610-%EC%9A%94%EC%95%BD

[Trainer6]


cat [파일 이름] : 파일의 속 내용을 화면으로 뿌려주는 역할

패스워드 파일 : 한 서버를 사용하는 사용자들의 모든 정보를 기록해 놓은 파일 
그 사용자는 어떤 아이디, 어떤 암호를 이용하여 로그인 하는지, 어떤 그룹에 속해있는지, 이름은 무엇인지 등등....

cat /etc/passwd


-첫번째 필드: 서버에 로그인할때 사용되는 아이디(계정)

난 지금 trainer6이라는 아이디로 로그인했다
trainer6:ㅋ:ㅋ:ㅋ:ㅋ:ㅋ:ㅋ

-두번째 필드: 패스워드가 적혀있는 부분

리눅스 버전 5.0까지는 암호화된 문자열이 들어가 있어서 위험하지않았지만
"크래커"들이 암호화된 문자열을 해독하는 프로그램을 만들어버렸다. (아마 John the ripper)
그래서 사람들이 더 어렵게 만들어버렸음 
하지만 또 해독해버리고 막히고 해독해버리고 막히고... 반복

그래서 사람들은 그냥 x라고 놓고 사용자들의 패스워드만 모아서 새로운 파일을 만들었음
그것이 바로 /etc/shadow라는 이름의 파일!

관리자권한을 가진 사람이 아니면 볼 수 없다.
그래서 리눅스 6.0 이후로는 계속 저렇게 생김

우리가 만약 쉐도우 파일을 열어보려고하면 에러메세지 뜸

-세,네번째 필드 : root라는 사용자가 로그인을 했다. root=0(세번째) 그룹=0(네번째)
즉 지금 들어오는 녀석은 0이란 녀석이고, 0이란 그룹에 속해있다라고 판단할 수 있다.

-다섯번재 필드 : 사용자의 이름을 말해주는 부분이다. 

-여섯번째 필드 : 해당사용자(위에선 root)가 로그인에 성공했을 때 기본으로 위치하게 되는 디렉토리를 말해준다
따라서 root라는 아이디로 로그인에 성공하면 /root로 자동으로 들어가게 된다.
trainer6의 경우는 /home/trainer6으로 들어가게 되겠지?!

-일곱번째 필드 : 사용자가 처음 로그인 했을 때 실행되게 할 프로그램을 말한다.

 

취약한 유닉스 시스템이라고 한다면 바로 저 passwd 파일의 두번째 필드인 계정 비밀번호 부분이 아닐까?

 

그래서 바로 /etc/passwd 파일을 열어보았다.

 

flag06 계정의 두번째 필드가 x가 아니다.

이 말은 즉 /etc/shadow 파일에 flag06 계정의 비밀번호가 없고 그냥 저런식으로 flag06의 패스워드가 암호화 되어 있다는 것을 알 수 있다.

 

저 암호를 해독하기 위해 John the ripper 라는 툴을 사용해보겠다. 

* 존 더 리퍼(John the ripper)

Unix 계열 password crack tool이다.
알파벳 숫자의 조합, 숫자 조합, 단어 조합 등을 이용하여 무차별 대입 공격을 통해 패스워드를 크랙한다.
http://www.openwall.com/john/ 에서 개발버전, 안정버전, linux용, windows용 등을 다운 받을 수 있다.

 


john the ripper 툴을 사용하기 위해 내 칼리의 root 계정에 level06 폴더를 생성해 주었고 거기에 test.txt를 만들어 flag06의 계정정보를 집어넣었다.

 

john -show [크랙대상파일]

크랙 패스워드를 보려면 -show 옵션을 사용하면 된다!

 

저기 두번째 필드에 hello가 보인다. flag06의 계정의 비밀번호는 hello인 것을 알 수 있다.

 

 

John the ripper 툴을 사용하여 크래킹한 비민번호를 이용하여 flag06 계정에 로그인을 성공하였다!

 

 

whoami 명령을 통해 내가 flag06 인 것을 확인했고, getflag를 발동시켜 level06도 풀 수 있었다.

 

 

 

level07로 가즈아 >_<