no image
FTZ - Level 6
먼저 hint를 보도록 합시다 :D "인포샵 bbs의 텔넷 접속 메뉴에서 많이 사용되던 해킹 방법이다." 먼저 실행을 시켜볼까요 ? 실행 파일 이름은 tn 입니다. ( password 파일은 제가 이미 풀어서 생긴 겁니다 : ㅇ ) 실행을 시켜보면 다음과 같이 나옵니다. 접속하고 싶은 bbs를 선택하라고 하네요. 하이텔, 나우누리, 천리안 등이 있습니다! 그리고 텔넷 접속 서비스라고 명시가 되어 있네요! 그럼 하나씩 실행 시켜봅시다 :D 3개 서버 모두가 접속 거절이라고 뜨네요.. 그럼 여기서 어떻게 접근을 해야 하는 것일까요 -_-.. 이 문제 해결하기 위해서는 해커스쿨에서 제시하는 것과 같은 해킹 문제를 접할 때 실전 해킹이 아닌 가상 해킹 테스트라는 사실을 기억하고 있어야 합니다. 즉, 현실 세계에..
2019.07.16
no image
FTZ - Level 5
먼저 hint를 살펴 보도록 합시다! "/usr/bin/level5 프로그램은 /tmp 디렉토리에 level5.tmp라는 이름의 임시파일을 생성한다." 임시파일을 생성한다는 문구에서 레이스 컨디션을 이용하여 권한을 얻어야 된다는 것을 알 수 있습니다 :D 그럼 레이스 컨디션에 대해 알아 보도록 합시다! 레이션 컨디션을 한글 그대로 해석하면 경쟁 상태라는 의미입니다. 이 의미는 다수의 프로세스가 서로 동일한 자원을 할당 받기 위해 경쟁하는 상태를 의미합니다. 그럼 레이스 컨디션 취약점이 존재하기 위한 최소 조건은 다음과 같습니다 :D "다른 계정의 권한에 접근해야 하므로 SetUID가 걸려 있어야 한다." "일시 파일을 생성해야 한다." "공격자가 임시로 생성되는 파일명을 정확하게 알아야 한다." 이제 밑..
2019.07.14
no image
FTZ - Level 4
일단 우선 hint를 보도록 합시다! "누군가 /etc/xinetd.d/에 백도어를 심어놓았다.!" 힌트를 통해서 xinetd 에 관련된 문제임을 알 수 있습니다. 그러므로 xinetd 데몬의 개념을 알아야 풀 수 있습니다. 먼저 리눅스 시스템의 부팅 순서는 다음과 같습니다. 1. 부트 로더(Grub) 실행 2. 커널 이미지 메모리 로딩 3. /etc/inittab 파일에 있는 내용 중 선택된 모드로 init 프로세스 실행 4. xinetd 데몬에 의한 네트워크 데몬 가동 5. 부팅 완료 여기서 부팅이 마무리되는 과정에서 네트워크 데몬을 가동하는 것이 xinetd 슈퍼 데몬입니다. # 네트워크 데몬이란 ? FTP, Telnet, SSH, Apach 등과 같은 네트워크 통신을 위한 데몬을 의미한다. # x..
2019.07.13
no image
FTZ - Level 3
level3번 문제이다. 먼저 Hint를 알아보자. autodig의 소스코드와 "동시에 여러 명령어를 사용하려면?" "문자열 형태로 명령어를 전달하려면?" 이다. 일단 먼저 소스코드를 분석해보면 strcpy에 dig이라는 것을 보고 dig 명령어에 관련된 것이라고 생각할 수 있다. dig은 도메인 서버의 IP주소를 확인하는 프로그램으로 nslookup과 유사하다. 그러나 nslookup과의 차이는 dig은 기본적으로 유닉스 계열 운영체제에 탑재되어 있다는 것이다. 또한 dig 사용 시 "@쿼리할 DNS 서버의 IP" 옵션을 입력해야 한다. (반드시는 아님, 옵션을 생략하더라도 사용 가능) 이제 소스 코드를 분석하면 흐름은 다음과 같다. 1. "dig @"라는 문자열을 cmd 배열에 넣는다. 2. "dig..
2019.07.12
no image
FTZ - Level 2
먼저 Hint를 확인해보자 ! "텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데..." Hint 에서 대략적으로 알 수 있는 것은 쉘의 명령을 실행 시킨다는 것에서 쉘을 통한 권한 상승 문제라는 것을 유추해볼 수 있다. level3으로 올라가야하기 때문에 level3이 소유자이고 SetUID가 걸려있는 파일이 있을 수 있으니 찾아보자! 찾는 명령어는 level1에서 사용했던 동일한 방법을 사용한다. /usr/bin 폴더에 editor이라는 프로그램이 있다. 확인하면 SetUID가 걸려있고 소유자는 level3임을 확인할 수 있다. 다시 한번 더 문제를 보자. "텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데..." 편집을 하는 중에 명령을 실행 시키는 것이니 vi를 통해 실행 시켜보면 다음..
2019.07.11
no image
FTZ - Level 1
이제 문제로 들어가 봅시다 ! level1의 아이디와 비밀번호는 당연히 뭔지 아시죠 ^^? ID : level1 PW : level1 먼저 Hint를 한번 열어 봅시다! "level 2 권한에 setuid가 걸린 파일을 찾는다." 그럼 setuid가 뭘까? SetUID는 소유자의 권한을 통하여 파일을 실행시키는 것으로써 유닉스 또는 리눅스에 소유자 권한이 s로 설정된 것이다. 예를 들어 소유자가 root이면 그 파일을 실행하는 사람이 누가 되었든지 파일이 실행되는 프로세스는 실행되는 동안 파일 소유자인 root 권한으로 실행된다. 출처 : [네이버 지식백과] 프로세스 권한과 SetUID 계속해서 SetUID가 걸린 파일을 찾는 것이니 find 명령어를 통해서 찾아보도록하자! find [경로] [Optio..
2019.07.11
no image
FTZ 서버 구축하기
보안 공부를 하시는 왠만한 분들은 다들 아시는 아주 유명한 Hackerschool에서 만든 FTZ 서버 구축을 알아보겠습니다! 먼저 이 파일을 다운 받아주세요! https://drive.google.com/open?id=1ub98uNRmXrsQr08XfVoKdEK7ybcV_30o 위의 파일을 다운 받으시고 보시면 Text 파일을 보시면서 구축하시면 되구요! 지금부터 설명 들어갈게요! 먼저 VMware나 Virtual Box를 통해서 vmx 파일을 열어줘야 합니다. 저는 VMware 환경에서 실행을 했습니다 ^_^ 그리고 실행을 시키고 간단한 설정을 해주어야 합니다! 다음 그림과 같이 해주세요! 그리고 다음과 같이 ISO 파일을 삽입 시켜 줍니다! 그리고 실행하시면 쨘! 하고 됩니다 ^^ 다들 문제도 푸시..
2019.07.11

FTZ - Level 6

HelloMG
|2019. 7. 16. 13:45

먼저 hint를 보도록 합시다 :D

그림 1     hint

"인포샵 bbs의 텔넷 접속 메뉴에서 많이 사용되던 해킹 방법이다."

 

먼저 실행을 시켜볼까요 ?

실행 파일 이름은 tn 입니다. ( password 파일은 제가 이미 풀어서 생긴 겁니다 : ㅇ )

그림 2     실행 파일

실행을 시켜보면 다음과 같이 나옵니다.

그림 3     실행 화면

접속하고 싶은 bbs를 선택하라고 하네요.

하이텔, 나우누리, 천리안 등이 있습니다! 그리고 텔넷 접속 서비스라고 명시가 되어 있네요!

그럼 하나씩 실행 시켜봅시다 :D

 

그림 4     하이텔 접속
그림 5     나우누리 접속
그림 6     천리안 접속

3개 서버 모두가 접속 거절이라고 뜨네요..

그럼 여기서 어떻게 접근을 해야 하는 것일까요 -_-..

 

이 문제 해결하기 위해서는 해커스쿨에서 제시하는 것과 같은 해킹 문제를 접할 때

실전 해킹이 아닌 가상 해킹 테스트라는 사실을 기억하고 있어야 합니다.

즉, 현실 세계에 있는 취약점과 공격 방법을 설명하기 위해 현실과 동일한 환경을 구성해서 제공하기에는 무리가 있죠!

그러므로 소개하고 싶은 취약점의 핵심에 해당하는 부분만을 구현한 환경을 제공하게 됩니다 :D

 

그러므로 BBS는 가짜 모듈에 해당한다고 할 수가 있고 이 메뉴를 우회할 수 있는 무언가가 있다는 의미가 됩니다.

그래서 저는 우회할 수 있는 지점을 찾는 과정에서 초기 메뉴에서 시스템에 인터럽트를 시켰는데

password 파일이 생성 되었습니다 :D

 

여기서 중요한 사실은 시스템 인터럽트입니다!

시스템 인터럽트란 프로세스간에 주고받는 신호로서 시스템 개발에서는 중요한 요소입니다!

그러므로 중요한 기능을 잘못 이용하면 치명적인 문제를 야기할 수가 있죠 : (

 

시스템 인터럽트에 대해 공부해보는것도 좋을 것 같네요 :D

그럼 다음 문제에서 만나요!! : )

 

 

 

[출처] : 문제풀이로 배우는 시스템 해킹 테크닉

'CTF > FTZ' 카테고리의 다른 글

FTZ - Level 5  (0) 2019.07.14
FTZ - Level 4  (0) 2019.07.13
FTZ - Level 3  (0) 2019.07.12
FTZ - Level 2  (0) 2019.07.11
FTZ - Level 1  (0) 2019.07.11

FTZ - Level 5

HelloMG
|2019. 7. 14. 19:12

먼저 hint를 살펴 보도록 합시다!

 

그림 1     hint

"/usr/bin/level5 프로그램은 /tmp 디렉토리에 level5.tmp라는 이름의 임시파일을 생성한다."

임시파일을 생성한다는 문구에서 레이스 컨디션을 이용하여 권한을 얻어야 된다는 것을 알 수 있습니다 :D

그럼 레이스 컨디션에 대해 알아 보도록 합시다!

 

레이션 컨디션을 한글 그대로 해석하면 경쟁 상태라는 의미입니다.

이 의미는 다수의 프로세스가 서로 동일한 자원을 할당 받기 위해 경쟁하는 상태를 의미합니다.

그럼 레이스 컨디션 취약점이 존재하기 위한 최소 조건은 다음과 같습니다 :D


"다른 계정의 권한에 접근해야 하므로 SetUID가 걸려 있어야 한다."

"일시 파일을 생성해야 한다."

"공격자가 임시로 생성되는 파일명을 정확하게 알아야 한다."


이제 밑의 순서도를 보면서 레이스 컨디션을 알아보도록 합시다 :)

그림 2     레이스컨디션 흐름도 예제

1. 파일을 생성

2. 파일 생성에 성공하면 생성된 파일에 내용 쓰기

3. 쓴 내용을 읽어들여 처리/사용

4. 파일 삭제

 

이 동작 중에서 2번과 4번 사이에 취약점이 존재하게 됩니다!

즉, 실행 흐름에서 2번과 4번 사이에 공격할 수 있는 틈이 있긴 하지만 너무 짧은 시간 간격이라서

결국 공격용 프로그램을 작성해야 합니다.

 

그럼 조금더 자세히 알아보도록 합시다!

그림 3     레이션컨디션 공격 타이밍

그림 2번에서 공격 프로세스의 처리 과정을 새롭게 추가한 그림입니다.

취약한 프로세스가 파일을 생성하기 전에 공격하는 프로세스에서 먼저 파일을 생성하고

취약한 프로세스에서 생성할 파일명으로 링크를 만들어 두면 취약한 프로세스는 공격 프로세스가 만든 링크에

내용을 쓰게 되고 링크를 삭제하게 됩니다!

 

이번 문제에는 다음과 같이 파일 이름을 사용 하겠습니다 :D

파일 생성 : /tmp/6pass.txt (password를 위한 임의의 파일)

링크 생성 : /tmp/level5.tmp (임시 파일)

 

공격 흐름


  1. 공격 프로세스에서 /tmp/6pass.txt 파일을 만든다.
  2. 공격 프로세스에서 /tmp/6pass.txt 파일을 원본으로 하는 /tmp/level5.tmp 링크 파일을 만든다(/tmp/level5.tmp 링크가 취약한 프로세스가 생성하고 삭제하는 파일의 이름이다).
  3. 레이스 컨디션 취약점이 있는 프로세스를 시작한다.
  4. 취약한 프로세스가 /tmp/level5.tmp 파일을 생성하려고 하지만 공격 프로세스가 만들어 둔 링크인 /tmp/level5.tmp 파이이 이미 있으므로 추가로 파일을 만들지 않는다.
  5. 취약한 프로세스가 /tmp/level5.tmp 링크에 내용을 쓴다(/tmp/level5.tmp 링크에 내용을 쓰면 원본인 /tmp/6pass.txt 파일에 내용이 쓰여진다).
  6. 취약한 프로세스가 쓴 내용을 사용한 뒤 /tmp/level5.tmp 파일을 삭제하고 종료한다(결국 내용이 쓰여진 /tmp/6pass.txt 파일이 남아 있으므로 쓴 내용을 볼 수 있다).

그럼 이제 문제를 풀어봅시다 :D

먼저 문제의 파일을 찾아봅시다.

그림 4     level5 파일

그리고 실행을 시켜봅시다!

그림 5     파일 실행

파일을 실행 시켰는데 아무런 변화가 없음을 알 수 있습니다.

 

이번 문제를 간단한 코드를 작성해서 공격하여 풀어보도록 합시다!

먼저 백그라운드로 프로세스를 10번에 걸쳐 반복 실행하는 코드를 작성을 합니다.

그림 6     run.c

그리고 실행하여 봅시다 :D

그림 7     컴파일 후 실행

실행을 하여보면 프로그램이 끝나는데 1초도 안걸리는기 때문에

공격 프로세스와 취약한 프로세스를 동시에 실행하는 부분도 프로그램으로 구현할 필요가 있습니다!

 

그럼 코딩을 진행해 봅시다!

그림 8     exp.c

그리고 실행을 시켜 봅시다.

그림 9     exp 실행

심볼릭 링크가 걸린 파일이 생성이 되고 6pass.txt을 가리키는 것을 볼 수 있네요 :D

그럼 문제 파일을 백그라운드로 실행시키고

exp파일을 실행 시켜볼까요 !

그림 10     next password

next password가 출력되면서 level6번 문제의 password를 알게 되었습니다 :D

 

사실상 더 쉽게 푸는 방법으로는 

/tmp/level5.tmp 파일을 만들고 다른 공파일에 링크를 걸어두면 바로 풀리는 문제입니다!

 

조금 더 나아가서 완전 자동화된 방법으로 푸는 걸 알아보도록 해봅시다!

다음과 같이 sh을 이용해서 푸는 방법이 있습니다 :D

그림 11     expBash.sh

정말 쉽게 나오죠 ㅎㅎㅎ!

 

이번엔 코딩을 해서 완전 자동화 방법으로 풀어 봅시다 : )

그림 12     exp_level5.c

이후 컴파일을 하여 실행시켜 주어야 하는데

 주의 해야할 점은 pthread가 사용 되었기 때문에

컴파일시 -pthread 옵션을 주고 컴파일 하셔야 합니다!

그림 13     exp_level5 실행
그림 14     6pass.txt 

 

6번 문제를 풀면서 레이스 컨디션 공격에 대해 알아보았습니다 :D

레이스 컨디션 공격을 하기 위해서는 반드시 맨위에서 제시한 최소한의 조건을 맞춰 주어야 한다는거 잊지 마세요 : )

 

그럼 이만 다음 문제에서 뵙도록 하겠습니다!

'CTF > FTZ' 카테고리의 다른 글

FTZ - Level 6  (0) 2019.07.16
FTZ - Level 4  (0) 2019.07.13
FTZ - Level 3  (0) 2019.07.12
FTZ - Level 2  (0) 2019.07.11
FTZ - Level 1  (0) 2019.07.11

FTZ - Level 4

HelloMG
|2019. 7. 13. 15:21

일단 우선 hint를 보도록 합시다!

그림 1     hint

"누군가 /etc/xinetd.d/에 백도어를 심어놓았다.!"

힌트를 통해서 xinetd 에 관련된 문제임을 알 수 있습니다. 그러므로 xinetd 데몬의 개념을 알아야 풀 수 있습니다.

먼저 리눅스 시스템의 부팅 순서는 다음과 같습니다.

 

1. 부트 로더(Grub) 실행

2. 커널 이미지 메모리 로딩

3. /etc/inittab 파일에 있는 내용 중 선택된 모드로 init 프로세스 실행

4. xinetd 데몬에 의한 네트워크 데몬 가동

5. 부팅 완료

 

여기서 부팅이 마무리되는 과정에서 네트워크 데몬을 가동하는 것이 xinetd 슈퍼 데몬입니다.

# 네트워크 데몬이란 ? FTP, Telnet, SSH, Apach 등과 같은 네트워크 통신을 위한 데몬을 의미한다.

# xinetd 슈퍼 데몬이란? 부모 프로세스와 자식 프로세스의 관계에서 부모 프로세스에 해당하는 데몬이다.

 

그럼 xinetd 데몬의 설정 구조를 알아보도록 합시다 :D

그림 2     xinetd 글로벌 설정

instances : xinetd 데몬에 의해 실행되는 네트워크 서비스 데몬의 최대 동시 접속 허용 

log_type : 시스템 로그 타입 설정

log_on_success : 접속 성공 시 남기는 로그

log_on_failure : 접속 실패 시 남기는 로그

cps = 25 30 : 동시 접속이 25개가 되면 30초동안 비활성화

 

그럼 이제 힌트에서 제공한 위치에서 backdoor 파일을 찾아보도록 합시다 !

그림 3     /etc/xinetd.d/backdoor

이름만 보아도 backdoor이네요 : )

이 디렉터리에는 네트워크 서비스 데몬이 모여 있는 곳입니다. 그래서 backdoor도 서비스라는 것을 짐작 할 수 있죠 :D

이제 backdoor 서비스 설정을 확인해보도록 합시다!

그림 4     backdoor

backdoor의 항목들은 다음과 같습니다.

 

disable : 데몬을 활성 또는 비활성

flags = REUSE : 서비스 포트가 사용중인 경우 해당 포트의 재사용을 허가

socket_type = stream : TCP/IP 프로토콜을 선택

wait : 서비스가 연결된 상태에서 다른요청이 들어 오면 바로 응답할 것인지 유무( no : 응답 , yes : 비응답)

user : 해당 데몬의 권한으로 실행

server : xinetd에 의해 실행될 데몬 파일

log_one_failure : 정상적인 기동에 실패한 경우 로그에 기록

 

여기서 중요하게 보아야할 점은 level5 계정의 권한으로 finger라는 서비스를 이용해

/home/level4/tmp/backdoor 파일이 실행된다는 것입니다 :D

그럼 이 파일 찾아가 보도록 합시다 !

그림 5     /home/level4/tmp

찾아가보니 backdoor 파일이 보이지 않는군요. finger 서비스를 이용해서 문제를 풀어야 할 것 같습니다.

서비스를 이용하기 위해서 포트를 먼저 확인해 봅시다 !

그림 6     finger service port

finger 서비스가 사용하는 포트는 79/tcp임을 알 수 있고 이를 이용해서 공격하면 될 것습니다 :D

그리고 활용하기 위해서는 포트가 열려있는지를 확인 해야 합니다.

확인하기 위해 다음과 같은 명령을 사용해봅시다.

그림 7     netstat -na

포트가 열려있는 것이 확인이 되었으니 해당 경로에 backdoor파일을 만들어주면 될 거예요!

그림 8     backdoor code

컴파일 후 실행 시키면 level5의 권한으로 실행되는 것을 알 수 있습니다.

그림 9     실행 결과

이를 통해 알 수 있는 것은 소스 코드의 "id"를 "my-pass"로 바꾸면 level5의 비밀번호를 알 수 있겠죠 :D

 

좀 더 가서 셸을 따기 위해 "/bin/bash"를 바꿔서 실행시키면 과연 셸을 얻을 수 있을까?

바꿔서 실행을 시켜보면 실행이 되지 않는 것을 확인 할 수 있을 거예요!

그럼 셸은 어떻게 따낼 수 있을까?

 

nc 프로그램을 이용해서 따낼 수 있는데 이것은 직접해보는 것을 추천드립니다 !

그럼 다음 문제에서 만나도록 합시다 :D

'CTF > FTZ' 카테고리의 다른 글

FTZ - Level 6  (0) 2019.07.16
FTZ - Level 5  (0) 2019.07.14
FTZ - Level 3  (0) 2019.07.12
FTZ - Level 2  (0) 2019.07.11
FTZ - Level 1  (0) 2019.07.11

FTZ - Level 3

HelloMG
|2019. 7. 12. 12:53

level3번 문제이다.

먼저 Hint를 알아보자.

그림 1     Hint

autodig의 소스코드

"동시에 여러 명령어를 사용하려면?"

"문자열 형태로 명령어를 전달하려면?"

이다.

 

일단 먼저 소스코드를 분석해보면 strcpy에 dig이라는 것을 보고 dig 명령어에 관련된 것이라고 생각할 수 있다.

dig은 도메인 서버의 IP주소를 확인하는 프로그램으로 nslookup과 유사하다.

그러나 nslookup과의 차이는 dig은 기본적으로 유닉스 계열 운영체제에 탑재되어 있다는 것이다.

또한 dig 사용 시 "@쿼리할 DNS 서버의 IP" 옵션을 입력해야 한다.

(반드시는 아님, 옵션을 생략하더라도 사용 가능)

 

이제 소스 코드를 분석하면 흐름은 다음과 같다.

1. "dig @"라는 문자열을 cmd 배열에 넣는다.

2. "dig @" 문자열 뒤에 autodig 명령어 다음에 입력된 문자열을 붙인다.

3. "dig @입력받은 문자열" 뒤에 " version.bind chaos txt"라는 문자열을 붙인다.

 

이제 파일을 찾아보도록하자.

그림 2     Find 명령

그리고 실행을 시켜보면 다음과 같이 잘 실행되는 것을 알 수 있다.

그림 3     autodig 실행

다시 힌트와 소스코드를 보면 system() 함수에 여러 개의 명령을 실행할 수 있게

문자열을 전달하는 해야 한다는 것을 이해할 수 있다.

 

그럼 dig이라는 명령어를 통해 여러개의 명령어가 실행되는지 부터 확인을 해보자.

그림 4     여러 개 명령 수행

세미콜론(;)을 이용하여 명령어를 여러개 동시 실행하였고 id라는 명령어가 실행됨을 알 수있다.

그럼 문자열은 " " 로 묶어주면 되는 일이니 문제를 해결할 수 있을 방법을 떠올릴 수 있다.

그림 5     문제 해결

level 4의 SetUID가 걸려 있기 때문에 my-pass 명령어를 통해 Password가 출력되는 것을 볼 수 있다.

 

또 다른 방식으로 이러한 일이 가능하다면 백도어를 심을 수도 있다는 것을 생각 할 수 있다.

먼저 코딩을 해보자.

그림 6     소소코드

그리고 gcc 명령에 -o 옵션을 이용하여 컴파일 시킨다.

여기서 주목해야할 점은 level4 권한으로 컴파일 하기 때문에 level 4 의 소유자로 프로그램이 만들어진다는 것이다.

그림 7     backdoor 컴파일

그리고 SetUID 권한을 설정한 후 실행을 시키면 level4의 권한을 획득 할 수 있다.

그림 8     backdoor 실행

 

'CTF > FTZ' 카테고리의 다른 글

FTZ - Level 5  (0) 2019.07.14
FTZ - Level 4  (0) 2019.07.13
FTZ - Level 2  (0) 2019.07.11
FTZ - Level 1  (0) 2019.07.11
FTZ 서버 구축하기  (0) 2019.07.11

FTZ - Level 2

HelloMG
|2019. 7. 11. 19:28

먼저 Hint를 확인해보자 !

그림 1     Hint

"텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데..."

Hint 에서 대략적으로 알 수 있는 것은 쉘의 명령을 실행 시킨다는 것에서 쉘을 통한

권한 상승 문제라는 것을 유추해볼 수 있다.

level3으로 올라가야하기 때문에 level3이 소유자이고 SetUID가 걸려있는 파일이 있을 수 있으니 찾아보자!

찾는 명령어는 level1에서 사용했던 동일한 방법을 사용한다.

그림 2     Find 명령

/usr/bin 폴더에 editor이라는 프로그램이 있다.

확인하면 SetUID가 걸려있고 소유자는 level3임을 확인할 수 있다.

그림 3     editor

다시 한번 더 문제를 보자.

"텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데..."

편집을 하는 중에 명령을 실행 시키는 것이니 vi를 통해 실행 시켜보면 다음과 같은 화면이 나온다.

그림 4     vi editor

vi를 통해 이러한 화면이 나올 때

":! 명령어"

를 사용을 하면 SetUID가 걸려 있기 때문에 소유자 권한으로 명령어를 실행 시킬 수 있다.

그래서 다음과 같이 사용하면 level 3 권한을 획득 할 수 있다.

그림 5     vi 취약점
그림 6     권한 획득

 

'CTF > FTZ' 카테고리의 다른 글

FTZ - Level 5  (0) 2019.07.14
FTZ - Level 4  (0) 2019.07.13
FTZ - Level 3  (0) 2019.07.12
FTZ - Level 1  (0) 2019.07.11
FTZ 서버 구축하기  (0) 2019.07.11

FTZ - Level 1

HelloMG
|2019. 7. 11. 15:25

이제 문제로 들어가 봅시다 !

level1의 아이디와 비밀번호는 당연히 뭔지 아시죠 ^^?

ID : level1

PW : level1

 

먼저 Hint를 한번 열어 봅시다!

그림 1     Hint

"level 2 권한에 setuid가 걸린 파일을 찾는다."

 

그럼 setuid가 뭘까?


SetUID는 소유자의 권한을 통하여 파일을 실행시키는 것으로써

유닉스 또는 리눅스에 소유자 권한이 s로 설정된 것이다.

예를 들어 소유자가 root이면 그 파일을 실행하는 사람이 누가 되었든지

파일이 실행되는 프로세스는 실행되는 동안 파일 소유자인 root 권한으로 실행된다.

그림 2     SetUID

출처 : [네이버 지식백과] 프로세스 권한과 SetUID


계속해서 SetUID가 걸린 파일을 찾는 것이니 find 명령어를 통해서 찾아보도록하자!

find [경로] [Option]

"어떤 옵션을 주고 찾을까?" 라는 생각을 하게 된다.

Hint의 단서를 통해 알 수 있는 것은 파일의 소유자 이름, SetUID 이므로

소유자 이름 및 권한으로 검색하면 효율적일 것 같다!

그림 3     Find 명령

명령어에 보면 " ~ 2> /dev/null" 는 왜 넣었을까?

"2" 는 표준에러를 뜻한다.(0 : 표준입력, 1: 표준출력)

">"는 파일로 보낸다는 것을 의미한다.

"/dev/null"는 null 장치이다(뭔가 설명하기가 애매하다..).

즉, 에러가 뜨는 것들을 /dev/null로 보내어 출력을 시키지 않는 것을 의미하며

여기서 사용하는 이유는 " 2> /dev/null"을 빼고 입력 시 알 수 있는데

권한 불가로 상당히 많은 에러가 출력이 되기 때문에 보기 편하게 하기 위하여 사용한 것이다.

그럼 문제 파일을 찾았으니 실행을 시켜보도록 하자!

그림 4     ExecuteMe

확인하여 보니 소유자가 level2 이고 "rws-r-x---" 소유자 권한이 걸려 있음을 확인했다.

그럼 실행을 시켜 보도록 하자!

그림 5     ExecuteMe 실행

my-pass와 chmod를 제외한 한가지 명령어를 실행시켜준다고 한다.

그리고 아이디를 보니 level2로 되어 있음을 볼 수 있고

SetUID 권한으로 인해 level2의 권한이 설정되어 있으니 /bin/bash 명령을 통해

level2 권한을 탈취할 수 있을 것이다!

그림 6     권한 탈취

이것으로 level2로 권한 상승이 되었다!

비밀번호는 my-pass를 통해 확인하면 됩니다^^! 뿅!

'CTF > FTZ' 카테고리의 다른 글

FTZ - Level 5  (0) 2019.07.14
FTZ - Level 4  (0) 2019.07.13
FTZ - Level 3  (0) 2019.07.12
FTZ - Level 2  (0) 2019.07.11
FTZ 서버 구축하기  (0) 2019.07.11

FTZ 서버 구축하기

HelloMG
|2019. 7. 11. 11:01

보안 공부를 하시는 왠만한 분들은 다들 아시는

아주 유명한 Hackerschool에서 만든 

FTZ 서버 구축을 알아보겠습니다!

먼저 이 파일을 다운 받아주세요!

 


https://drive.google.com/open?id=1ub98uNRmXrsQr08XfVoKdEK7ybcV_30o


 

위의 파일을 다운 받으시고 보시면 Text 파일을 보시면서 구축하시면 되구요!

지금부터 설명 들어갈게요!

 

먼저 VMware나 Virtual Box를 통해서 vmx 파일을 열어줘야 합니다.

저는 VMware 환경에서 실행을 했습니다 ^_^

그림 1     VMware 열기

그리고 실행을 시키고 간단한 설정을 해주어야 합니다!

다음 그림과 같이 해주세요!

그림 2     Settings

그리고 다음과 같이 ISO 파일을 삽입 시켜 줍니다!

그림 3     ISO 삽입

그리고 실행하시면 쨘! 하고 됩니다 ^^

다들 문제도 푸시고 공부도 열심히 하시길 바랄게요!

'CTF > FTZ' 카테고리의 다른 글

FTZ - Level 5  (0) 2019.07.14
FTZ - Level 4  (0) 2019.07.13
FTZ - Level 3  (0) 2019.07.12
FTZ - Level 2  (0) 2019.07.11
FTZ - Level 1  (0) 2019.07.11