[Bru1s3rs] Bandit - Level 20 ~ 25

securitykss·2023년 7월 7일
0

[Bru1s3rs] Bandit

목록 보기
6/8

Level 20 -> Level 21

문제 설명

요약: bandit20 홈 디렉토리에, setuid 바이너리가 있다.

localhost에 포트를 열어두고,해당 바이너리에 포트로 연결시키게 되게 한다.

그리고 연결이되면, nc로 연결된 바이너리에 이전(bandit20) 비번을 넘겨주면,

suconnect에서 현재(bandit21)의 비번을 넘겨준다고 한다.

일단 디렉토리부터 들어가자

문제 풀이

suconnect 라는 바이너리 파일이 있는데,

안내를 하는 것을 보니, suconnect "portnumber"를 하는 것을 보아

suconnect 바이너리를 어떤 포트에 연결 시키겠다는 의미 같다.

1. nc -lp 12345

12345번 포트에 "listen" 상태로, nc를 활용해 포트를 열어둔다.

2. ./suconnect 12345

그리고 ./suconnect 12345 를 통해 연결을 시킨다.

3. 패스워드 얻어내기

nc에서 이전 비번(bandit20의 비번)을 넘겨주면, bandit21의 패스워드를 뱉어주는 것을 확인할 수 있다.

-완-

Level 21 -> Level 22

문제 설명

요약: cron으로 부터 어떤 프로그램이 돌아가고 있는데, 그게 시간이 정해져있다.

/etc/cron.d/ 디렉토리에 뭔가를 찾고, 어떤 명령어가 실행되고 있는지 보자

문제 풀이

무작정 들어가서 보았다.

현재 bandit21에서 22로 가는 거니, cronjob_bandit22.sh를 확인해보자

확인해 보니 저런 명령어가 나왔다.

/usr/bin/cronjob_bandit22.sh 를 살펴보자

그냥 뭔가 물 흐르듯 끝난 것 같다.

-완-

Level 22 -> Level 23

문제 설명

요약: 이전 문제와 비슷한 설명이다.

/etc/cron.d/ 디렉토리에 단서를 찾아보자

문제 풀이

이전 문제와 같이 /etc/cron.d 디렉토리에 들어가서

cronjob_bandit23 을 봤더니 이전과 같이 비슷한 shellscript 파일을 소개해준다.

한번 저 shellscript 파일을 읽어보자

음.. whoami로 현재 계정 정보를 myname에 저장하고

현재 계정 정보를 md5로 암호화하고, cut 명령어로 자른 후 mytarget에 저장한다.

mytarget에 해당 계정의 암호를 넣는 시스템이다.

그렇다면? 똑같이 myname을 bandit23으로 한다면? bandit23의 암호를 얻을 수 있다.

-완-

Level 23 -> Level 24

문제 설명

요약: 뭐 이것도 이전 문제랑 비슷하다.

똑같이 /etc/cron.d 디렉토리로 들어가 보자

문제 풀이

shellscript 파일이 또 주어 졌다.

간단히 설명하면 /var/spool/bandit24/foo 안에 있는 모든 스크립트를 실행한 후 60초 뒤에 지운다고 한다.

지워지기 전에 /etc/bandit_pass/bandit24 안에 있는 내용을 복사해주자.

/var/spool 들어가보기

권한 자체가 없다.

shellscript, chmod

bandit24의 패스워드를 읽는 스크립트를 짜고, 접근 권한을 줘보자

위의 그림에선 빠졌는데, /tmp/security3 디렉토리의 password.sh 라는 shellscript를 만든 후

#!/bin/bash
cat /etc/bandit_pass/bandit24 > /tmp/security3/bypass

이렇게 스크립트를 짜준다.

그 후, chmod 777 password.sh 로 해서 다른 사용자들도 읽고 쓰고 실행할 수 있게 끔 설정 해주고,

위의 그림처럼, cp로 /var/spool/bandit24/foo/ 디렉토리에 passoword.sh 를 넣고

60초 동안 저 shellscript가 실행될 때 까지 기다리면

위와 같이 bandit24의 패스워드를 획득할 수 있다.

-완-

Level 24 -> Level 25

문제 설명

요약: bandit24 패스워드와 어떤 4자리 PIN 코드를 통해서 30002에 열려있는 서비스가 bandit25 패스워드를 알려주나보다

문제 풀이

문제에서 0000~9999 까지 브루트 포싱을 해서 알아내라고 한다.

일단 먼저 아무 핀코드나 보내보자

nc로 접속해서 , bandit24의 패스워드와 1234 pin을 보냈더니 틀렸다고 나온다.

아~~~ 무조건 브루트 포싱이구나 생각했다.

핀코드 0000~9999까지 스크립트로 짜서 보내보자

이런 식으로 짜고

list.txt에 [bandit24비번][0000~9999] 까지 존재한다.

nc로 접속해서 저 list들을 보내보자

한번에 브포가 안돌아가서 4개로 나눠서 돌렸더니 됐다.

-완-

Reference

https://jiravvit.tistory.com/entry/OverTheWire-Bandit-level23-level24

https://dokhakdubini.tistory.com/283

profile
보안 공부를 하는 학생입니다.

0개의 댓글