System/FTZ2017. 5. 20. 00:05

▲ hint에 /etc/xinetd.d/ 에 백도어를 심어 놓았다고 한다.

백도어(backdoor)란 뒷문 이라는 의미로 본래의 인증절차를 걸치지 않고 접근한다.

ls를 해보니 누가봐도 백도어 파일인 backdoor가 있었다. cat으로 실행하니 저런 결과가 나왔는데

분석해보니 finger라는 서비스에 level5유저의 권한으로 level4계정의 tmp안의 backdoor 프로그램을

실행시켜 준다. 즉 tmp폴더에 우리가 원하는 코드를 집어넣어 익스플로잇 할 수 있다.



▲간단하게 코딩을 한 뒤 gcc로 컴파일 하였다. 많은 사람들이 쓰는 서버라

ls 하였더니 많은 파일이 보였지만 상관없다. 컴파일 까지 마친 후

finger level4@localhost 라는 명령어를 입력해 주면 자동으로 finger서비스에서

backdoor파일을 실행시켜 level5권한으로 my-pass를 실행해 패스워드를 알려준다.

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

[FTZ school] level 6  (0) 2017.05.20
[FTZ school] level 5  (0) 2017.05.20
[FTZ school] level 3  (0) 2017.05.20
[FTZ school] level 2  (0) 2017.05.19
[FTZ School] level 1  (0) 2017.05.19
Posted by BadSchool
System/FTZ2017. 5. 20. 00:01

▲level3의 hint를 읽은 결과. 보기쉽게 밑에 다시썼다.

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
//다음 코드는 autodig의 소스이다.
 
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
 
int main(int argc, char **argv){
 
    char cmd[100];
 
    if( argc!=2 ){
        printf"Auto Digger Version 0.9\n" );
        printf"Usage : %s host\n", argv[0] );
        exit(0);
    }
 
    strcpy( cmd, "dig @" );
    strcat( cmd, argv[1] );
    strcat( cmd, " version.bind chaos txt");
 
    system( cmd );
 
}
 
//이를 이용하여 level4의 권한을 얻어라.
 
//more hints.
//- 동시에 여러 명령어를 사용하려면?
//- 문자열 형태로 명령어를 전달하려면?
 
cs

▲소스코드를 보자면 인자값을 받아 dig @+인자값+ version.bind choas txt를 system함수로 실행시킨다.

즉, 인자값 부분에 쉘을 실행시키는 명령어가 들어가야 할 것으로 보여진다.
힌트를 보자면 동시에 여러 명령어를 사용하려면? 이 있는데 방법은 세미콜론(;)을 사용한다.

문자열 형태로 명령어를 전달하려면? 대표적인 방법으로 perl 스크립트가 있다.


▲일단 find 명령어로 autodig파일을 찾아내었다.


▲익스플로잇을 위해 perl 스크립트를 사용하였다.

간단하게 보자면 perl로 ;/bin/sh;라는 명령을 문자열로 인자값에 보냈다. ;은 명령어를

끝마칠 때 쓰는 것이므로 컴퓨터는

/bin/autodig ;/bin/sh; version.bind choas txt 로 알아듣게 된다.

즉 세개의 부분이 별개로 작용되어 /bin/sh명령이 실행되고 level4의 권한을 얻어 my-pass로

패스워드를 알아낼 수 있다.


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

[FTZ school] level 6  (0) 2017.05.20
[FTZ school] level 5  (0) 2017.05.20
[FTZ school] level 4  (0) 2017.05.20
[FTZ school] level 2  (0) 2017.05.19
[FTZ School] level 1  (0) 2017.05.19
Posted by BadSchool
System/FTZ2017. 5. 19. 21:48

▲level2에 진입하여 la -al을 입력하고 cat으로 hint를 보았다.

텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다고 한다.. 흠...

일단 level3의 쉘을 실행시키는 듯 하니 level1과 같이 level3의 권한을 가지고 있는 파일을 찾아보자


▲전과 같은 명령어를 입력하자 /usr/bin/editor이라는 경로가 나타났다.


▲실행시켜 보았더니 VIM이 켜졌다. VIM에는 특별한 기능이 있는데 바로 쉘을 실행시킬수 있는 기능이 있다.


▲콜론(:)을 누르고 !/bin/sh 로 쉘 실행 명령을 입력한 후 엔터를 쳐 주자


▲보이는 것과 같이 level3의 쉘이 한번 실행되었으며 my-pass를 입력하여 다음 패스워드를 알 수 있었다



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

[FTZ school] level 6  (0) 2017.05.20
[FTZ school] level 5  (0) 2017.05.20
[FTZ school] level 4  (0) 2017.05.20
[FTZ school] level 3  (0) 2017.05.20
[FTZ School] level 1  (0) 2017.05.19
Posted by BadSchool
System/FTZ2017. 5. 19. 20:38

주소 : ftz.hackerschool.org

포트 : 23

설정 : Telnet


▲xshell 로 처음 접속한 화면. 트레이닝과 레벨1중 하나를 진행할 수 있다.

나는 레벨1을 진행하였다.



▲들어가서 ls -al을 해보았다.

hint파일을 cat명령어로 읽어보니 level2권한의 setuid가 걸린 파일을 찾는 레벨이다.


▲find / -user level2 -perm -4000 2> /dev/null

명령어를 이용하여 찾아보았다.

설명해보자면, find 명령어로 level2유저의 setuid파일을 찾아보고 오류가 나는 값은 /dev/null(휴지통)으로 보내기 이다.

/bin/ExcuteMe라는 값이 한개 나왔다. 실행해보자.


▲my-pass와 chmod를 제외한 명령어를 하나 들어준다고 한다.

가볍게 sh를 실행해주자



▲그 후 my-pass 를 입력하면 간단하게 답이 나온다.



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

[FTZ school] level 6  (0) 2017.05.20
[FTZ school] level 5  (0) 2017.05.20
[FTZ school] level 4  (0) 2017.05.20
[FTZ school] level 3  (0) 2017.05.20
[FTZ school] level 2  (0) 2017.05.19
Posted by BadSchool
System/Linux2017. 5. 9. 01:00

pwd 

현재 작업 디렉터리 위치 

cd 

디렉터리 이동 

tty 

현재 로그인되어 있는 터미널 장치 이름 

man 

ls의 매뉴얼 보기 

ls 

현재 디렉터리와 파일 정보 보기 

ls -l 

파일의 소유권한, 소유자 등 

ls -a 

숨김파일을 포함한 디렉터리 정보 

cat > fun.txt 

fun.txt  생성

touch abc

abc 생성 

mkdir 

디렉터리 생성 

cp 

복사 

mv

파일 이동, 파일명 변경 

rm 

파일 삭제 

rmdir 

디렉터리 삭제 

file

파일 종류 


Posted by BadSchool
System/Linux2017. 5. 8. 03:00

group 관련 설명

groupadd 옵션 그룹명

-g GID -o 

-o는 생략가능하다, GID 500이상 값 지원 

-r 

시스템 계정에 사용, GID 499이하 값 자동지정

-f 

강제로 생성 


groupmod

-g gid -o 

gid 변경 500이상 또는 100이하 

-n 

새로운 그룹명으로 변경 


groupdel 그룹명

Posted by BadSchool
System/Linux2017. 5. 8. 02:00

계정 조회

users 명령어 사용


etc/passwd 설명

root : x : 0 : 0 : root : /root : /bin/bash

  1     2  3   4     5        6          7

1. 사용자 명

2. 패스워드(/etc/shadow에 암호화)

3. 사용자 계정 uid

4. 사용자 계정 gid

5. 사용자 계정 이름(정보)

6. 사용자 계정 홈디렉터리

7. 사용자 계정 로그인 쉘


etc/shadow 설명

root : $2$4L5R54W8w42 : 12745 : 0 : 99999 : 7 :    :    :

  1                 2                 3      4       5     6   7    8    9

1. 사용자 명

2. 패스워드

3. 패스워드 파일 최종 수정일

4. 패스워드 변경 최소일

5. 패스워드 변경 최대일

6. 패스워드 만료 경고기간

7. 패스워드 파기 기간(패스워드 파기 후 계정 비활성 기간)


useradd 명령어

useradd 생성할 계정명

passwd 생성한 계정명

-c comment

사용자 이름 또는 정보 

-d home_dir 

사용자 계정 홈 디렉터리 

-e expire_date 

사용자 계정 유효기간

-f inactive_time 

비활성 기간 

-g initial_group 

기본 그룹 

-G group[,...] 

다중 그룹 

-s shell

로그인 기본 쉘 

-u uid 

사용자 계정 uid 


Posted by BadSchool
System/Linux2017. 5. 7. 04:21

파티션의 정의

하나의 물리적인 하드 디스크를 여러 개의 논리적인 디스크로 분리하는 것을 의미


파티션을 나누는 이유

  1. 디스크를 하나로 사용시 블록의 크기가 크게 잡혀 저장 공간 낭비가 발생한다.
  2. 하나의 디스크에 여러 개의 운영체제를 사용할 수 있다.
  3. 파일 시스템 점검 시간이 단축된다.
  4. 백업용 파티션에 자료를 보관하여 백업이 용이하다.
  5. 특정 파티션의 보호가 가능하다.
  6. 루트 파티션이 날아가도 타 파티션은 안전하다.

파티션의 종류
  1. 하나의 물리적인 디스크에는 4개의 Primary 파티션 존재
  2. 4개의 Primary 파티션 중 1개는 Extended
  3. 1개의 Extended 파티션은 여러개의 Logical 파티션으로 분할 가능
  4. 각각의 Logical 파티션은 다음 Logical 파티션의 주소를 가짐
  5. Extended 파티션은 Logical파티션에 대한 정보만 가지고 있다.
  6. SCSI 하드디스크는 최대 15개, IDE 하드디스크는 최대 63개의 파티션을 가질 수 있다.
  7. 하나의 물리적인 디스크 안에 12개 이상 파티션 생성은 추천하지 않는다.
  8. 파티션은 실린더 기준으로 나누어진다. 선택한 용량만큼 실린더 범위를 할당받는다.

파티션에 따른 장치명
H d a 1
  1. Hd : 파티션에 있는 장치 유형을 의미한다. ex) hd(IDE 디스크), sd(SCSI 디스크)
  2. a : 파티션에 있는 장치를 나타낸다. ex) /dev/hda 첫번째 IDE HDD, /dev/sda 첫번째 SCSI HDD
  3. 1 : 파티션을 표시 ex) 1 ~ 4 는 Primary or Extended, 5부터는 Logical

fdisk 명령어
fdisk m (도움말)

 a

부트 가능한 플래그로 변경 

 b 

bsd 디스크 레이블을 편집 

 c 

도스호환 플래그로 변경 

 d 

파티션을 삭제

 l 

알려진 파티션 형태의 목룍 

 m 

이 메뉴를 출력 

 n 

새로운 파티션 추가 

 o 

새로운 도스 파티션 테이블을 생성 

 p 

파티션 테이블을 출력 

 q 

변경을 저장하지 않고 종료 

 s

새로운 Sun 디스크 레이블을 생성 

 t 

파티션의 시스템 id를 변경 

 u 

표시/엔트리 단위를 변경 

 v 

파티션 테이블을 점검 

 w 

디스크에 테이블을 기록하고 종료 

 x 

다른 기능(pro) 




Posted by BadSchool
System/Linux2017. 5. 6. 03:21

디렉터리 종류와 특징

/

최상위에 있는 디렉터리, 루트 디렉터리

/bin 

기본실행파일들, 사용자 명령어들이 들어있다

/boot 

보면 알겠지만 시스템 부팅시 필요한 파일들이 들어있다 

/dev

플로피, 하드, CD등 각종 장치 파일들이 있다 

/etc

시스템 관리에 필요한 스크립트 파일, 설정파일 들어있다 

/home 

일반적으로 사용자들이 사용하는 홈 디렉터리 위치.

ex) abc라는 유저의 홈 디렉터리 /home/abc 

/lib

각종 라이브러리, 커널 모듈이 있다 

/lost+found 

파일 시스템 복구를 위한 디렉터리다 

/mnt 

마운트될 파일시스템의 마운트 포인터가 된다 

/opt 

추가된 응용 프로그램 패키지가 설치되는 디렉터리 

/proc 

시스템 관리를 목적으로 메모리상에 만든 가상 디렉터리,

현재 시스템 설정을 보여준다

/root 

루트 사용자의 홈 디렉터리, 루트만 접근 가능 

/sbin 

시스템 점검 및 복구 명령, 네트워크 인터페이스 명령 등 시스템 관리에

관련된 실행파일 있다 

/tmp 

각 장치에 필요한 소켓이 위치하고 시스템에 필요한 임시 파일들이 위치 

/usr 

시스템이 정상적으로 가동되는데 필요한 모든 명령들과 라이브러리, 메뉴얼페이지가 있다 

/usr/bin 

/bin에 없는 유용한 파일 존재 

/usr/include 

C언어 헤더파일 존재 

/usr/src 

시스템에 있는 컴파일되지 않은 소스코드 포함,

/usr/src/linux로 리눅스 커널 소스코드 포함 

/usr/man 

명령어로 볼 수 이는 man page(메뉴얼 페이지)를 포함하고 있다 

/var

자료 데이터가 변경될 때 저장되는 디렉터리, 작동 log와 기록 등을 저장,

메일서버 운영하는 경우 메일 저장하는 가변저장 공간




Posted by BadSchool