최근 시스템의 셸이나 다른 별도의 툴을 사용하지 않고, 웹 서버나 게시판 등 서버측에서 실행되는 응용 프로그램의 취약성을 이용한 소위 ‘웹 해킹’이 자주 발견되고 있다. 이러한 웹 해킹은 셸 로깅이 아니므로 로그가 잘 남지 않고 방화벽에서도 허용되어 있고 특히 국내의 경우 게시판이나 자료실 등을 운영하면서 서버측 언어를 많이 사용하므로 이 추세는 계속적으로 증가할 것으로 보인다. 이러한 웹 해킹에 대응하기 위해 웹 서버나 웹 기반의 응용 프로그램의 취약성을 점검할 수 있는 대표적인 프로그램으로 nikto라는 프로그램을 활용해 보기로 하자.
nikto의 기능 및 특징
nikto는 웹 서버 설치시 기본적으로 설치되는 파일과 웹 서버의 종류와 버전 등을 스캔하며, 특히 방대한 DB를 이용해 취약한 CGI 파일을 스캔하는 기능이 매우 뛰어하다. 여기에서는 이러한 nikto의 기능 및 특징에 대해 알아보도록 하자.
nikto 홈페이지
<화면 6> nikto 다운로드 및 압축해제
1. nikto는 취약하다고 알려진 3100여개의 방대한 CGI 파일에 대한 정보를 갖고 있으며 625개가 넘는 서버에 대한 버전 정보를 갖고 있다. nikto는 서버에서 보안적으로 잘못 설정된 부분(misconfigurations)이나 웹 서버 설치시 기본으로 설치되는 파일이나 스크립트의 존재 유무, 안전하지 못한 파일이나 스크립트의 유무, 오래되어 취약성을 가지고 있는 프로그램의 유무 등을 검색한다.
2. 취약성 DB는 수시로 업데이트가 되며 원격지에서도 쉽게 업데이트가 가능하다.
3. 취약성 점검 결과는 html이나 txt, csv 등으로 저장할 수 있다.
4. nikto 사이트(http://www.cirt.net/code/nikto.shtml)에서 소스를 다운받을 수 있다.
nikto의 홈페이지에서 소스 파일을 다운받는다. 소스 파일을 다운받은 후 압축을 해제하면 된다.
nikto 활용하기
nikto는 기본적으로 펄로 되어 있기 때문에 사용시 별도로 컴파일 과정은 필요하지 않고 바로 사용할 수 있다. 사용 형식은 다음과 같다.
./nikto.pl [-h target] [options]
아무런 옵션 없이 nikto.pl을 실행하면 전체 옵션을 보여주는데, 많이 사용되는 몇몇 옵션에 대해 알아보자(모든 옵션은 홈페이지를 참고하기 바란다).
-Cgidirs
이 옵션을 사용하면 스캔을 진행할 cgi 디렉토리를 지정할 수 있다. 통상적으로 all로 지정하면 되고 이때 모든 cgi 디렉토리를 스캔한다. 다음은 스캔 예제다.
# ./nikto.pl –Cgidirs all -h test.nikto.com
이때 웹 서버의 access_log를 보면 <화면 7>과 같이 보이게 된다.
<화면 7> nikto 스캔시 웹 서비스 로그
-generic
스캔시 ‘Server:’ 문자열에 보이는 정보와는 관계없이 스캔을 진행하도록 한다.
-findonly
웹 서버가 사용하는 웹 포트를 스캔하기 위한 옵션이다. 이를테면 80번이 아닌 다른 포트에서 웹 서비스를 하는 포트를 찾을 경우에 사용된다.
<화면 8> findonly 옵션 사용
-Format
스캔 결과를 파일로 저장하고자 할 때 어떤 형식으로 남길지 지정한다. 기본 옵션은 txt로 저장되나 이외 htm이나 csv 등을 지정할 수 있다. 또한 이때 -output과 함께 사용해 스캔 결과로 저장될 파일명도 함께 지정해야 한다. 다음은 스캔 예제로서 htm 형식으로 저장하며 저장 결과는 result.html로 남도록 했다.
# ./nikto.pl -Format htm -output result.html -h test.nikto.com
<화면 9>는 이때의 스캔 결과 html 파일을 브라우저로 읽은 화면이다.
<화면 9> 스캔 결과 화면
-id
만약 해당 웹 서버가 HTTP Authentication으로 보호되고 있을 때 ID/PW로 인증할 필요가 있는데, 이때 사용될 수 있다. 형식은 userid:password이다.
-update
룰 등을 업데이트할 때 필요하다. 웹을 통해 자동으로 다운받아 업데이트하게 된다. 다음은 실행 예이다.
# ./nikto.pl -update
만약 점검하고자 하는 서버 또는 도메인이 여럿인 경우 점검하고자 하는 리스트를 파일로 만들어서 일괄 스캔할 수도 있다. 이를테면 다음과 같이 스캔하고자 하는 목록을 한 줄에 하나씩 list.txt에 설정한 후 실행하면 순서대로 실행하게 된다.
# ./nikto.pl -h list.txt
10.1.1.2 10.1.1.3 10.1.1.50:443
출처 : Tong – jackie92님의 ◐ Security Tools통