본문 바로가기

보안/칼리 리눅스

자동 취약점 분석 Nikto 와 tomcat 실습

Nikto

출처: https://www.secuneus.com/nikto/

 

Nikto는 오픈 소스 웹 스캐너로 6700개 이상의 취약점과 1250개 이상의 웹 서버 버전 정보를 확인 가능하다

웹 서버에 대한 포괄적으로 테스트를 수행을 하며 '보안 점검'을 위한 툴이어서 스캐닝을 하면 

로그 기록이 남는 특징을 갖고 있다.

 

Tomcat

출처:https://tomcat.apache.org/

아파치 소프트웨어 재단에서 java 기반의 서블릿 컨테이너이자 웹 서버 이다.  즉 WAS(web application server)라고도 불린다. JSP와 Servlet을 구동하기 위한 서블릿 컨테이너 역할을 수행 하며 DB연결, 다른 응용프로그램과 상호 작용 등 동적인 기능들을 사용할 수 있다.

 

개인적으로 아파치와 톰캣에 대해 잘 설명했다고 느껴진 블로그라서 같이 공유 한다.

https://velog.io/@kdhyo/Apache-Tomcat-%EB%91%98%EC%9D%B4-%EB%AC%B4%EC%8A%A8-%EC%B0%A8%EC%9D%B4%EC%A7%80

 

Apache? Tomcat?? 둘이 무슨 차이지?

학교에서 php를 하고, 회사에서 spring boot + jsp를 사용하면서아파치 톰캣을 자연스럽게 사용하게 되었다.하지만, 사용하는 동안 이게 도대체 무엇이길래 웹을 할 때 많은 곳에서 사용하는지?이게

velog.io

 


실습 환경

PC1 (공격자)

OS: kali linux

IP: 192.168.180. 147

 

PC2 (타겟)

OS: Linux (matasploitable V2 )

IP:192.168.180.149


타겟을 nmap으로 스캔닝을 한다.

 

#nmap -sV -T4 192.168.180.149

 

Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-24 10:02 EDT Nmap scan report for 192.168.180.149 Host is up (0.0025s latency).

Not shown: 977 closed tcp ports (conn-refused)

PORT STATE SERVICE VERSION

21/tcp open      ftp      vsftpd 2.3.4

22/tcp open      ssh    OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)

23/tcp open      telnet  Linux telnetd

25/tcp open      smtp   Postfix smtpd 53/tcp open domain ISC BIND 9.4.2

80/tcp open      http    Apache httpd 2.2.8 ((Ubuntu) DAV/2)

111/tcp open     rpcbind 2 (RPC #100000)

139/tcp open    netbios-ssn  Samba smbd 3.X - 4.X (workgroup: WORKGROUP)

445/tcp open    netbios-ssn  Samba smbd 3.X - 4.X (workgroup: WORKGROUP)

512/tcp open    exec    netkit-rsh rexecd 513/tcp open login OpenBSD or Solaris rlogind

514/tcp open    tcpwrapped

1099/tcp open  java-rmi    GNU Classpath grmiregistry

1524/tcp open  bindshell  Metasploitable root shell

2049/tcp open  nfs 2-4 (RPC #100003)

2121/tcp open  ftp ProFTPD 1.3.1

3306/tcp open  mysql MySQL 5.0.51a-3ubuntu5 5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7

5900/tcp open  vnc VNC (protocol 3.3)

6000/tcp open  X11 (access denied)

6667/tcp open  irc UnrealIRCd

8009/tcp open  ajp13 Apache Jserv (Protocol v1.3)

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

 

Service Info: Hosts: metasploitable.localdomain,

irc.Metasploitable.LAN;

OSs: Unix, Linux;

CPE: cpe:/o:linux:linux_kernel

 

여기 제일 마지막줄에 8180 포트에 대해 연구를 할 것이다.

80번포트가 Apache 웹 서버인것을 통해 8180포트가 Tomcat 서버라는 점이 확실해 졌다.

8180 번 포트의 서비스가 http 이니 브라우져로 접속을 해볼것이다.

 

여기서 주목해야 할 점은

접속을 할때 반드시 포트번호(빨간색 밑줄 및 노란색 하이라이트 )까지 해서 접속을 해야지 포트 번호를 안쓰면 80포트의

웹서버로 접속을 하게 된다

또한 tomcat 버전 5.5 (빨간색 밑줄)라는 점을 알수 있다.

 

tomcat은 어플리케이션 배포 관리를 위한 관리 백그라운드에 존재하며, 관리 백그라운드는 http 기본 인증을 사용하여 로그인 한다

사용자의 암호가 약한 암호일 경우 무차별 대입으로 쉽게 로그인을 할수 있다. 그렇다면 무차별 대입을 하기 위해서는 관련 단어 들이 있는 사전 파일이 필요하다

리눅수에 find 명령어와 비슷한 성질을 갖은 locate 명령어를 wordlist를 검색하면 다양 종류의 사전 파일들을 확인 할수 있다.

grep 옵션을 통해 tomcat 관련 사전 파일을 찾았으나

/usr/share/dirb/wordlist/vulns/tomcat.txt

해당 사전 파일들은 웹 디렉토리를 찾을때 쓰이는 사전파일이었다.

 

물론 그 아래 메타스폴로이드 프레임워크 디렉토리에 로그인에 관한 사전 파일들이 있지만 해당 프로젝트에 목표는

브루트포스가 아니기에 다음 프로젝트에 기약을 해야한다.

 

물론 만들어진 사전파일 말고도 직접 만들수 있다.

사전 파일에 내용은 해당 웹서버 글 내용들을 조합을 해서 만들수도 있다.

해당 웹서버에 글 내용들의 동사,명사 등을 분리를 해서 사전 파일을 만들수도 있다.

 

이번 게시물 목표 답게 Nikto를 이용을 해볼것이다.

-h : 호스트 주소

-p: 포트 번호

브라우져 접속할때 마찬가지로 반드시 포트 번호와 함께 스캔을 돌려야 한다.

옵션 설명
-o 출력 결과 저장 파일 지정
-C 목표 웹 서버의 CGI 디렉터리를 지정
-config 설정 파일 지정
-update nikto 업데이트
-cookie 쿠키표시
-ssl ssl을 사용하는 타겟에 사용

그외에 옵션

 

다양한 취약점이 나왔다

 

그중에서 

/manager/html: Default account found for 'Tomcat Manager Application' at (ID 'tomcat', PW 'tomcat'). Apache Tomcat. See: CWE-16

 

해당 내용을 보자면 192.168.180.149:8180/manager/html  해당 링크에는 톰캣 매니저 어플리케이션이 있는데

거기 아이디와 비번이  tomcat, tomcat 이라고 한다.

 

그래서 접속을 해보니 인증 절차가 있었고

아이디와 비밀번호를 입력하자 인증절차에 통과 되었다.

 

이외에도 다른 로그인 절차도 모두 아이디 비밀번호는 똑같다

반응형