티스토리 뷰

Wargame/Bandit

Bandit Level 18 → Level 19

장일영 2024. 5. 16. 13:22

 

Goal

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

다음 레벨의 패스워드는 home 디렉토리의 `readme` 파일에 저장되어 있다. 불행히도 누군가 `.bashrc`를 조작했고 SSH로 접근하려 하면 로그아웃 된다.  

 

Commands you may need to solve this level

`ssh`, `ls`, `cat`

 

Write Up

우선 SSH로 접근이 불가하므로 이전 레벨인 bandit17 권한을 이용해 접근했다.

리눅스 파일 시스템에서 `/etc` 디렉토리는 환경 설정 관련 파일을 가지고 있다. 그 중 `passwd` 파일은 사용자의 패스워드 정보를 가지고 있다. 사용자가 패스워드를 입력하면 `etc/passwd` 파일에 있는 패스워드와 입력한 패스워드를 해시함수로 비교하고 값이 동일하면 로그인 처리한다. 따라서 `etc/passwd` 파일에는 해시로 암호화된 패스워드가 있다.

bandit17 계정으로 로그인해 `/etc/passwd` 파일의 내용 중 bandit18과 관련된 라인을 찾았다.

bandit17@bandit:~$ cat /etc/passwd | grep bandit18
bandit18:x:11018:11018:bandit level 18:/home/bandit18:/bin/bash
[사용자 계정]:[사용자 암호]:[사용자 ID]:[사용자가 속한 그룹 ID]:[사용자 코멘트 정보]:[사용자의 홈 디렉토리 정보]:[사용자의 기본 shell 정보]

 

bandit18 계정의 로그인 관련 정보를 확인할 수 있다. bandit18 계정의 암호는 x 표기가 되어 있으므로 `/etc/shadow` 파일에서 확인할 수 있을 것이다. 기본 shell은 bash다. 따라서 bandit18 계정으로 로그인하는 경우 bash shell이 실행되고 이는 `.bashrc`의 설정을 따른다. 그렇다면 `.bashrc` 파일 내에 SSH 연결 시 로그아웃 처리하라는 라인이 있을 것으로 예상해볼 수 있다.

그렇다면 bash로 접근할 수 없을 때, `.bashrc` 파일에 접근해 내용을 수정하거나 bash shell을 사용하지 않고 다른 shell을 사용하면 어떨까? bandit18 계정의 패스워드를 가지고 있으므로 똑같이 SSH로 접근하더라도 bash 계열의 shell을 사용하지 않으면 `.bashrc` 파일의 설정을 따르지 않을 것이다.

ssh -t bandit18@bandit.labs.overthewire.org -p 2220 sh
cat readme

'Wargame > Bandit' 카테고리의 다른 글

Bandit Level 20 → Level 21  (0) 2024.05.16
Bandit Level 19 → Level 20  (0) 2024.05.16
Bandit Level 17 → Level 18  (0) 2024.05.16
Bandit Level 16 → Level 17  (0) 2024.05.16
Bandit Level 15 → Level 16  (0) 2024.05.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/06   »
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
글 보관함