표준 Nikto 스캔 결과 해석

Kali LinuxBeginner
지금 연습하기

소개

Nikto 는 인기 있는 오픈 소스 웹 서버 스캐너로, 6,700 개 이상의 잠재적으로 위험한 파일/프로그램, 1,250 개 이상의 서버에 대한 최신 버전 확인, 270 개 이상의 서버에 대한 버전별 문제 등 다양한 항목에 대해 웹 서버를 포괄적으로 테스트합니다.

Nikto 스캔 결과를 읽고 해석하는 방법을 이해하는 것은 침투 테스터부터 시스템 관리자에 이르기까지 사이버 보안 분야의 모든 사람에게 기본적인 기술입니다. 처음에는 출력이 암호처럼 보일 수 있지만, 웹 서버의 구성 및 잠재적인 보안 취약점에 대한 귀중한 통찰력을 제공하도록 구조화되어 있습니다.

이 랩에서는 표준 Nikto 스캔 보고서를 분석하는 방법을 배우게 됩니다. 시간을 절약하고 해석에 집중하기 위해 미리 생성된 스캔 결과 파일이 제공되었습니다. 이 파일을 분석하여 대상 정보 식별, 결과 구분, 취약점 참조 이해, 최종 요약 검토를 수행합니다.

대상 정보 요약 섹션 찾기

이 단계에서는 Nikto 보고서의 시작 부분을 검사하여 스캔된 대상에 대한 기본 정보를 식별합니다. 이 섹션은 무엇이 테스트되었고 감지된 기본 서버 소프트웨어를 확인하므로 중요합니다.

~/project 디렉터리에 nikto_scan_results.txt라는 샘플 보고서 파일이 생성되었습니다. cat 명령을 사용하여 터미널에 해당 내용을 표시합니다.

cat ~/project/nikto_scan_results.txt

출력의 처음 몇 줄을 살펴보세요. 이 초기 블록은 대상에 대한 요약을 제공합니다.

- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          172.17.0.2
+ Target Hostname:    labex-server
+ Target Port:        80
+ Start Time:         2023-10-27 10:30:00 (GMT0)
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)

이 줄들의 의미는 다음과 같습니다.

  • Target IP: 스캔된 서버의 IP 주소입니다.
  • Target Hostname: 서버의 호스트 이름입니다.
  • Target Port: 웹 서비스가 실행 중인 TCP 포트입니다 (일반적으로 HTTP 의 경우 80, HTTPS 의 경우 443).
  • Server: HTTP Server 헤더에 보고된 서버 소프트웨어 및 버전입니다. 이 경우 Ubuntu 에서 실행되는 Apache 버전 2.4.52 입니다.

정보성 결과 및 OSVDB 참조 식별

이 단계에서는 + 기호로 표시되는 정보성 결과를 식별하는 방법을 배웁니다. 이는 항상 직접적인 취약점은 아니지만 서버 구성에 대한 유용한 컨텍스트를 제공합니다.

Nikto 의 많은 결과는 OSVDB(Open Source Vulnerability Database) ID 와 연결되어 있습니다. OSVDB 프로젝트는 더 이상 활성화되지 않았지만, 이러한 ID 는 특정 문제에 대한 기록 참조 및 세부 정보 검색에 여전히 유용할 수 있습니다.

grep 명령을 사용하여 보고서를 필터링하고 결과 (finding) 를 나타내는 줄만 표시해 보겠습니다. Nikto 의 출력에서 이러한 줄은 +로 시작합니다.

grep "^\+" ~/project/nikto_scan_results.txt

스캔의 모든 결과 목록이 표시됩니다.

+ Target IP:          172.17.0.2
+ Target Hostname:    labex-server
+ Target Port:        80
+ Start Time:         2023-10-27 10:30:00 (GMT0)
+ Server: Apache/2.4.52 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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.
+ Uncommon header 'x-powered-by' found, with contents: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD, POST, OPTIONS
+ OSVDB-3233: /icons/README: The Apache web server is configured to return a valid response to a request for /icons/README.
+ /index.php: PHP is installed.
+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...
+ 8123 requests: 0 error(s) and 11 item(s) reported on remote host
+ End Time:           2023-10-27 10:38:20 (GMT0) (500 seconds)
+ 1 host(s) tested

+ OSVDB-3233: /icons/README: ... 줄에 주목하세요. 이는 Apache 서버에서 흔히 볼 수 있는 /icons/ 디렉터리의 공개적으로 액세스 가능한 README 파일과 관련된 정보성 결과 (ID 3233) 를 나타냅니다.

저위험 및 고위험 취약점 구분

이 단계에서는 저위험 결과를 나타내는 것과 더 우려되는 사항일 수 있는 결과를 구별하는 방법을 배웁니다. Nikto 는 심각도 수준을 할당하지 않습니다. 분석가인 귀하가 컨텍스트에 따라 결과를 해석해야 합니다.

저위험 결과는 일반적으로 구현되지 않은 보안 모범 사례와 관련이 있습니다. 예를 들어:
+ The anti-clickjacking X-Frame-Options header is not present.
이것은 누락된 보안 헤더입니다. 이를 갖는 것이 좋은 관행이지만, 단순히 누락되었다고 해서 직접적인 침해가 발생하는 경우는 드뭅니다.

고위험 결과는 종종 정보 공개 또는 악용될 수 있는 잘못된 구성을 가리킵니다. 예를 들어:
+ /admin/: Directory indexing found.
이것은 더 심각합니다. 디렉터리 인덱싱을 통해 공격자는 /admin/ 디렉터리의 모든 파일과 하위 디렉터리를 볼 수 있으며, 잠재적으로 민감한 파일, 애플리케이션 구조 또는 백업 파일을 노출할 수 있습니다.

grep을 사용하여 보고서에서 이 고위험 결과를 분리해 보겠습니다.

grep "Directory indexing" ~/project/nikto_scan_results.txt

이 명령은 디렉터리 인덱싱이 발견된 모든 인스턴스를 보여줍니다.

+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.

이러한 결과를 보면 분석가는 민감한 정보가 노출되었는지 여부를 결정하기 위해 즉시 이러한 디렉터리를 조사해야 합니다.

CGI 디렉터리 결과의 의미 이해

이 단계에서는 CGI 디렉터리와 관련된 결과에 초점을 맞춥니다. CGI(Common Gateway Interface) 는 웹 서버가 스크립트와 같은 외부 프로그램을 실행할 수 있도록 하는 표준 프로토콜입니다. 이러한 디렉터리는 종종 취약점이 있을 수 있는 실행 파일을 포함하고 있기 때문에 공격자의 일반적인 대상입니다.

Nikto 는 /cgi-bin/과 같은 일반적인 CGI 디렉터리를 구체적으로 확인합니다. 이러한 디렉터리와 그 안의 스크립트를 찾는 것은 중요한 이벤트입니다.

grep을 사용하여 보고서에서 /cgi-bin/을 언급하는 모든 줄을 찾아보겠습니다.

grep "/cgi-bin/" ~/project/nikto_scan_results.txt

출력은 이 디렉터리와 관련된 두 가지 결과를 보여줍니다.

+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...

첫 번째 줄은 /cgi-bin/ 디렉터리 자체에 디렉터리 인덱싱이 활성화되어 있음을 확인하며, 이는 이전 단계에서 논의된 고위험 결과입니다. 두 번째 줄은 Nikto 가 test.cgi 스크립트를 찾았음을 나타냅니다. 테스트 스크립트는 종종 개발자가 남겨두며 때로는 취약점이 있거나 서버 환경에 대한 정보를 공개할 수 있습니다. 분석가는 이를 수동 조사를 위해 플래그 지정할 것입니다.

스캔 종료 요약 통계 검토

이 마지막 단계에서는 Nikto 보고서 끝에 있는 요약 섹션을 검토합니다. 이 섹션은 스캔 실행 및 범위에 대한 빠른 개요를 제공합니다.

파일의 마지막 몇 줄을 쉽게 보려면 tail 명령을 사용할 수 있습니다. 보고서의 마지막 10 줄을 보겠습니다.

tail -n 10 ~/project/nikto_scan_results.txt

이렇게 하면 요약 통계가 포함된 보고서 끝이 표시됩니다.

+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...
+ 8123 requests: 0 error(s) and 11 item(s) reported on remote host
+ End Time:           2023-10-27 10:38:20 (GMT0) (500 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

주요 요약 줄에 대한 설명은 다음과 같습니다.

  • 8123 requests: 0 error(s) and 11 item(s) reported...: Nikto 가 서버에 8,123 개의 HTTP 요청을 보냈고 오류는 없었으며 11 개의 관심 항목을 발견했음을 나타냅니다.
  • End Time: 스캔이 완료된 타임스탬프와 총 지속 시간을 보여줍니다.
  • 1 host(s) tested: 스캔이 단일 대상에 대해 실행되었음을 확인합니다.

이 요약은 스캔의 규모를 이해하고 결과에 대한 높은 수준의 개수를 파악하는 데 유용합니다.

요약

이 실습에서는 표준 Nikto 스캔 보고서를 해석하는 데 필수적인 기술을 배웠습니다. 기본 대상 정보부터 시작하여 더 자세한 결과로 이동하는 체계적인 접근 방식을 연습했습니다.

다음과 같은 내용을 배웠습니다.

  • 대상 서버의 IP, 포트 및 소프트웨어 배너 식별.
  • 정보성 결과 및 OSVDB 참조의 중요성 인식.
  • 저위험 결과 (누락된 헤더 등) 와 고위험 결과 (디렉터리 인덱싱 등) 구분.
  • CGI 디렉터리 발견의 중요성 이해.
  • 스캔 종료 요약을 검토하여 전반적인 개요 파악.

이러한 구조화된 분석 과정은 원시 스캐너 출력을 웹 애플리케이션 보안을 위한 실행 가능한 정보로 전환하는 데 핵심입니다.