개요
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