Level4

 

이전 레벨에서 얻은 패스워드를 입력한 뒤 ls -al 명령어로 먼저 디렉토리에 있는 파일을 확인해 준다.

hint 파일이 있으니 cat 명령어로 열어보겠다.

 

누군가가 위 주소를 가진 디렉토리에 백도어를 심어놓았다고 한다. 일단은 해당 디렉토리로 이동해보자.

 

명령어 실수는 너그러이 넘어가주자...

xinetd.d 디렉토리까지 이동했다. 여기서 ls -al 명령어로 내용물을 확인해 보면?

 

진짜로 backdoor라는 파일이 있다! cat 명령어로 열어보도록 하자.

 

열어보니 이런 텍스트가 나왔다. 해석하자면 길지만 당장 필요한 정보는 다음과 같다.

 

  • finger라는 이름을 가진 서비스
  • 사용 가능함
  • 소유주는 level5 (다음 레벨)
  • 서비스가 연결되면 /home/level4/tmp 라고 하는 절대경로 내에 있는 backdoor라는 프로그램을 실행함

 

그 외에도 서버 연결에 실패하면 로그 파일에 유저 아이디를 기록한다던지 하는 내용이 있지만 지금은 넘어가자. 

중요한 것은 이 서비스가 다음 레벨의 권한으로 특정 프로그램을 실행시켜 준다는 것이다.

그러면 저 경로를 찾아가면 저 프로그램이 존재할까? 한번 방문해 보자.

 

/home/level4/tmp 경로를 방문해 ls -al 명령어로 내용물을 읽었다.

그런데 디렉토리만 있을 뿐 backdoor라는 프로그램은 존재하고 있지 않다.

그러면 이 디렉토리에 우리가 직접 backdoor라는 이름을 가진 프로그램을 만들어서,

그 프로그램이 my-pass 명령어를 시스템에 전달할 수 있도록 한다면? 일이 쉬워지지 않을까?

 

디렉토리에 직접 c 코드를 작성해 프로그램 파일을 만들자.

프로그램 파일을 만드는 방법은 이전 포스팅에 정리한 바 있다.

거창한 것은 필요없고, 평소에 코드를 짜던 대로 짜되 system("my-pass");만 들어가게 해주면 된다.

 

+) 프로그램 코드를 작성할 때는 백스페이스가 바로 먹히지 않고 이상한 기호가 대신 출력될 수 있다.

ctrl키와 백스페이스 키를 같이 누르면 제대로 작동된다.

 

코드를 다 작성한 뒤에는 개행을 넣어주는 편이 좋다. 그렇지 않으면 위 화면처럼 warning이 출력될 수 있다(컴파일 지장은 없음)

다 작성했다면 gcc -o 명령어로 컴파일해주자.

컴파일한 뒤 다시 ls -al로 디렉토리 안을 보면 코드인 c 파일과 컴파일된 프로그램인 backdoor을 볼 수 있다.

 

준비가 끝났으니 finger 서비스를 실행시켜 주자. 뒤에 @localhost를 붙여야만 제대로 실행된다.

패스워드는 아래에 흰 글씨로만 적어두겠다.

what is your name?

 


Level5

 

다음 레벨로 넘어왔다. 역시 똑같이 ls -al 파일로 디렉토리 안을 훑어주고,

hint 파일이 있으므로 cat 명령어로 열어주었다.

/usr/bin 디렉토리에 있는 level5라는 프로그램이 /tmp 디렉토리에 level5.tmp라는 임시파일을 만든다고 한다.

이를 이용하면 level6의 권한을 얻을 수 있댄다.

 

정말 그런지 한번 보자. /usr/bin 디렉토리로 이동해 level5 프로그램을 실행시킨 뒤,

/tmp 디렉토리로 이동해 내용을 살펴보았다.

level5.tmp라는 파일이 분명 생성되었어야 할 텐데, 없다.

이것은 level5.tmp가 임시파일이기 때문에 생성 직후 없어져버려서 그런 것 같다.

이 파일이 없어지지 않게 해두고 내용을 확인할 방법이 없을까?

 

여기서 우리는 level4에서 했던 발상을 다시 가져올 필요가 있다. 파일이 없으면 만들면 된다.

만약 우리가 선수를 쳐서, /tmp 디렉토리에 먼저 level5.tmp라는 파일을 임의로 만들어 두고

그 다음에 level5 프로그램을 실행시켜서 -> level5.tmp라는 파일을 또 만들게 하면?

같은 이름의 파일이므로 내용만 덮어쓰기(덤프)되고,

파일은 파일대로 (우리가 만들었으므로) 바로 사라지지 않고 남아있지 않을까?

한번 해보자.

 

/tmp 디렉토리에 cat > 명령어로 level5.tmp 파일을 만든다.

내용은 아무거나 상관없다. 어차피 정상적으로 덮어쓰기된다면 사라질 것이다.

(텍스트 파일을 작성할 때도 백스페이스 키를 누를 땐 ctrl 키를 같이 눌러주어야 입력취소가 된다.)

 

다 작성했다면 ctrl + D 키로 저장해주고, 다시 디렉토리 안을 본다.

아까 만들었던 level5.tmp 파일이 잘 있다. 열어보면 우리가 입력했던 아무말이 그대로 들어있다.

이제 /usr/bin 디렉토리의 level5 프로그램을 실행시키러 가자.

 

/usr/bin 디렉토리로 이동했다. level5 프로그램이 있는지 한번 검색도 돌려보았다. 잘 있다.

level5 프로그램을 실행시키고, 이제 다시 /tmp 디렉토리로 가보자.

 

/tmp 디렉토리로 다시 와서 안을 확인해 보니 level5.tmp 파일이 있다.

열어보면, 우리가 입력했던 아무말이 아닌 다음 레벨로 가는 패스워드가 덮어쓰기되어있다.

패스워드는 역시 아래에 흰 글씨로 기록해 두었다.

what the hell

'LINUX' 카테고리의 다른 글

[시스템해킹] stage 3, 4  (1) 2022.09.19
[시스템해킹] Stage 1, 2  (0) 2022.09.08
7주차 - [F.T.Z] Level 3  (0) 2022.06.19
6주차 - [F.T.Z] LEVEL 1, 2  (0) 2022.05.28
5주차 - [Bandit: Over the wire] Level 6 ~ Level 10  (0) 2022.05.16

+ Recent posts