Gobuster 에서 상태 코드로 스캔 결과 필터링하기

Beginner
지금 연습하기

소개

웹 열거 (web enumeration) 에서 Gobuster 와 같은 도구는 웹 서버의 숨겨진 디렉토리와 파일을 찾는 데 사용됩니다. 하지만 원시 출력은 즉시 관련 없는 많은 항목을 포함하여 부담스러울 수 있습니다. HTTP 상태 코드를 기반으로 이러한 결과를 필터링하는 것은 성공적인 페이지 (200 OK), 리디렉션 (301/302) 또는 금지된 리소스 (403) 와 같은 특정 유형의 응답에 집중하는 강력한 기법입니다.

이 실습에서는 Gobuster 의 필터링 기능을 사용하여 스캔 결과를 효율적으로 분석하는 방법을 안내합니다. 일반적인 HTTP 상태 코드를 식별하고, 기본적인 Gobuster 스캔을 수행한 다음, 관심 있는 상태 코드만 표시하도록 필터를 적용하는 방법을 배우게 됩니다. 이 기술은 웹 보안 또는 침투 테스트에 관련된 모든 사람에게 필수적이며, 실행 가능한 정보를 신속하게 식별하는 데 도움이 됩니다.

일반적인 HTTP 상태 코드 이해하기 (200, 301, 403)

이 단계에서는 웹 열거 중에 자주 접하게 되는 가장 일반적인 HTTP 상태 코드에 대해 알아보겠습니다. 이러한 코드를 이해하는 것은 Gobuster 의 출력을 해석하고 결과를 효과적으로 필터링하는 데 기본이 됩니다.

  • 200 OK: 이 상태 코드는 요청이 성공했음을 나타냅니다. 서버가 요청을 성공적으로 처리했으며 요청된 리소스 (예: 웹 페이지, 이미지) 가 반환되고 있습니다. Gobuster 스캔에서 200 상태 코드는 일반적으로 유효하고 접근 가능한 페이지 또는 디렉토리가 발견되었음을 의미합니다.
  • 301 Moved Permanently: 이 상태 코드는 요청된 리소스가 새 URL 로 영구적으로 이동되었음을 의미합니다. 브라우저 (또는 Gobuster) 는 새 위치로 자동 리디렉션되어야 합니다. 오류는 아니지만, 301 리디렉션을 찾는 것은 오래되었거나 재구성된 콘텐츠를 나타낼 수 있습니다.
  • 403 Forbidden: 이 상태 코드는 서버가 요청을 이해했지만 승인을 거부함을 의미합니다. 이는 일반적으로 사용자 (또는 Gobuster) 가 인증 또는 특정 권한이 필요한 리소스에 액세스하려고 시도하지만 클라이언트가 해당 권한을 가지고 있지 않을 때 발생합니다. 403 을 찾는 것은 보호되지만 여전히 존재하는 민감한 영역을 가리킬 수 있으므로 흥미로울 수 있습니다.

이를 파악하기 위해 curl을 사용하여 더미 웹 서버의 일부 경로에 액세스해 볼 수 있습니다.

먼저 index.html에 액세스하여 서버가 실행 중인지 확인해 보겠습니다.

curl -I http://localhost:8000/index.html

출력에서 HTTP/1.0 200 OK 상태를 볼 수 있어야 합니다.

다음으로 redirect.html에 액세스하여 301 리디렉션을 확인해 보겠습니다.

curl -I http://localhost:8000/redirect.html

HTTP/1.0 301 Moved Permanently 상태를 관찰해야 합니다.

마지막으로 admin.html에 액세스하여 403 Forbidden 응답을 확인해 보겠습니다.

curl -I http://localhost:8000/admin.html

이 명령은 HTTP/1.0 403 Forbidden 상태를 반환해야 합니다.

이러한 curl 명령은 서버의 다른 경로가 특정 HTTP 상태 코드로 어떻게 응답하는지 수동으로 확인하는 데 도움이 되며, 이는 Gobuster 가 자동화할 내용입니다.

모든 상태 코드를 보기 위한 스캔 실행

이 단계에서는 상태 코드 필터링 없이 더미 웹 서버를 대상으로 기본적인 Gobuster 스캔을 수행합니다. 이를 통해 발견된 모든 경로와 해당 HTTP 상태 코드를 포함하는 기본 출력을 볼 수 있습니다. 이는 필터를 적용하기 전의 기준선 역할을 합니다.

Gobuster 디렉토리 무차별 대입 (brute-forcing) 의 기본 구문은 gobuster dir -u <URL> -w <wordlist>입니다.

  • -u: 대상 URL 을 지정합니다. 여기서는 http://localhost:8000입니다.
  • -w: 단어 목록 파일의 경로를 지정합니다. 설정 단계에서 생성한 wordlist.txt 파일을 사용합니다.

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

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

명령을 실행한 후 출력을 관찰하십시오. 발견된 경로와 해당 상태 코드를 나타내는 다음과 유사한 줄을 볼 수 있어야 합니다.

/index.html           (Status: 200)
/secret.html          (Status: 200)
/redirect.html        (Status: 301)
/admin.html           (Status: 403)

Gobuster 가 만나는 모든 상태 코드를 보고함을 주목하십시오. 실제 시나리오에서 큰 단어 목록을 사용하면 이 출력은 매우 길어지고 관련 없는 항목이 많이 포함될 수 있습니다. 다음 단계에서는 이 출력을 개선하는 방법을 보여줍니다.

-s 플래그를 사용하여 200 OK 및 301 리디렉션만 표시하기

이 단계에서는 Gobuster 의 -s (status) 플래그를 사용하여 스캔 결과를 필터링하고 특정 HTTP 상태 코드만 표시하는 방법을 배웁니다. 이는 성공적인 페이지 또는 리디렉션과 같은 특정 유형의 응답을 찾을 때 매우 유용합니다.

-s 플래그를 사용하면 출력에 포함할 상태 코드의 쉼표로 구분된 목록을 지정할 수 있습니다. 예를 들어, 200(OK) 및 301(영구 이동) 응답만 보려면 -s 200,301을 사용합니다.

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

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

출력을 관찰하십시오. 이번에는 상태 코드 200 및 301 이 있는 항목만 표시되어야 합니다.

/index.html           (Status: 200)
/secret.html          (Status: 200)
/redirect.html        (Status: 301)

403 상태를 반환했던 /admin.html 항목이 더 이상 출력에 없음을 주목하십시오. 이는 -s 플래그가 결과를 얼마나 효과적으로 좁힐 수 있는지 보여주며, 관련 있는 결과에 집중하기 쉽게 만듭니다.

금지된 페이지 (403) 를 찾기 위한 새 스캔 실행

이 단계에서는 "금지된" 페이지, 즉 403 HTTP 상태 코드를 반환하는 페이지를 구체적으로 찾기 위해 필터링된 스캔을 다시 수행합니다. 403 응답을 식별하는 것은 침투 테스트에서 중요할 수 있습니다. 이는 종종 보호된 관리 인터페이스, 민감한 파일 또는 잘못된 구성이나 우회 기법에 취약할 수 있는 디렉토리를 나타내기 때문입니다.

403 상태 코드만 필터링하려면 -s 플래그에 403을 인수로 사용합니다.

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

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

출력을 검토하십시오. 이제 403 상태를 반환한 /admin.html에 대한 항목만 표시되어야 합니다.

/admin.html           (Status: 403)

이 표적 스캔은 서버가 명시적으로 액세스를 거부하는 리소스를 신속하게 강조 표시합니다. 이러한 리소스는 보호되지만, 그 존재 자체만으로도 추가 조사를 위한 귀중한 정보가 될 수 있습니다. 이는 특정 유형의 서버 응답에 집중하는 데 -s 플래그의 유연성을 보여줍니다.

필터링된 출력 분석

이 마지막 단계에서는 생성한 필터링된 출력의 의미를 분석합니다. Gobuster 스캔 맥락에서 다양한 상태 코드가 무엇을 의미하는지 이해하는 것은 효과적인 웹 열거에 중요합니다.

200,301 상태 코드를 필터링했을 때 다음을 식별했습니다.

  • /index.html (200 OK): 이것은 메인 페이지로, 성공적이고 접근 가능한 리소스임을 나타냅니다.
  • /secret.html (200 OK): 이 역시 200 을 반환하여 접근 가능한 페이지임을 시사합니다. 실제 시나리오에서는 해당 콘텐츠를 조사하여 민감한 정보가 포함되어 있는지 확인해야 합니다.
  • /redirect.html (301 Moved Permanently): 이는 리디렉션을 나타냅니다. 일반적으로 리디렉션을 따라가면 업데이트된 콘텐츠나 애플리케이션의 다른 부분을 가리킬 수 있으므로 어디로 연결되는지 확인해야 합니다.

403 상태 코드를 필터링했을 때 다음을 식별했습니다.

  • /admin.html (403 Forbidden): 이것은 중요한 발견입니다. 403 응답은 서버가 리소스가 존재함을 알고 있지만 액세스를 거부한다는 것을 의미합니다. 이는 종종 관리 패널, 민감한 디렉토리 또는 의도적으로 보호된 파일을 가리킵니다. 직접적인 액세스는 거부되지만, 이 경로는 다음과 같은 추가 조사를 위한 주요 후보입니다.
    • 우회 시도: 이 특정 웹 서버 또는 애플리케이션에 대해 알려진 우회 기법이 있습니까?
    • 기본 자격 증명: 기본 자격 증명으로 액세스할 수 있습니까?
    • 취약점 스캔: 무단 액세스로 이어질 수 있는 취약점이 있습니까?

Gobuster 의 출력을 선택적으로 필터링함으로써 가장 유망한 단서로 조사를 신속하게 전환하여 시간을 절약하고 열거 프로세스를 더 효율적이고 표적화할 수 있습니다. 이 기술은 웹 애플리케이션 평가를 수행하는 모든 보안 전문가에게 필수적입니다.

요약

이 실습에서는 Gobuster 의 -s 플래그를 효과적으로 사용하여 HTTP 상태 코드를 기반으로 스캔 결과를 필터링하는 방법을 배웠습니다. 200(OK), 301(Moved Permanently), 403(Forbidden) 과 같은 일반적인 상태 코드를 이해하는 것부터 시작했습니다. 그런 다음 모든 응답을 보기 위해 기본 Gobuster 스캔을 수행하고 특정 유형의 결과를 집중하기 위해 필터를 적용했습니다.

200 및 301 상태 코드를 필터링하여 접근 가능한 페이지와 리디렉션을 식별했습니다. 더 중요하게는 403 상태 코드를 필터링하여 추가 조사가 필요한 잠재적으로 민감하거나 보호된 리소스를 정확히 찾아냈습니다. 이 표적 접근 방식은 웹 열거 프로세스를 크게 간소화하여 침투 테스트 또는 보안 평가 중에 실행 가능한 정보를 신속하게 식별할 수 있도록 합니다. 이 기술을 마스터하는 것은 모든 사이버 보안 전문가에게 가치 있는 기술입니다.