리눅스 워게임 33

OverTheWire_Level 21 -> Level 22

Lv 22 > /etc/cron.d 디렉터리를 먼저 확인하겠습니다. 여러 파일들이 나열되어 있는 것을 확인할 수 있습니다. 다음 단계인 bandit22와 관련있어 보이는 cronjob_bandit22를 열어 확인해보면 아래와 같습니다. reboot할 때마다 /usr/bin/cronjob_bandit22.sh을 자동으로 실행하고, /usr/bin/cronjob_bandit22.sh 실행 시 표준 출력과 표준 에러를 모두 /dev/null로 버리는 것을 확인할 수 있습니다. 또한 * * * * * 이니, 매 분마다 실행되는 것을 알 수 있습니다. 해당 파일은 .sh로 되어있는 것을 보니, 쉘 스크립트 파일로 추측됩니다. crontab에 대해 설명해둔 포스팅이 분명 있었던 것 같은데 찾지 ..

리눅스 워게임 2023.01.24

OverTheWire_Level 20 -> Level 21

Lv 21 > 홈 디렉터리에 setuid 바이너리 "suconnect"가 있습니다. 포트를 설정해주면, 해당 포트를 타고 localhost에 연결한다고 합니다. [ Commands you may need to solve this level ] 에서 힌트를 찾겠습니다. 이전에 사용해봤던 Netcat (nc)을 사용하겠습니다. (OverTheWire_Level 14 -> Level 15 포스팅) Background에서 nc를 Listener Mode로 열겠습니다. netstat -l 위 명령어를 사용하여 어떤 포트를 사용하고 있는지 미리 훑어봅니다. 저는 임의로 5555번의 포트를 사용하겠습니다. 명령 뒤에 "&" 하나만 붙여주면 백그라운드로 실행됩니다. nc -lp 5555 & 명령으로..

리눅스 워게임 2023.01.23

OverTheWire_Level 19 -> Level 20

Lv 20 > /etc/bandit_pass에 암호가 있다고 하니, /etc/bandit_pass/bandit20 파일을 열어야 한다는 말 같습니다. 홈 디렉터리에 있는 setuid 바이너리를 사용해야 합니다. 홈 디렉터리를 살펴보니 bandit20-do 파일이 있습니다. 특수권한은 [Linux] 리눅스 특수 권한 포스팅 / [Linux] 리눅스 특수 권한_2 포스팅에서 다룬 내용입니다. 퍼미션이 -rwsr-x---이므로 소유주의 실행 권한이 존재하는 4750의 퍼미션 값을 가집니다. (만약 소문자 s가 아닌, 대문자 S였다면 소유주의 실행 권한이 존재하지 않기 때문에 4650이 됩니다.) 즉, bandit20-do 파일을 실행시키면 임시로 소유주의 권한인 bandit20의 권한을 취..

리눅스 워게임 2023.01.22

OverTheWire_Level 18 -> Level 19

Lv 19 > putty를 사용하여 bandit18로 접속을 시도하면 창이 자동으로 꺼져버려서, 아래 사진처럼 Close window on exit의 설정을 "Never"로 설정 후 접속을 시도해보겠습니다. 분명 로그인은 되나, 접속하면 자동으로 튕겨나옵니다. 따라서 이번 포스팅에서는 bandit17로 접속하여 시작하겠습니다. bandit17로 로그인 후 bandit18의 홈 디렉터리에 위치한 readme 파일을 발견할 수 있었으나, 역시 권한이 없다고 나옵니다. ssh --help 명령으로 찾아봐도 힌트가 부족해서 꽤나 고전했습니다. -t 옵션을 사용해서 pseudo-tty 할당을 강제해야된다고 합니다. bandit19 password is : awhqfNnAbc1naukrpqDYc..

리눅스 워게임 2023.01.21

OverTheWire_Level 17 -> Level 18

Lv 18 > 다음 비밀번호는 passwords.new 안에 있다고 합니다. 파일의 내용이 변경되었으니, 파일을 비교하는 diff 명령을 사용하겠습니다. diff 명령은 파일들의 내용을 각 라인마다 비교할 수 있습니다. (Compare FILES line by line) 현재 상황에서 옵션은 없어도 되니, 명령은 아래와 같이 사용하겠습니다. bandit17@bandit:~$ diff [FILE_1] [FILE_2] ∇ bandit17@bandit:~$ diff passwords.old passwords.new 42c42는 즉, 1번째 파일인 passwords.ord의 42번째 행과 2번째 파일인 passwords.new의 42번째 행이 다르다는 것을 의미합니다. 그 아래 부등호 사이의..

리눅스 워게임 2023.01.20

OverTheWire_Level 16 -> Level 17

Lv 17 > 이번에도 역시 bandit16의 암호가 필요하기 때문에 먼저 bandit16의 비밀번호를 복사하고 시작하겠습니다. 31000 ~ 32000 포트 범위 내에서 서버가 수신대기중인 포트를 찾아야 합니다. OverTheWire_Level 14 -> Level 15 포스팅에서 사용했던 nc (NetCat)를 사용해서 검색하겠습니다. bandit16@bandit:~$ nc -z -v localhost 31000-32000 그러나 해당 명령을 사용하면 아래 사진처럼 연결 실패까지도 보여주기 때문에, 찾아내기가 쉽지는 않습니다. 따라서 리다이렉션과 grep 명령을 조합하여 보기 쉽게 하겠습니다. ( nmap으로 TCP Connection Scan을 해도 무방합니다. ) 총 5개의 포..

리눅스 워게임 2023.01.19

OverTheWire_Level 15 -> Level 16

Lv 16 > 다음 단계로 넘어가기 위해서는 현재의 암호가 필요하다고 합니다. 먼저 현재 비밀번호(bandit15 Password)를 복사해줍니다. SSL encryption을 사용해서 접속을 해야하기 때문에, openssl을 사용하겠습니다. OpenSSL은 [ 암호학 ] 공개 키 암호_2 (RSA) 포스팅에서 사용했던 적 있습니다. Standard commands를 훑어보면 s_client를 찾을 수 있습니다. openssl s_client를 사용해서 접속하면 될 것 같습니다. 대략적으로 openssl s_client의 사용법은 아래와 같습니다. openssl s_client [options] [host:port] openssl manpage까지 참고하여 s_client의 설명 및 ..

리눅스 워게임 2023.01.18

OverTheWire_Level 14 -> Level 15

Lv 15 > bandit15의 비밀번호는 bandit14의 비밀번호를 localhost의 port : 30000에 제출하면 된다고 쓰여있습니다. 일단 먼저 bandit14의 비밀번호를 복사해두고 시작하겠습니다. 힌트를 보니 처음보는 명령어가 보여서 구글링했습니다. nc는 Netcat이라고 합니다. Windows, Linux, Solaris 등 다양한 시스템에서 실행이 가능하며 대부분의 Linux 배포판에 설치되어 있다고 합니다. Client Mode와 Listener Mode 두 가지 모드로 나뉩니다. 설명을 보니 Listener Mode로 30000번 포트를 Listening 하고 있는 것 같습니다. Linux에서 Netcat의 사용법은 아래와 같습니다. nc [옵션] [대상 시스..

리눅스 워게임 2023.01.17

OverTheWire_Level 13 -> Level 14

Lv 14 > 이번 비밀번호는 /etc/bandit_pass 디렉터리 아래의 bandit14 파일 안에 저장되며, bandit14 사용자만 읽을 수 있습니다. 해당 디렉터리에서는 bandit13 파일만을 열 수 있는 것을 확인했습니다. (확인해보니 실제 bandit13으로 로그인하기 위한 비밀번호가 맞았습니다) 해당 디렉터리에서 다음 레벨에 접속할 때 사용할 수 있는 SSH Key가 저장되어 있는 줄 알았더니, 홈 디렉터리에 있었습니다... ssh 명령어의 도움말을 살펴보니, -i 옵션으로 파일을 불러오면 될 것 같습니다. ssh 명령어는 보통 [ ssh 계정이름@IP주소 ] 형식으로 되어있으니, -i 옵션으로 파일도 지정해준 후 접속 ...을 하려고 했으나 port 22번 어쩌구 하..

리눅스 워게임 2023.01.16

OverTheWire_Level 12 -> Level 13

Lv 13 > 다음 단계로 넘어가려면 data.txt 파일을 확인해야 합니다. 파일을 열어보면 Wireshark에서 자주 봤던 익숙한 형태의 데이터가 저장되어 있습니다. 문제에서 /tmp 아래에 디렉터리를 만드는 것을 추천하고 있기 때문에 먼저 /tmp 아래에 ITSTDY 디렉터리를 생성 후, 해당 디렉터리에 홈디렉터리에 있는 data.txt 파일을 복사하겠습니다. 찾아보니 hexdump 즉, 16진수 덤프파일을 생성하거나 evert(reverse)할 때 xxd를 사용하면 된다고 합니다. 리눅스 매뉴얼 페이지 - xxd (1) Linux Man Pages 우리는 hexdump 파일이 손에 들어왔기 때문에 binary file로 reverse해줘야 합니다. reverse 옵션은 -r인 ..

리눅스 워게임 2023.01.15