Nikto 를 활용한 웹 서버 스캔

NmapBeginner
지금 연습하기

소개

이 실습에서는 오픈 소스 웹 서버 스캐너인 Nikto 를 사용하여 잠재적인 취약점을 탐지하는 방법을 배웁니다. Nikto 를 설치하고, 테스트용 웹 서버를 스캔하며, 결과를 저장하고, 발견된 내용을 분석하여 보안 약점을 식별하는 과정을 진행합니다. 이러한 실무 연습은 웹 보안 평가를 위한 기초 역량을 쌓는 데 도움이 될 것입니다.

이 실습은 단계별 안내를 통해 학습과 실습을 돕는 가이드형 실습입니다. 각 단계를 주의 깊게 따라가며 실무 경험을 쌓으세요. 통계 데이터에 따르면 이 실습은 초급 수준이며, 96%의 완료율을 기록하고 있습니다. 또한 학습자들로부터 100%의 긍정적인 평가를 받았습니다.

Nikto 설치 및 확인

취약점 스캔을 시작하기 전에 먼저 Nikto 도구를 설치해야 합니다. 이 단계에서는 시스템의 패키지 목록을 업데이트하고 apt 패키지 관리자를 사용하여 Nikto 를 설치하는 과정을 안내합니다. 모든 명령은 터미널에서 실행하며, 기본 작업 디렉토리는 /home/labex/project입니다.

먼저, 저장소에서 제공하는 최신 버전의 소프트웨어를 가져올 수 있도록 패키지 목록을 업데이트합니다.

sudo apt update

그 다음, Nikto 를 설치합니다. -y 플래그를 사용하면 설치 확인 질문에 자동으로 동의하므로 'Y'를 직접 입력할 필요가 없습니다.

sudo apt install -y nikto

설치가 완료되면 도구가 올바르게 설치되었는지 확인하는 것이 좋습니다. 버전을 체크하여 이를 확인할 수 있습니다.

nikto -Version

다음과 유사하게 Nikto 버전 번호가 표시되는 출력을 확인할 수 있습니다. 정확한 버전 숫자는 다를 수 있습니다.

---------------------------------------------------------------------------
- Nikto v2.5.0
---------------------------------------------------------------------------

Nikto 가 성공적으로 설치되었으므로, 이제 웹 서버 스캔을 진행할 준비가 되었습니다.

기본 스캔 수행

Nikto 설치를 마쳤으므로, 다음 단계는 대상 웹 서버에 대해 기본 스캔을 실행하는 것입니다. 이 실습을 위해 테스트용 웹 서버가 현재 환경에서 이미 실행 중입니다. 스캔을 시작하기 전에는 항상 대상 서버가 온라인 상태이며 접근 가능한지 확인해야 합니다.

먼저, 대상 웹 서버가 작동 중인지 확인합니다. curl 명령에 -I 플래그를 사용하여 서버로부터 HTTP 헤더 정보만 가져오겠습니다. 이번 실습의 대상 주소는 http://localhost:8000입니다.

curl -I http://localhost:8000

성공적으로 응답이 오면 HTTP/1.0 200 OK라는 문구가 포함되며, 이는 서버가 활성화되어 요청을 받을 준비가 되었음을 의미합니다.

HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/3.10.12
Date: ...
Content-type: text/html
Content-Length: 71

이제 첫 번째 Nikto 스캔을 실행합니다. -h(또는 -host) 플래그를 사용하여 대상을 지정합니다.

nikto -h http://localhost:8000

Nikto 가 대상을 스캔하기 시작합니다. 다양한 테스트를 수행함에 따라 터미널에 실시간 출력이 나타납니다. 스캔은 대상에 대한 정보로 시작하여 발견된 잠재적 취약점 목록을 나열합니다.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ 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

기본적인 웹 서버 스캔을 완료했습니다. 다음 단계에서는 나중에 분석할 수 있도록 이 결과들을 저장하는 방법을 배웁니다.

스캔 결과를 파일로 저장

스캔을 실행하고 터미널에서 결과를 바로 확인하는 것도 빠른 점검에는 유용하지만, 전문적인 보안 평가를 위해서는 결과를 반드시 저장해야 합니다. 저장된 보고서는 발견된 내용에 대한 기록이 되며, 문제 해결을 위해 다른 사람과 공유할 수도 있습니다.

Nikto 는 다양한 형식으로 스캔 결과를 저장할 수 있도록 지원합니다. 이 단계에서는 보고서를 일반 텍스트 파일로 저장해 보겠습니다. -o(또는 -output) 플래그를 사용하여 출력 파일명을 지정합니다.

스캔을 다시 실행하되, 이번에는 결과를 nikto_report.txt라는 파일로 저장하도록 설정합니다.

nikto -h http://localhost:8000 -o nikto_report.txt

스캔은 이전과 동일하게 진행되지만, 이번에는 화면에 결과를 표시함과 동시에 현재 디렉토리 (/home/labex/project) 의 지정된 파일에 내용을 저장합니다.

스캔이 완료된 후, 파일 목록과 상세 정보를 보여주는 ls -l 명령을 사용하여 보고서 파일이 생성되었는지 확인합니다.

ls -l nikto_report.txt

새로 생성된 보고서 파일이 목록에 나타나야 하며, 파일 크기는 0 보다 커야 합니다.

-rw-rw-r-- 1 labex labex 1234 ... nikto_report.txt

파일 내용을 빠르게 확인하려면 head 명령을 사용하여 처음 20 줄을 출력해 볼 수 있습니다.

head -n 20 nikto_report.txt

이렇게 하면 스캔 요약과 초기 발견 사항이 포함된 보고서의 앞부분이 표시됩니다. 이제 스캔 결과에 대한 영구적인 기록을 확보했습니다.

스캔 보고서 분석

스캔 결과가 저장되었으므로, 마지막 단계는 보고서를 분석하여 식별된 취약점을 이해하는 것입니다. 여기에는 보고서를 읽고 필터링하여 가장 중요한 정보를 골라내는 작업이 포함됩니다.

먼저, cat 명령을 사용하여 보고서 전체 내용을 확인할 수 있습니다. 이는 Nikto 가 수집한 모든 정보의 전체적인 개요를 파악하는 데 유용합니다.

cat nikto_report.txt

전체 보고서는 내용이 길 수 있으므로, 필요한 부분만 필터링하는 것이 더 효율적일 때가 많습니다. Nikto 는 흥미로운 발견 사항이나 잠재적 취약점을 나타내는 줄의 시작 부분에 + 기호를 사용합니다. grep 명령을 사용하면 이 기호가 포함된 줄만 표시할 수 있습니다.

grep '+' nikto_report.txt

이 명령은 보고서를 필터링하여 Nikto 가 플래그를 지정한 모든 항목을 간결한 목록으로 보여줍니다.

+ Target Host: localhost
+ Target Port: 8000
+ GET /: The anti-clickjacking X-Frame-Options header is not present.
+ HEAD /: SimpleHTTP/0.6 appears to be outdated (current is at least 1.2)

이러한 발견 사항을 검토할 때는 설정 오류 (보안 헤더 누락 등) 나 민감한 파일의 존재를 나타내는 설명에 주의를 기울이십시오. 각 발견 사항은 추가 조사를 위한 시작점이 됩니다.

요약

이 실습에서는 Nikto 를 성공적으로 설치하고 대상 웹 서버에 대한 취약점 스캔을 수행했습니다. 스캔을 실행하고, 발견된 내용을 보고서 파일로 저장하며, 결과를 분석하여 잠재적인 보안 문제를 식별하는 방법을 배웠습니다. 보안 도구 설치, 스캔 실행, 보고서 해석과 같은 이러한 기초 기술은 사이버 보안 및 모의 해킹 분야를 시작하는 모든 이들에게 필수적인 역량입니다.