Nikto 에서 튜닝 옵션으로 스캔 동작 제어하기

PythonBeginner
지금 연습하기

소개

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

기본 스캔은 철저하지만 시간이 오래 걸리고 많은 출력을 생성할 수 있습니다. 더 표적화된 평가를 위해 Nikto 는 -Tuning 옵션을 제공합니다. 이 기능을 사용하면 실행할 테스트 유형을 지정하여 스캔을 더 빠르고 집중적으로 만들 수 있습니다.

이 랩에서는 -Tuning 옵션을 사용하여 Nikto 의 스캔 동작을 제어하는 방법을 배웁니다. 특정 취약점을 찾기 위해 다양한 튜닝 레벨로 스캔을 실행하고 결과를 비교하는 연습을 할 것입니다.

-Tuning 옵션의 목적 이해하기

이 단계에서는 -Tuning 옵션과 이 옵션이 제어할 수 있는 다양한 테스트 범주에 대해 알아봅니다. -Tuning 옵션은 스캔을 특정 관심 영역에 집중시켜 시간을 절약하고 출력의 노이즈를 줄이는 데 도움이 됩니다.

Nikto 는 테스트를 여러 유형으로 분류합니다. 특정 범주를 선택하기 위해 숫자나 문자를 사용할 수 있습니다. 사용 가능한 주요 튜닝 옵션을 살펴보겠습니다. 도움말 정보를 보면 이러한 옵션을 볼 수 있습니다.

Nikto 의 도움말 메뉴를 표시하려면 다음 명령을 실행하십시오.

nikto -h

출력을 스크롤하여 -Tuning 섹션을 찾으십시오. 다음과 유사하게 표시될 것입니다.

   -Tuning
       Tuning options control the test that Nikto will use against a target.
       By default, Nikto runs the default set of tests. The tuning options
       are a bitwise value, so they can be combined (e.g. -Tuning 12).
       The options are:
           0 - File Upload
           1 - Interesting File / Seen in logs
           2 - Misconfiguration / Default File
           3 - Information Disclosure
           4 - Injection (XSS/Script/HTML)
           5 - Remote File Retrieval - Inside Web Root
           6 - Denial of Service
           7 - Remote File Retrieval - Server Wide
           8 - Command Execution / Remote Shell
           9 - SQL Injection
           a - Authentication Bypass
           b - Software Identification
           c - Remote Source Inclusion
           x - Reverse Tuning Options (i.e., include all except specified)

보시다시피 각 숫자는 특정 테스트 범주에 해당합니다. 예를 들어, 1은 "Interesting File"이고 2는 "Misconfiguration"입니다. x 옵션은 특별하며, 논리를 반전시켜 지정된 테스트를 제외한 모든 테스트를 실행하도록 Nikto 에 지시합니다.

Interesting Files 를 위한 -Tuning 1 으로 스캔 실행하기

이 단계에서는 "Interesting Files"만 검색하는 집중 스캔을 수행합니다. 이 유형의 스캔은 웹 애플리케이션에서 직접 연결되지 않았지만 백업 파일, 구성 파일 또는 로그와 같이 민감한 정보를 포함할 수 있는 파일을 찾습니다. 저희 설정 스크립트는 이 목적을 위해 config.bak 파일을 생성했습니다.

-Tuning 1 옵션을 사용하여 Nikto 가 "Interesting File / Seen in logs" 범주의 테스트만 실행하도록 지시할 것입니다. 웹 서버는 포트 8000127.0.0.1에서 실행 중입니다.

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

nikto -h http://127.0.0.1:8000 -Tuning 1

스캔이 완료되면 다음과 유사한 출력이 표시됩니다. Nikto 가 config.bak 파일을 찾았음을 주목하십시오.

- 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
+ /config.bak: A backup file was found.
+ 1 host(s) tested

이는 시간이 많이 소요되는 전체 스캔을 실행하지 않고도 잠재적으로 민감한 파일을 신속하게 찾는 방법을 보여줍니다.

Misconfiguration 을 위한 -Tuning 2 로 스캔 실행하기

이 단계에서는 일반적인 서버 설정 오류 및 기본 파일에 대해 스캔하기 위해 -Tuning 2 옵션을 사용합니다. 일반적인 설정 오류 중 하나는 디렉토리 인덱싱을 허용하는 것으로, 인덱스 파일 (index.html 등) 이 없는 경우 디렉토리의 내용을 나열합니다. 우리가 사용하고 있는 간단한 Python 서버는 이러한 동작을 합니다.

설정 오류에만 집중된 스캔을 실행해 보겠습니다.

이 명령을 실행하십시오.

nikto -h http://127.0.0.1:8000 -Tuning 2

출력에는 설정 오류와 관련된 결과가 표시됩니다. 디렉토리 인덱싱이 활성화되었음을 나타내는 메시지가 표시되어야 합니다.

- 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
+ /: Directory indexing is enabled.
+ 1 host(s) tested

이 스캔에서는 테스트를 "Misconfiguration" 범주로 제한했기 때문에 config.bak 파일이 보고되지 않았음을 참고하십시오.

Inverse Tuning 스캔을 수행하기 위해 -Tuning x 사용하기

이 단계에서는 inverse tuning 을 사용하는 방법을 배웁니다. 때로는 광범위한 스캔을 실행하고 싶지만 관련이 없거나 너무 시끄럽다고 생각되는 특정 테스트 범주를 제외하고 싶을 수 있습니다. -Tuningx 옵션을 사용하면 이를 수행할 수 있습니다.

예를 들어, "Interesting File" 검사를 제외한 모든 테스트를 실행한다고 가정해 보겠습니다. x1을 결합하여 이를 달성할 수 있습니다.

"Interesting File" 테스트를 제외하는 inverse 스캔을 수행하려면 다음 명령을 실행하십시오.

nikto -h http://127.0.0.1:8000 -Tuning x1

출력을 관찰하십시오. 디렉토리 인덱싱 설정 오류와 같은 다양한 결과를 볼 수 있지만 config.bak 파일은 보고되지 않습니다.

- 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.
+ /: Directory indexing is enabled.
...
+ 1 host(s) tested

Inverse tuning 은 현재 평가에 필요하지 않은 특정 검사를 제거하여 스캔을 사용자 정의하는 강력한 방법입니다.

다양한 튜닝 레벨의 출력 비교하기

이 마지막 실습 단계에서는 여러 튜닝 옵션을 결합하여 더 포괄적이면서도 사용자 정의된 스캔을 생성합니다. -Tuning 옵션은 지정된 모든 범주의 테스트를 실행하기 위해 여러 값을 허용합니다.

"Interesting Files" (1) 및 "Misconfigurations" (2) 검색을 결합한 스캔을 실행해 보겠습니다.

다음 명령을 실행하십시오.

nikto -h http://127.0.0.1:8000 -Tuning 12

이제 출력을 살펴보십시오. Nikto 가 두 범주 모두에서 결과를 보고하는 것을 볼 수 있습니다. config.bak 파일과 디렉토리 인덱싱 문제를 모두 찾을 것입니다.

- 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
+ /: Directory indexing is enabled.
+ /config.bak: A backup file was found.
+ 1 host(s) tested

이 스캔의 결과를 이전 스캔과 비교함으로써, -Tuning 옵션을 통해 보안 평가 범위를 정확하게 제어할 수 있다는 것을 명확하게 알 수 있습니다. 옵션을 혼합하고 일치시켜 필요한 정확한 스캔을 구축할 수 있습니다.

요약

이 실습에서는 -Tuning 옵션을 사용하여 Nikto 의 스캔 동작을 효과적으로 제어하는 방법을 배웠습니다. 이 강력한 기능은 효율적이고 집중적인 웹 보안 평가를 수행하는 데 필수적입니다.

다음 내용을 실습했습니다.

  • Nikto 에서 사용 가능한 다양한 테스트 범주 이해하기.
  • -Tuning 1을 사용하여 "Interesting Files"에 대한 집중 스캔 실행하기.
  • -Tuning 2를 사용하여 "Misconfigurations" 스캔하기.
  • 특정 테스트를 제외하기 위해 inverse 스캔 수행하기 (-Tuning x).
  • 여러 튜닝 옵션을 결합하여 사용자 정의 스캔 프로필 생성하기.

-Tuning 옵션을 숙달함으로써 Nikto 워크플로우를 크게 개선할 수 있으며, 특정 유형의 취약점에 빠르게 집중하고 스캔 결과 분석에 소요되는 시간을 줄일 수 있습니다.