소개
Nikto 는 인기 있는 오픈 소스 웹 서버 스캐너로, 6,700 개 이상의 잠재적으로 위험한 파일/프로그램, 1,250 개 이상의 서버의 오래된 버전 확인, 270 개 이상의 서버에 대한 버전별 문제 등 다양한 항목에 대해 웹 서버를 포괄적으로 테스트합니다.
스캔을 실행하면 결과가 일반적으로 터미널에 직접 표시됩니다. 문서화, 추가 분석 또는 팀과의 공유를 위해서는 이 출력을 파일로 저장하는 것이 필수적입니다. Nikto 는 다양한 형식으로 스캔 보고서를 저장할 수 있는 유연한 옵션을 제공합니다.
이 랩에서는 Nikto 스캔 결과를 파일로 저장하는 방법을 배우게 됩니다. 간단한 로컬 웹 서버를 스캔하여 일반 텍스트 (.txt) 및 쉼표로 구분된 값 (.csv) 형식으로 출력을 저장하는 연습을 할 것입니다.
일반 텍스트 출력 형식 선택
이 단계에서는 Nikto 가 지원하는 다양한 출력 형식을 탐색합니다. Nikto 는 보고 기능을 위해 플러그인을 사용하며, 사용 가능한 형식을 확인하기 위해 플러그인 목록을 볼 수 있습니다.
-list-plugins 옵션은 보고용 플러그인을 포함한 모든 사용 가능한 플러그인을 보여줍니다. 사용할 수 있는 형식을 확인하기 위해 이 명령을 실행해 보겠습니다.
터미널에서 다음 명령을 실행합니다:
nikto -list-plugins
긴 플러그인 목록이 표시됩니다. 출력을 스크롤하여 "Reporting" 섹션을 찾으십시오. 이 섹션에는 스캔 결과를 저장할 수 있는 모든 파일 형식이 나열됩니다.
...
Reporting
--------------------------------------------------
csv - Comma-separated value
htm - HTML Report
json - JSON Report
nbe - Nessus NBE format
sql - SQL (generic)
txt - Plain text
xml - XML
...
보시다시피 txt는 "Plain text" 형식으로 나열됩니다. 먼저 이 형식을 사용하겠습니다.
출력 파일 이름을 지정하기 위해 -o 플래그 사용
이 단계에서는 출력 파일을 지정하는 데 사용되는 플래그에 대해 알아봅니다. Nikto 에게 보고서를 저장할 위치를 알려주려면 -o (또는 --output) 플래그를 사용합니다.
이 플래그는 이전 단계에서 선택한 파일 형식을 지정하는 -Format 플래그와 함께 사용해야 합니다. 기본 구문은 다음과 같습니다:
nikto -h <target> -Format <format> -o <filename>
-help 옵션을 사용하여 -o 플래그에 대한 공식 설명을 살펴보겠습니다. 출력을 grep으로 파이프하여 관련 줄을 빠르게 찾을 수 있습니다.
이 명령을 실행합니다:
nikto -help | grep -- "-o "
출력에는 -o 및 --output 플래그의 사용법이 표시됩니다.
-o, -output <file> Write output to this file
이제 형식과 파일 이름을 모두 지정하는 방법을 알았습니다. 다음 단계에서는 이들을 결합하여 스캔을 실행하고 결과를 저장할 것입니다.
스캔을 실행하고 텍스트 파일 생성
이 단계에서는 스캔을 수행하고 출력을 일반 텍스트 파일에 저장합니다. 이전 단계의 플래그와 정보를 결합할 것입니다.
대상은 포트 8000에서 실행 중인 로컬 웹 서버입니다. 이 서버의 URL 은 http://127.0.0.1:8000입니다.
- 대상 호스트 (
-h):http://127.0.0.1:8000 - 형식 (
-Format):txt - 출력 파일 (
-o):scan_report.txt
이제 전체 명령을 구성하고 터미널에서 실행합니다. 모든 작업은 기본 ~/project 디렉토리에서 수행해야 합니다.
nikto -h http://127.0.0.1:8000 -Format txt -o scan_report.txt
Nikto 가 스캔을 시작합니다. 터미널에서 스캔 진행 상황을 볼 수 있지만, 최종 보고서는 scan_report.txt 파일에 기록됩니다. 스캔이 완료될 때까지 기다려 주십시오.
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 8000
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.
...
+ 1 host(s) tested
명령이 완료되면 현재 디렉토리 (~/project) 에 scan_report.txt라는 새 파일이 생성됩니다.
저장된 텍스트 파일 내용 확인
이 단계에서는 스캔 결과를 텍스트 파일에 올바르게 저장했는지 확인합니다. cat과 같은 명령줄 도구를 사용하여 파일 내용을 표시할 수 있습니다.
scan_report.txt 파일의 내용을 보려면 다음 명령을 실행합니다:
cat scan_report.txt
출력은 전체 Nikto 보고서이며, 스캔 중에 터미널에서 본 출력과 매우 유사해야 합니다.
Nikto V2.5.0
================================================================
+-----------+
| General |
+-----------+
Date: ...
Start Time: ...
End Time: ...
Version: 2.5.0
...
+-----------+
| Target |
+-----------+
IP: 127.0.0.1
Hostname: 127.0.0.1
Port: 8000
...
+-----------+
| Findings |
+-----------+
+ The anti-clickjacking X-Frame-Options header is not present.
...
Nikto 스캔 보고서를 일반 텍스트 파일에 성공적으로 저장했습니다. 이제 이 파일을 쉽게 저장, 보관 또는 공유할 수 있습니다.
CSV 형식으로 저장하기 위해 프로세스 반복
이 단계에서는 스캔 결과를 다른 형식인 CSV(Comma-Separated Values) 로 저장하기 위해 프로세스를 반복합니다. CSV 형식은 구조화되어 있어 Excel 또는 LibreOffice Calc 와 같은 스프레드시트에 가져오거나 스크립트로 처리하는 데 이상적입니다.
절차는 거의 동일합니다. -Format 플래그의 값을 csv로 변경하고 .csv 확장자를 가진 새 파일 이름을 제공하기만 하면 됩니다.
- 대상 호스트 (
-h):http://127.0.0.1:8000 - 형식 (
-Format):csv - 출력 파일 (
-o):scan_report.csv
CSV 형식으로 보고서를 생성하려면 다음 명령을 실행합니다:
nikto -h http://127.0.0.1:8000 -Format csv -o scan_report.csv
스캔이 완료되면 scan_report.csv라는 새 파일이 생성됩니다. cat 명령으로 해당 내용을 살펴보겠습니다.
cat scan_report.csv
출력은 CSV 파일의 표준인 쉼표로 구분된 필드로 구조화됩니다.
"Host","IP","Port","Banner","Date","Vulnerability","Method","Description","Reference"
"127.0.0.1","127.0.0.1","8000","","...","OSVDB-3233: The anti-clickjacking X-Frame-Options header is not present.","GET","",""
"127.0.0.1","127.0.0.1","8000","","...","OSVDB-3092: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.","GET","",""
...
이제 두 가지 다른 형식으로 보고서를 성공적으로 생성했으며, 이는 Nikto 의 출력 옵션의 유연성을 보여줍니다.
요약
이 실습에서는 Nikto 웹 서버 스캐너의 출력을 관리하는 방법을 배웠습니다. 로컬 웹 서버를 성공적으로 스캔하고 나중에 사용할 수 있도록 결과를 파일에 저장했습니다.
구체적으로 다음을 연습했습니다:
-list-plugins옵션을 사용하여 사용 가능한 출력 형식 나열하기.-o및-Format플래그를 사용하여 출력 파일 및 해당 형식 제어하기.- 일반 텍스트 (
.txt) 로 스캔 보고서 생성하기. - CSV(Comma-Separated Values) 형식으로 스캔 보고서 생성하기.
이 기술은 결과를 문서화하거나, 오프라인 분석을 수행하거나, 스캔 결과를 더 큰 보고 시스템에 통합해야 하는 모든 보안 전문가에게 기본적입니다.


