Gobuster 결과에서 특정 상태 코드 제외하기

Beginner
지금 연습하기

소개

이 랩에서는 인기 있는 디렉토리 및 파일 무차별 대입 도구인 Gobuster 를 사용하여 스캔 결과에서 특정 HTTP 상태 코드를 제외하는 방법을 배우게 됩니다. 웹 열거를 수행할 때 "찾을 수 없음"(404) 또는 기타 관련 없는 응답이 많이 발생하여 출력이 복잡해지는 경우가 많습니다. 이를 필터링하면 더 의미 있는 결과에 집중할 수 있어 정찰 노력을 보다 효율적이고 목표 지향적으로 만들 수 있습니다. 이 랩에서는 노이즈가 많은 상태 코드를 식별하고, 기준선 스캔을 실행한 다음, Gobuster 의 -b 플래그를 사용하여 제외 필터를 적용하는 과정을 안내합니다.

무시할 노이즈 상태 코드 식별 (예: 404)

이 단계에서는 Gobuster 스캔 중에 특정 HTTP 상태 코드를 식별하고 제외하는 것이 왜 중요한지 이해하게 됩니다. Gobuster 가 존재하지 않는 경로에 액세스하려고 시도할 때 웹 서버는 일반적으로 "404 Not Found" 상태 코드로 응답합니다. 이러한 404 응답은 스캔 출력을 범람시켜 실제 결과를 파악하기 어렵게 만들 수 있습니다. 3xx 리디렉션 또는 5xx 서버 오류와 같은 다른 상태 코드도 특정 정찰 목표에 따라 "노이즈"로 간주될 수 있습니다.

이를 설명하기 위해 먼저 로컬 웹 서버에 간단한 curl 명령을 실행하여 존재하지 않는 경로에 어떻게 응답하는지 살펴보겠습니다.

터미널을 열고 다음 명령을 실행합니다.

curl -I http://localhost:8000/nonexistent_page

다음과 유사한 출력이 표시되며 404 Not Found 상태를 나타냅니다.

HTTP/1.0 404 Not Found
Server: SimpleHTTP/0.6
Date: ...
Content-type: text/html
Content-Length: ...

404 Not Found는 일반적인 "노이즈" 응답입니다. 다음 단계에서는 Gobuster 에게 이러한 응답을 무시하도록 지시하는 방법을 배우게 됩니다.

필터링 없이 스캔 실행

이 단계에서는 상태 코드 필터링 없이 기본 Gobuster 스캔을 수행합니다. 이는 출력에서 얼마나 많은 노이즈 (예: 404 응답) 가 생성될 수 있는지 보여주는 기준선 역할을 할 것입니다. Gobuster 의 dir 모드를 사용하여 로컬 웹 서버에서 디렉토리 및 파일을 열거합니다.

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

gobuster dir -u http://localhost:8000 -w ~/project/wordlist.txt

명령을 분석해 보겠습니다.

  • gobuster dir: 디렉토리/파일 열거 모드를 사용하려는 것을 지정합니다.
  • -u http://localhost:8000: 대상 URL 을 로컬 웹 서버로 설정합니다.
  • -w ~/project/wordlist.txt: 무차별 대입에 사용할 단어 목록 파일 (wordlist file) 을 지정합니다.

출력을 관찰합니다. Gobuster 가 서버에 존재하지 않는 경로에 액세스하려고 시도했음을 나타내는 (Status: 404) 옆에 많은 항목이 표시될 것입니다.

...
/nonexistent_page       (Status: 404)
/admin                  (Status: 404)
/test                   (Status: 404)
/existing_dir           (Status: 200)
/another_file.txt       (Status: 200)
/redirect_me            (Status: 302)
/forbidden_area         (Status: 403)
/server_error           (Status: 500)
...

보시다시피 출력은 404 응답으로 인해 복잡해져 실제 존재하는 리소스를 식별하기가 더 어려워집니다.

404 Not Found 제외를 위해 -b 플래그 사용

이 단계에서는 Gobuster 의 -b (또는 --exclude-length) 플래그를 사용하여 결과에서 특정 HTTP 상태 코드를 제외하는 방법을 배우게 됩니다. 이는 관련 없는 응답을 필터링하고 중요한 것에 집중하는 데 중요합니다. 가장 일반적인 노이즈 응답인 404 Not Found 상태 코드를 구체적으로 제외할 것입니다.

-b 플래그는 제외할 상태 코드의 쉼표로 구분된 목록을 받습니다.

404 응답을 제외하고 Gobuster 스캔을 실행하려면 터미널에서 다음 명령을 실행합니다.

gobuster dir -u http://localhost:8000 -w ~/project/wordlist.txt -b 404

새로운 플래그를 살펴보겠습니다.

  • -b 404: HTTP 상태 코드가 404 인 모든 결과를 제외하도록 Gobuster 에 지시합니다.

출력을 주의 깊게 관찰합니다. (Status: 404)이 있는 모든 항목이 사라지고 훨씬 더 깔끔하고 집중된 결과 목록이 생성되었음을 알 수 있습니다.

...
/existing_dir           (Status: 200)
/another_file.txt       (Status: 200)
/redirect_me            (Status: 302)
/forbidden_area         (Status: 403)
/server_error           (Status: 500)
...

이는 스캔 결과의 가독성과 유용성을 크게 향상시킵니다.

스캔 실행 및 더 깔끔해진 출력 관찰

이 단계에서는 -b 404 플래그를 사용하여 Gobuster 스캔을 다시 실행하고 출력을 주의 깊게 관찰하여 404 응답이 실제로 제외되었는지 확인합니다. 이를 통해 제외 플래그의 작동 방식과 스캔 결과에 미치는 영향을 더 잘 이해할 수 있습니다.

필터링된 출력을 보려면 명령을 다시 실행합니다.

gobuster dir -u http://localhost:8000 -w ~/project/wordlist.txt -b 404

스캔이 진행됨에 따라 404 가 아닌 상태 코드를 반환한 항목만 표시됩니다. 이는 노이즈 감소에 있어 -b 플래그의 효과를 보여줍니다.

예상되는 더 깔끔한 출력 예시:

...
/existing_dir           (Status: 200)
/another_file.txt       (Status: 200)
/redirect_me            (Status: 302)
/forbidden_area         (Status: 403)
/server_error           (Status: 500)
...

nonexistent_page, admin, test 항목 (404 를 반환했던 항목) 이 더 이상 출력에 없다는 점에 주목하십시오. 이를 통해 유효한 리소스를 훨씬 쉽게 식별할 수 있습니다.

-s 및 -b 플래그 조합으로 정밀한 필터링 수행

이 마지막 단계에서는 -s (상태 코드 포함) 및 -b (상태 코드 제외) 플래그를 조합하여 더욱 정밀한 필터링을 수행하는 방법을 배우게 됩니다. -b는 노이즈를 제거하는 데 유용하지만, 때로는 성공적인 응답 (200 OK) 또는 리디렉션 (3xx) 과 같이 특정 유형의 응답만 보고 싶을 때가 있습니다.

-s 플래그를 사용하면 결과에 포함할 상태 코드의 쉼표로 구분된 목록을 지정할 수 있습니다. -s-b가 모두 사용되면 Gobuster 는 먼저 -s 필터를 적용한 다음, 나머지 결과에서 -b 필터를 적용합니다.

예를 들어, 404 Not Found를 명시적으로 제외하면서 200 OK302 Found 응답만 보고 싶다고 가정해 보겠습니다.

다음 명령을 실행합니다.

gobuster dir -u http://localhost:8000 -w ~/project/wordlist.txt -s 200,302 -b 404

설명은 다음과 같습니다.

  • -s 200,302: 상태 코드가 200 또는 302 인 결과만 표시하도록 Gobuster 에 지시합니다.
  • -b 404: 상태 코드가 404 인 결과를 제외하도록 Gobuster 에 지시합니다. (이 특정 경우에는 -s에 의해 404 가 이미 제외되겠지만, 조합을 보여줍니다.)

출력을 관찰합니다. 이제 Status: 200Status: 302 항목만 표시되어야 합니다.

...
/existing_dir           (Status: 200)
/another_file.txt       (Status: 200)
/redirect_me            (Status: 302)
...

이 강력한 조합을 통해 Gobuster 스캔을 미세 조정하여 가장 관련성 높은 정보만 검색할 수 있으며, 웹 정찰 (web reconnaissance) 의 효율성을 크게 향상시킬 수 있습니다.

요약

이 실습에서는 Gobuster 스캔 결과에서 특정 HTTP 상태 코드를 제외하는 방법을 성공적으로 학습했습니다. 404 Not Found 와 같이 일반적인 "노이즈" 응답에 대해 필터링이 왜 필요한지 이해하는 것부터 시작했습니다. 그런 다음 기본 스캔을 수행하여 필터링되지 않은 출력을 관찰했습니다. 이 실습의 핵심은 원치 않는 상태 코드를 제외하기 위해 -b 플래그를 사용하는 것이었으며, 이는 훨씬 더 깔끔하고 집중된 결과 세트로 이어졌습니다. 마지막으로 Gobuster 스캔에 대한 더욱 정밀한 제어를 위해 -s (포함) 및 -b (제외) 플래그를 조합하는 방법을 탐구했습니다. 이 기술은 효율적이고 표적화된 웹 정찰 (web reconnaissance) 에 매우 중요합니다.