Gobuster 출력 상세 수준 제어

Beginner
지금 연습하기

소개

Gobuster 는 디렉토리 및 파일 무차별 대입 (brute-forcing), DNS 서브도메인 무차별 대입, S3 버킷 열거에 사용되는 강력한 도구입니다. 스캔을 수행할 때 터미널에 표시되는 정보의 양은 크게 달라질 수 있습니다. 이러한 출력 상세 수준 (verbosity) 을 제어하는 방법을 이해하는 것은 효율적인 분석과 불필요한 데이터로 터미널이 과부하되는 것을 방지하는 데 중요합니다.

이 랩에서는 Gobuster 의 출력 상세 수준을 관리하는 방법을 배우게 됩니다. 기본 설정을 사용하여 스캔을 수행한 다음, 출력을 최소화하기 위해 조용한 모드 (-q) 를 탐색하고, 마지막으로 세부 정보를 최대화하기 위해 상세 모드 (-v) 를 사용합니다. 이러한 다양한 수준을 비교함으로써 빠른 확인부터 심층적인 조사에 이르기까지 다양한 시나리오에 맞게 Gobuster 의 출력을 조정하는 실질적인 경험을 쌓게 될 것입니다.

표준 스캔 실행 및 기본 출력 관찰

이 단계에서는 특정 상세 수준 플래그 없이 표준 Gobuster 스캔을 수행합니다. 이를 통해 Gobuster 의 기본 출력 동작을 관찰할 수 있으며, 일반적으로 발견된 디렉토리와 파일을 발견되는 대로 표시합니다.

먼저 홈 디렉토리의 project 폴더에 있는지 확인합니다.

cd ~/project

이제 Gobuster 명령을 실행합니다. 이 랩에서는 외부 웹사이트 스캔을 피하기 위해 로컬 대상을 사용할 것입니다. 시연 목적으로 대상으로는 http://localhost를 사용하고 작은 단어 목록 (wordlist) 을 사용합니다.

gobuster dir -u http://localhost -w /usr/share/wordlists/dirb/common.txt -x php,html,txt -z

명령을 자세히 살펴보겠습니다.

  • gobuster dir: 디렉토리/파일 무차별 대입 스캔을 수행하고 있음을 지정합니다.
  • -u http://localhost: 대상 URL 을 http://localhost로 설정합니다.
  • -w /usr/share/wordlists/dirb/common.txt: 열거에 사용할 단어 목록을 지정합니다. 이 단어 목록에는 일반적인 디렉토리 및 파일 이름이 포함되어 있습니다.
  • -x php,html,txt: 찾을 파일 확장자를 지정합니다.
  • -z: 상태 표시줄을 숨깁니다. 이 상태 표시줄은 때때로 비교를 위해 깨끗한 출력을 캡처하는 데 방해가 될 수 있습니다.

터미널에서 출력을 관찰합니다. 발견된 디렉토리와 파일, 그리고 해당 HTTP 상태 코드를 나타내는 줄이 표시되어야 합니다.

===============================================================
Gobuster v3.1.0
by OJ <ojob.dev>
===============================================================
[+] Url: http://localhost
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/common.txt
[+] Extensions: php, html, txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.1.0
[+] Timeout: 10s
===============================================================
2024/07/29 08:00:00 Starting gobuster in directory enumeration mode
/index.html (Status: 200)
/server-status (Status: 403)
/manual (Status: 301)
/icons (Status: 301)
/phpmyadmin (Status: 301)
/test.php (Status: 200)
/info.php (Status: 200)
/robots.txt (Status: 200)
/license.txt (Status: 200)
/README.txt (Status: 200)
===============================================================
2024/07/29 08:00:00 Finished
===============================================================

이것이 기본 출력이며, 정보와 간결성 사이의 균형을 제공합니다.

-q 플래그를 사용하여 조용한 모드에서 스캔 다시 실행

이 단계에서는 조용한 모드를 사용하여 Gobuster 스캔을 다시 실행합니다. -q 플래그는 대부분의 출력을 억제하고 필수적인 결과만 표시합니다. 이 모드는 상세한 정보에 방해받지 않고 특정 리소스를 빠르게 확인하려는 경우 또는 출력을 다른 도구로 파이프할 때 유용합니다.

이전과 동일한 Gobuster 명령을 실행하지만 이번에는 -q 플래그를 추가합니다.

gobuster dir -u http://localhost -w /usr/share/wordlists/dirb/common.txt -x php,html,txt -z -q

출력을 관찰합니다. 초기 배너, 통계 및 진행률 업데이트가 더 이상 표시되지 않는다는 점에 주목해야 합니다. 발견된 디렉토리와 파일만 콘솔에 출력됩니다.

/index.html (Status: 200)
/server-status (Status: 403)
/manual (Status: 301)
/icons (Status: 301)
/phpmyadmin (Status: 301)
/test.php (Status: 200)
/info.php (Status: 200)
/robots.txt (Status: 200)
/license.txt (Status: 200)
/README.txt (Status: 200)

이 조용한 출력은 스크립팅에 이상적이거나 발견된 경로에만 관심이 있을 때 적합합니다.

-v 플래그를 사용하여 상세 모드로 스캔 다시 실행

이 단계에서는 상세 모드를 사용하여 Gobuster 스캔을 다시 실행합니다. -v 플래그는 수행된 모든 요청과 해당 응답 상태를 포함하여 스캔 프로세스에 대한 더 자세한 정보를 제공합니다. 이 모드는 디버깅 시 또는 특정 경로가 발견되지 않는 이유나 예상치 못한 응답을 반환하는 이유를 이해해야 할 때 특히 유용합니다.

이전과 동일한 Gobuster 명령을 실행하지만 이번에는 -v 플래그를 추가합니다.

gobuster dir -u http://localhost -w /usr/share/wordlists/dirb/common.txt -x php,html,txt -z -v

출력을 관찰합니다. 표시되는 정보의 양이 상당히 증가했음을 알 수 있습니다. 단어 목록의 각 단어에 대해 Gobuster 는 존재하지 않거나 오류를 반환하는 경로에 대해서도 테스트 중인 URL 과 수신된 HTTP 상태 코드를 표시합니다.

===============================================================
Gobuster v3.1.0
by OJ <ojob.dev>
===============================================================
[+] Url: http://localhost
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/common.txt
[+] Extensions: php, html, txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.1.0
[+] Timeout: 10s
===============================================================
2024/07/29 08:00:00 Starting gobuster in directory enumeration mode
Testing url: http://localhost/index.html (Status: 200)
Testing url: http://localhost/server-status (Status: 403)
Testing url: http://localhost/manual (Status: 301)
Testing url: http://localhost/icons (Status: 301)
Testing url: http://localhost/phpmyadmin (Status: 301)
Testing url: http://localhost/test.php (Status: 200)
Testing url: http://localhost/info.php (Status: 200)
Testing url: http://localhost/robots.txt (Status: 200)
Testing url: http://localhost/license.txt (Status: 200)
Testing url: http://localhost/README.txt (Status: 200)
Testing url: http://localhost/admin (Status: 404)
Testing url: http://localhost/login (Status: 404)
... (테스트된 각 경로에 대한 더 많은 줄)
===============================================================
2024/07/29 08:00:00 Finished
===============================================================

이 상세한 출력은 스캔 프로세스에 대한 완전한 추적을 제공하며, 이는 문제 해결 또는 심층 분석에 매우 유용할 수 있습니다.

세 가지 출력 상세 수준 비교

이 단계에서는 수행한 세 가지 Gobuster 스캔 (기본, 조용한 모드 (-q), 상세 모드 (-v)) 의 출력을 비교합니다. 각 출력의 차이점을 이해하면 다양한 상황에 가장 적합한 출력 수준을 선택하는 데 도움이 됩니다.

각 출력의 특징을 다시 살펴보겠습니다.

  • 기본 출력: 요약 배너, 진행률 업데이트 ( -z가 사용되지 않은 경우) 를 제공하며 발견된 디렉토리/파일만 상태 코드와 함께 나열합니다. 일반적인 사용에 적합한 균형을 제공합니다.
  • 조용한 모드 출력 (-q): 필수적이지 않은 모든 정보를 억제하고 발견된 디렉토리/파일만 표시합니다. 이는 특히 다른 도구로 파이프하거나 결과만 필요한 경우 깨끗하고 파싱 가능한 출력을 얻는 데 유용합니다.
  • 상세 모드 출력 (-v): "발견된" 경로인지 오류인지에 관계없이 테스트된 모든 URL 과 해당 응답 상태를 포함한 광범위한 세부 정보를 표시합니다. 이는 디버깅, 네트워크 상호 작용 이해 또는 스캔의 전체 감사 추적이 필요할 때 매우 유용합니다.

다음 시나리오와 각 출력 수준이 어떻게 가장 적합할 수 있는지 고려해 보세요.

  • 일반적인 경로에 대한 빠른 확인: 조용한 모드 (-q) 가 효율적입니다.
  • 일반적인 정찰: 기본 출력이 충분한 컨텍스트를 제공합니다.
  • 예상 경로를 찾지 못하는 스캔 문제 해결: 상세 모드 (-v) 는 요청이 실패하는 이유나 수신되는 응답을 파악하는 데 도움이 됩니다.
  • 자동 처리를 위해 Gobuster 를 스크립트에 통합: 조용한 모드 (-q) 는 파싱하기 쉬운 깨끗한 출력을 보장합니다.

이전 단계에서 관찰한 터미널 출력을 비교하면 각 플래그가 상세도를 어떻게 변경하는지 명확하게 확인할 수 있습니다.

다양한 시나리오에 적합한 상세 수준 선택

이 마지막 단계에서는 각 Gobuster 출력 상세 수준을 언제 사용해야 하는지에 대한 이해를 확고히 할 것입니다. 상세 수준의 선택은 목표와 침투 테스트 또는 보안 평가의 맥락에 크게 좌우됩니다.

각 모드를 사용해야 하는 경우에 대한 요약은 다음과 같습니다.

  • 기본 모드 (플래그 없음):

    • 사용 시기: 일반 목적 스캔, 초기 정찰 또는 스캔 진행 상황과 결과를 균형 있게 보아야 할 때 사용합니다. 가장 일반적인 시작점입니다.
    • 예시: 새로운 대상을 탐색 중이며 너무 많은 노이즈 없이 일반적인 디렉토리가 무엇인지 빠르게 확인하고 싶을 때.
  • 조용한 모드 (-q):

    • 사용 시기: 성공적인 결과에만 관심이 있고 다른 모든 정보 메시지, 배너 및 오류를 억제하고 싶을 때 사용합니다. 스크립팅, 다른 도구 (예: grep 또는 awk) 로 출력을 파이프하거나, 여러 스캔을 병렬로 실행하고 터미널 혼잡을 최소화하고 싶을 때 이상적입니다.
    • 예시: 디렉토리 열거를 자동화하는 스크립트를 작성 중이며, 발견된 URL 을 추가 분석을 위해 다른 도구로 직접 전달하고 싶을 때.
  • 상세 모드 (-v):

    • 사용 시기: 디버깅, 문제 해결 또는 모든 요청 및 응답에 대한 자세한 이해가 필요할 때 사용합니다. 이 모드는 404 또는 기타 오류로 이어지는 모든 시도를 포함하여 표시하므로 미묘한 문제를 식별하거나 서버 동작을 이해하는 데 중요할 수 있습니다.
    • 예시: Gobuster 스캔에서 예상되는 디렉토리를 찾지 못하고 네트워크 문제, 요청을 차단하는 WAF 또는 비정상적인 서버 응답을 의심할 때. 상세 모드 출력은 각 요청에 대해 정확히 어떤 일이 발생하는지 보여줍니다.

이러한 상세 옵션을 숙달하면 Gobuster 스캔을 더 효율적으로 만들고 특정 요구 사항에 맞게 조정하여 시간을 절약하고 분석 기능을 향상시킬 수 있습니다.

요약

이 실습에서는 Gobuster 의 출력 상세 수준을 제어하는 방법을 성공적으로 학습했습니다. 열거 프로세스에 대한 균형 잡힌 보기를 제공하는 기본 출력을 관찰하기 위해 표준 스캔을 수행하는 것으로 시작했습니다. 그런 다음 -q 플래그를 사용하여 조용한 모드를 탐색했으며, 이는 출력을 최소화하여 발견된 경로만 표시하므로 스크립팅 및 깨끗한 결과에 이상적입니다. 마지막으로 -v 플래그를 사용하여 상세 모드를 활용하여 모든 요청 및 응답에 대한 자세한 통찰력을 얻었으며, 이는 디버깅 및 심층 분석에 매우 유용합니다.

이러한 다양한 상세 수준을 이해하고 적용함으로써 빠른 확인부터 상세한 문제 해결에 이르기까지 다양한 시나리오에 맞게 Gobuster 의 출력을 효과적으로 조정하여 디렉토리 및 파일 열거 작업의 효율성을 높일 수 있습니다.