Nikto 스캔에서 특정 플러그인 제외하기

Kali LinuxBeginner
지금 연습하기

소개

Nikto 는 인기 있는 오픈 소스 웹 서버 스캐너로, 6,700 개 이상의 잠재적으로 위험한 파일/프로그램, 1,250 개 이상의 서버에 대한 최신 버전 확인, 270 개 이상의 서버에 대한 버전별 문제 등 다양한 항목에 대해 웹 서버를 포괄적으로 테스트합니다. 하지만 때로는 전체 스캔이 너무 "시끄럽거나" 오탐 (false positives) 을 생성할 수 있습니다. 이 실험실에서는 특정 플러그인을 제외하여 Nikto 스캔을 개선하는 방법을 배우고, 결과를 더 집중적이고 실행 가능하게 만들 것입니다.

전체 스캔에서 시끄럽거나 원치 않는 플러그인 식별

이 단계에서는 테스트 웹 서버에 대해 기본적인 Nikto 스캔을 수행합니다. 이 초기 스캔은 기준선 역할을 하여 기본 플러그인 세트에서 생성된 모든 결과를 볼 수 있도록 합니다. 이 전체 보고서에서 향후 스캔에서 제외하고 싶은 플러그인을 식별할 수 있습니다.

먼저 ~/project 디렉토리에 있는지 확인하십시오. 설정 스크립트가 백그라운드에서 간단한 웹 서버를 이미 시작했습니다. 이를 대상으로 표준 Nikto 스캔을 실행해 보겠습니다. -h 옵션은 대상 호스트를 지정하는 데 사용됩니다.

터미널에서 다음 명령을 실행하십시오.

nikto -h http://127.0.0.1:8000

스캔이 완료되면 보고서가 표시됩니다. 서버 버전 및 기타 세부 정보는 다를 수 있지만 출력은 이와 유사할 것입니다.

- 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.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.
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ OSVDB-3233: /cgi-bin/: This might be interesting...
+ 7558 requests: 0 error(s) and 4 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

위의 출력에서 + OSVDB-3233: /cgi-bin/: This might be interesting... 줄에 주목하십시오. 이 결과는 cgi 플러그인에 의해 생성됩니다. 이 실험실에서는 이 디렉토리가 예상된 디렉토리이고 해당 결과가 억제하고 싶은 "노이즈"라고 가정하겠습니다.

선행 하이픈과 함께 -plugins 옵션 사용

이 단계에서는 Nikto 가 실행할 플러그인을 제어하는 데 사용되는 구문에 대해 배웁니다. Nikto 는 이 목적을 위해 -plugins 옵션을 제공합니다. 플러그인을 제외하려면 이름 앞에 하이픈 (-) 을 붙여 제공합니다.

포함하거나 제외할 수 있는 플러그인을 알기 위해 -list-plugins 옵션을 사용할 수 있습니다. 이 옵션은 각 플러그인에 대한 간략한 설명과 함께 사용 가능한 모든 플러그인 목록을 출력합니다.

모든 플러그인을 나열해 보겠습니다.

nikto -list-plugins

출력은 긴 목록이 될 것입니다. 다음은 볼 수 있는 내용의 작은 샘플입니다.

- Nikto v2.5.0
---------------------------------------------------------------------------
Loaded Main Plugins:
 - apache_expect_header
   Apache Expect header XSS (CVE-2006-3918)
 - apache_users
   Checks for sensitive files in ~user directories
 - auth
   Checks for authentication problems
 - cgi
   Checks for CGI directories
 - clientaccesspolicy
   Checks for permissive Client Access Policy (Silverlight)
... (list continues) ...

이 목록에서 이전 단계에서 식별한 cgi와 같이 제외하려는 플러그인의 정확한 이름을 찾을 수 있습니다.

단일 플러그인 제외 명령 구성

이 단계에서는 배운 내용을 결합하여 단일 플러그인을 제외하는 새 스캔 명령을 구성합니다. 1 단계에서 식별한 cgi 플러그인을 대상으로 합니다.

구문은 간단합니다. 일반 스캔 명령에 -plugins 옵션을 추가하고 그 뒤에 하이픈으로 접두사가 붙은 플러그인 이름을 붙입니다.

명령 구조는 다음과 같습니다: nikto -h [target] -plugins -[plugin_to_exclude]

이 구조를 기반으로 cgi 플러그인을 제외하면서 로컬 서버를 스캔하는 명령은 다음과 같습니다.

nikto -h http://127.0.0.1:8000 -plugins -cgi

이 명령은 Nikto 에게 http://127.0.0.1:8000에서 표준 스캔을 수행하되 cgi 플러그인과 관련된 모든 검사를 건너뛰도록 지시합니다. 다음 단계에서 이 명령을 실행하고 출력의 차이를 관찰할 것입니다.

스캔 실행 및 플러그인 건너뛰기 확인

이 단계에서는 이전 단계에서 구성한 명령을 실행합니다. cgi 플러그인을 제외하고 스캔을 실행하면 보고서에 더 이상 /cgi-bin/ 디렉터리와 관련된 결과가 포함되지 않을 것으로 예상됩니다.

이제 터미널에서 명령을 실행합니다.

nikto -h http://127.0.0.1:8000 -plugins -cgi

스캔이 다시 실행되지만, 이번에는 더 적은 검사를 수행하므로 약간 더 빠를 것입니다. 출력은 다음과 같이 표시됩니다.

- 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.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.
+ 7557 requests: 0 error(s) and 3 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

이 출력을 1 단계의 출력과 비교해 보세요. + OSVDB-3233: /cgi-bin/: This might be interesting... 줄이 더 이상 없는 것을 알 수 있습니다. 이는 cgi 플러그인을 스캔에서 성공적으로 제외했음을 확인합니다.

단일 명령으로 여러 플러그인 제외

이 단계에서는 단일 스캔에서 여러 플러그인을 제외하는 방법을 배웁니다. 이는 여러 개의 노이즈가 많거나 관련 없는 플러그인을 한 번에 억제하고 싶을 때 유용합니다.

여러 플러그인을 제외하려면 -plugins 옵션 뒤에 쉼표로 구분된 플러그인 이름 목록을 제공합니다. 목록의 각 플러그인 이름 앞에는 하이픈이 붙어야 합니다.

구문은 다음과 같습니다: nikto -h [target] -plugins -[plugin1],-[plugin2],-[plugin3]

이전 명령을 확장하여 일부 상황에서 우선순위가 낮다고 간주될 수 있는 또 다른 일반적인 결과인 apache_expect_header 플러그인도 제외해 보겠습니다.

다음 명령을 구성하고 실행합니다.

nikto -h http://127.0.0.1:8000 -plugins -cgi,-apache_expect_header

이제 cgiapache_expect_header 플러그인의 검사가 건너뛰어졌으므로 출력이 더욱 간결해집니다.

- 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.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.
+ ... requests: 0 error(s) and 2 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

보시다시피 플러그인을 선택적으로 제외함으로써 Nikto 의 스캔 동작을 특정 요구 사항에 맞게 조정하여 더 깔끔하고 관련성 높은 보고서를 얻을 수 있습니다.

요약

이 실습에서는 특정 플러그인을 제외하여 Nikto 스캔을 사용자 정의하는 방법을 배웠습니다. 제외할 플러그인을 식별하기 위해 전체 기준선 스캔을 실행하는 것으로 시작했습니다. 그런 다음 -plugins 옵션과 -list-plugins 명령에 대해 배웠습니다. 마지막으로 단일 플러그인과 여러 플러그인을 모두 제외하는 명령을 구성하고 실행하는 연습을 했으며, 스캔 출력의 변경 사항을 관찰하여 결과를 확인했습니다. 이 기술은 Nikto 를 사용하여 더 효율적이고 표적화된, 노이즈가 적은 취약점 스캔을 실행하는 데 필수적입니다.