ssh://ftz.hackerschool.org
id : level5
pw : what is your name?

서버에 접속하여 리스트를 확인 후 hint를 봅시다.

[level5@ftz level5]$ ls -l
합계 12
-rw-r--r--    1 root     root          129  3월 23  2000 hint
drwxr-xr-x    2 root     level5       4096  2월 24  2002 public_html
drwxrwx---    3 root     level5       4096  7월 12 12:32 tmp
[level5@ftz level5]$ cat hint

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

이를 이용하여 level6의 권한을 얻어라.



level5프로그램을 실행시킬 시 임시파일이 생성된다는군요. 그래서 실행시켜 보았습니다.

 

자 이제 tmp파일의 목록을 봅시다.

 /tmp로 이동하여 파일들을 확인했는데 level5.tmp는 없었습니다. 임시파일이 생성됐는데 없다.. 즉 이말은 생성 후 바로 삭제되었다고 볼 수 있습니다.

그리고 여기서 가설이 하나 생깁니다. 만약 이 임시파일의 생성과 삭제가 레벨6의 권한으로 이루어진다면 레벨5의 권한으로 생성된 파일은 삭제에 영향을 끼치지 않을까 라는  가설이 생깁니다. 확인을 위해 임시파일을 만들어 보겠습니다.

[level5@ftz level5]$ cd /tmp를 입력하여 tmp로 경로이동합니다.

[level5@ftz level5]$ cat > level5.tmp를 입력하여 파일을 생성합니다. 내용은 어떠한 걸 넣어도 상관없습니다.

.다 만들었다면 다시 프로그램을 실행시킵니다.

[level5@ftz level5]$ /usr/bin/level5

파일을 확인합시다.

[level5@ftz level5]$ cat level5.tmp 

next password : what the hell

패스워드를 얻었습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


'HackerSchool' 카테고리의 다른 글

HackerSchool - trainer  (0) 2015.07.22
HackerSchool - F.T.Z 로컬환경 구축  (0) 2015.07.22
HackerSchool - ftz level6  (0) 2015.07.15
hacker school - ftz level4  (0) 2015.07.15
hackerSchool - level 1  (0) 2015.07.15
Posted by englishmath
,



ssh://ftz.hackerschool.org
id : level4
pw : suck my brain


서버에 접속하여 디렉토리에 있는 파일들을 리스트 형식으로 확인합시다. 이름이 hint인 파일이 있군요. cat을 사용하여 명령어를 입력합니다.

[level4@ftz level4]$ ls -l
합계 12
-rw-r--r--    1 root     root           50  2월 24  2002 hint
drwxr-xr-x    2 root     level4       4096  2월 24  2002 public_html
drwxrwxr-x    2 root     level4       4096  7월 12 02:40 tmp
[level4@ftz level4]$ cat hint


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

 


/etc/xinetd.d/ 에 백도어를 심어놓았다. 라고 하는군요.

여기서 백도어란 허가받지 않은 사용자가 네트워크에 들어갈 수 있을 만큼 허술한 부분을 일컫는 말입니다. 확인을 위해 /etc/xinetd.d/경로로 이동해 봅시다. 이동후 디렉토리에 있는 파일들을 확인합시다. 명령어는 cd를 이용합니다.

[level4@ftz level4]$ cd /etc/xinetd.d/
[level4@ftz xinetd.d]$ ls
backdoor     cups-lpd     echo      ntalk   rsh      services  telnet
chargen      daytime      echo-udp  rexec   rsync    sgi_fam   time
chargen-udp  daytime-udp  finger    rlogin  servers  talk      time-udp

이름이 backdoor인 파일이 보입니다. 딱봐도 수상하니까 확인 해봅시다.
backdoor라는 파일의 내용을 살펴본다. 명령어는 cat을 사용합니다.

[level4@ftz xinetd.d]$ cat backdoor 
service finger 
{
 disable = no
 flags  = REUSE
 socket_type = stream        
 wait  = no
 user  = level5
 server  = /home/level4/tmp/backdoor
 log_on_failure += USERID
}
[level4@ftz xinetd.d]$ cat /etc/services | grep finger
finger  79/tcp
finger  79/udp
cfinger  2003/tcp   # GNU Finger

service는 서비스 이름을 명시하며 여기  backdoor 파일에서는 finger 서비스를 명시했네요.

disable은
데몬이 슈퍼데몬의 영향을 받아 실행할때는 no 
데몬을 쓰지 않을때는 yes 를 할것입니다.

참고로 데몬이란 일종의 윈도우 서비스를 말하며 평소에는 비활성화되어 있고 사용자가 요청할때만 동작하는 프로세스입니다.

슈퍼데몬은 이러한 데몬을 관리하는 데몬이며 보통 inted 또는 xinted를 칭합니다.

socket type 
TCP일 경우에는 stream, UDP일 경우에는 dgram이라 명시합니다.

wait 
inted가 서비스 요청을 받은 경우, 이후에 즉시 또다른 요청을 처리할 것인지 아닌지 여부를 결정합니다. stream일 경우에는 반드시 no wait이어야 합니다.

user
어떤 사용자의 권한으로 프로그램을 수행시켜줄 것인지 명시합니다. 여기서는 level5의 권한으로 프로그램을 수행시킵니다.

server 
어떤 응용 프로그램을 수행시킬 것인지 명시합니다. 절대 경로를 모두 명시해야합니다.

log_on_failure += USERID

만약 로그인에 실패할시 USERID가 로그로 남는다는 뜻입니다.

즉 요약하면 level5의 권한으로 finger서비스가 백도어를 실행한답니다. 그리고 이 프로그램이 실행되는 경로는 /home/level4/tmp/backdoor 입니다. 확인을 위해 tmp경로로 가시면 파일이 없습니다. 그래서 직접 만들어 봅시다.

그리고 프로그램이 위치한 곳은 /home/level4/tmp/backdoor에서 보면 tmp 이기 때문에  backdoor라는 프로그램을 작성하여 level5 user의 권한으로 원하는 명령을 수행할 수 있습니다.
~/tmp에 my-pass를 실행하는 backdoor라는 이름의 프로그램을 작성합니다. 그 후 컴파일합니다.

[level4@ftz tmp]$ cd ~/tmp
[level4@ftz tmp]$ cat > backdoor.c
#include <stdio.h>

int main()
{
  system("my-pass");
}
[level4@ftz tmp]$ gcc -o backdoor backdoor.c


finger를 실행합시다.

[level4@ftz tmp]$ finger @localhost
^[[H^[[J

Level5 Password is "what is your name?".


 패스워드를 얻었습니다.


'HackerSchool' 카테고리의 다른 글

HackerSchool - trainer  (0) 2015.07.22
HackerSchool - F.T.Z 로컬환경 구축  (0) 2015.07.22
HackerSchool - ftz level6  (0) 2015.07.15
Hacker school ftz level5  (0) 2015.07.15
hackerSchool - level 1  (0) 2015.07.15
Posted by englishmath
,
안녕하세요. 오늘은 hackschool의 level 1을 풀어보겠습니다.
서버로 접속하여 level 1로 갑시다. level 1의 패스워드는 ftz트레이닝 10단계를 완료하시면 얻을 수 있습니다.
파일목록을 확인합시다. hint파일이 있군요. hint파일을 확인해보겠습니다.

setuid가 걸린 파일을 찾으라는군요.setuid란 파일 실행시 다른 권한으로 파일을 실행시켜준다는 것을 의미합니다. 그러면 파일을 찾기 위해 명령어를 입력해 보겠습니다.

find / -user level2 -perm -4000 2>/dev/null 를 입력해줍시다.

find : 파일을 찾을때 쓰는 명령어입니다.

-user level2 : level2 권한인 것을 의미합니다.

-perm -4000 : perm은 퍼미션으로 찾아라는 뜻입니다. 퍼미션이란 해당 파일이나 폴더의 권한을 의미합니다. 4000이란 것은 앞의 4는setuid이고 뒤의 000은 rwx입니다. rwx는 읽고 쓰고 실행이 가능한 파일을 의미합니다. 즉 setuid가 걸린 파일이나 폴더를 의미합니다.

2>/dev/null : 앞의 숫자2는 접근거부(에러메세지)를 의미합니다. /dey/null은 보여주지 않겠다 라는 소리입니다. 즉 접근거부된 파일은 보여주지 말라 라는 뜻이지요.

명령어를 적어주시면 다음과 같이 하나의 파일이 나옵니다. ExecuteMe 나를 실행시키라는 뜻을 가진 파일이네요. 실행을 위해 cd /bin을 입력하여 bin으로 이동한 후 ExecuteMe를 실행시켰습니다.

setuid를 갖고있는 파일이 맞는 모양이군요. level2의 권한으로 명령어를 하나 실행시켜준답니다. 다만 my-pass와 chmod는 제외라는군요.

my-pass는 현재 권한의 패스워드를 알려달라는 명령어입니다. 해커스쿨에서의 전용 명령어이지요. 그리고 chmod는 파일 및 디렉토리의 권한을 변경하는 명령어입니다. 암튼 이두개의 명령어는 제외라는군요. 그리고 레벨2의 권한으로 명령어를 하나만 실행시켜준다는군요. my-pass가 막힌 이상 하나의 명령어로 패스워드를 알아내기는 매우 힘듭니다. 그렇기 때문에 여기서 단 하나의 명령어로 권한을 지속하여 유지시켜야 합니다. 그 방법은 쉘을 부르는 것입니다. 쉘은 우리가 여기 level1로 들어올때 사용한 그 쉘을 의미합니다. 그러면 쉘을 불러봅시다. 명령어는 bash 쓰셔도 되고 sh쓰셔도 됩니다.
level2가 유지가 됐으며 제약도 풀렸습니다. 패스워드를 알아냅시다.

이것으로 문제풀이를 마치겠습니다.


ㅇ[출처] [해커스쿨] ftz level1 풀이|작성자 도마 우마루파일 및 디렉토리의 권한을 변경하는 명령어입니다. 암튼 이 두개의 명령어는 제외라는군요. 흠. 뭘 입력해야 할까요? 




'HackerSchool' 카테고리의 다른 글

HackerSchool - trainer  (0) 2015.07.22
HackerSchool - F.T.Z 로컬환경 구축  (0) 2015.07.22
HackerSchool - ftz level6  (0) 2015.07.15
Hacker school ftz level5  (0) 2015.07.15
hacker school - ftz level4  (0) 2015.07.15
Posted by englishmath
,