개요

Nikto 스캐너에 대해 기본 정보를 정리해둔다. 정식명칭은 Nikto Web Scanner 이다. 웹 사이트의 취약점을 스캔해준다.

  • Written in: Perl
  • Written by : 오픈 시큐리티 파운데이션(Open Security Foundation) 의 CFO인 크리스 술로(Chris Sullo)가 취약점 진단을 위해 작성했다고 한다.
  • 라이센스 : GPL (소스 코드는 오픈 소스이나 데이터 파일은 그렇지 않다.)
  • git 저장소: https://github.com/sullo/nikto
  • 서버배너정보(구동중인 웹 서버 종류와 버전)를 출력해주는 기능도 있다.

커밋횟수는 2017년 기준 1000여건, 2023년 7월 19일 시점에는 에는 1359건이다. nmap에 비하면 꽤 젊은(?) 프로그램인 것 같다. 원작자(sullo)가 계속 작성중인 듯 하다! follow도 등록했다!

Nmap과의 차이점?

  • Nmap은 주로 네트워크 레이어에서 구성 정보를 스캔하는 툴
  • Nikto는 어플리케이션 레이어(HTTP) 에서 취약점을 스캔하는 툴

설치 및 실행하기

도커 컨테이너로 실행하는 방법이다. (perl 파일을 실행하는 방식은 문법에러가 발생했다. 아마도 작성한 Perl버전과 실행환경의 Perl 버전이 상이해서 발생하는 문제같다.)

git clone https://github.com/sullo/nikto
cd nikto
docker build -t sullo/nikto .

# Call it without arguments to display the full help
docker run --rm sullo/nikto

# Basic usage
docker run --rm sullo/nikto -h http://www.example.com

참고로 칼리리눅스에는 기본으로 설치되어있다.

옵션

host

-host : 타겟을 지정한다. 도메인이나 IP를 적는다.

Display

-Display: 이 옵션을 주면 화면에 출력할 결과를 지정할 수 있다.

ex) -Display 124 와 같은 식으로 조합해서 지정한다.

각 필드의 의미는 다음과 같다.

1 – Show redirects
2 – Show cookies received
3 – Show all 200/OK responses
4 – Show URLs which require authentication
D – Debug Output
E – Display all HTTP errors
P – Print progress to STDOUT
V – Verbose Output

Format

-Format

결과 포맷을 지정할 수 있다. csv, htm, msf, txt, xml 이 가능하다.

output

-output

아웃풋을 기록할 곳을 지정할 수 있다.

id

-id

이 옵션을 추가하면 인증정보가 요구될 때 입력받은 인증정보를 사용한다.

ex) id:password 혹은 id:password:realem 으로 적는다.

샘플 사용법

nikto -host www.example.com -Display 124

취약점 정보 확인

  • 스캔의 결과로 나온취약점은 osvdb.org 에서 검색이 가능하다고 하는데, 현재는 서비스하고 있지 않은 것 같다. 블로그로 연결이 되고 있다. (2017.12.6 시점 확인)

참고 URL

  • https://en.wikipedia.org/wiki/Nikto_Web_Scanner
  • github.com/sullo/nikto
  • https://github.com/sullo/nikto/wiki