Gobuster 로 기본 VHost 스캔 수행하기

사이버 보안Beginner
지금 연습하기

소개

이 랩에서는 Gobuster를 사용하여 기본적인 가상 호스트 (vhost) 스캔을 수행하는 방법을 배웁니다. 가상 호스트는 웹 서버가 단일 IP 주소에서 여러 웹사이트를 호스팅하는 일반적인 방법입니다. 이러한 숨겨진 가상 호스트를 발견하면 침투 테스트 또는 보안 평가 중에 추가적인 공격 표면이나 민감한 정보를 드러낼 수 있습니다. Gobuster는 URI, DNS 서브도메인 및 가상 호스트 이름을 무차별 대입하는 강력한 도구입니다.

가상 호스트 (VHosts) 이해하기

이 단계에서는 가상 호스트 (vhosts) 와 웹 보안에서 가상 호스트가 중요한 이유에 대해 배웁니다.

가상 호스트를 사용하면 단일 서버에서 동일한 IP 주소로 여러 도메인 이름을 호스팅할 수 있습니다. 예를 들어, www.example.comblog.example.com은 모두 동일한 서버에서 호스팅될 수 있으며, HTTP 요청의 Host 헤더로 구분됩니다. 웹 브라우저가 서버로 요청을 보낼 때, 액세스하려는 도메인 이름을 지정하는 Host 헤더를 포함합니다. 웹 서버는 이 헤더를 사용하여 어떤 웹사이트를 제공할지 결정합니다.

이러한 가상 호스트를 발견하는 것은 보안 평가에 중요합니다. 그 이유는 다음과 같습니다.

  • 숨겨진 콘텐츠: 가상 호스트는 오래되어 패치가 적용되지 않은 애플리케이션, 사이트의 개발 버전 또는 메인 웹사이트에서 연결되지 않은 관리 인터페이스를 호스팅할 수 있습니다.
  • 확장된 공격 표면: 발견된 각 가상 호스트는 SQL 삽입, 크로스 사이트 스크립팅 (XSS) 또는 디렉터리 탐색과 같은 공격에 대한 잠재적인 새로운 진입점을 나타냅니다.
  • 정보 노출: 때로는 가상 호스트가 내부 네트워크 구조, 민감한 파일 또는 잘못된 구성을 드러낼 수 있습니다.

Gobuster와 같은 도구는 대상에 대해 일반적인 가상 호스트 이름을 시도하여 활성 가상 호스트를 식별하는 프로세스를 자동화할 수 있습니다.

대상 IP 주소 또는 도메인 선택

이 단계에서는 Gobuster vhost 스캔의 대상을 식별합니다.

이 랩에서는 대상 IP 로 localhost, 특히 http://127.0.0.1:8080을 사용합니다. 포트 8080에 여러 가상 호스트를 시뮬레이션하는 간단한 웹 서버를 설정했습니다. 실제 시나리오에서는 127.0.0.1:8080을 대상의 실제 IP 주소 또는 도메인 이름으로 바꿔야 합니다.

웹 서버가 실행 중인지 확인하려면 curl을 사용하여 요청을 보낼 수 있습니다.

curl http://127.0.0.1:8080

서버가 활성 상태임을 나타내는 다음과 유사한 출력이 표시되어야 합니다.

This is vhost1 content.

이 출력은 기본 가상 호스트 (또는 간단한 Python 서버에서 제공하는 첫 번째 가상 호스트) 의 것입니다. 우리의 목표는 다른 "숨겨진" 가상 호스트를 찾는 것입니다.

기본 gobuster vhost 명령어 구성하기

이 단계에서는 vhost 스캔을 위한 기본 gobuster 명령어를 구성하는 방법을 배웁니다.

vhost 스캔을 위한 gobuster 명령어는 vhost 모드를 사용합니다. vhost 스캔에 필수적인 플래그는 다음과 같습니다.

  • -u: 대상 URL 을 지정합니다.
  • -w: 가상 호스트 이름의 무차별 대입 (brute-forcing) 에 사용할 단어 목록 (wordlist) 을 지정합니다.

기본 구문은 gobuster vhost -u <target_url> -w <wordlist_path>입니다.

이 랩에서는 대상 URL 이 http://127.0.0.1:8080입니다. 또한 잠재적인 가상 호스트 이름을 포함하는 단어 목록을 /tmp/vhost_wordlist.txt에 준비했습니다.

단어 목록의 내용을 살펴보겠습니다.

cat /tmp/vhost_wordlist.txt

다음과 같은 출력이 표시되어야 합니다.

vhost1
vhost2
hidden_vhost
test
dev
admin

이 단어 목록에는 우리가 찾을 것으로 예상되는 일반적인 가상 호스트 이름과 특정 가상 호스트 이름이 포함되어 있습니다.

-u 및 -w 플래그를 사용하여 스캔 실행하기

이 단계에서는 대상 URL 과 제공된 단어 목록을 사용하여 gobuster vhost 스캔을 실행합니다.

이제 대상 URL 과 단어 목록 경로를 gobuster 명령어로 결합합니다.

gobuster vhost -u http://127.0.0.1:8080 -w /tmp/vhost_wordlist.txt

Enter 키를 눌러 명령을 실행합니다. Gobuster는 단어 목록을 반복하며 각 단어를 Host 헤더로 사용하여 요청을 보내고 발견된 가상 호스트를 보고하기 시작합니다.

출력에는 진행 상황과 성공적으로 발견된 항목이 표시됩니다. 다음과 유사하게 보일 수 있습니다.

===============================================================
Gobuster v3.6
by OJ (https://github.com/OJ/gobuster)
===============================================================
[+] Url:                    http://127.0.0.1:8080
[+] Wordlist:               /tmp/vhost_wordlist.txt
[+] Threads:                10
[+] Timeout:                10s
[+] User Agent:             gobuster/3.6
===============================================================
2024/07/30 10:00:00 Starting gobuster in vhost mode
===============================================================
Found: vhost1 (Status: 200) [Size: 20]
Found: vhost2 (Status: 200) [Size: 20]
Found: hidden_vhost (Status: 200) [Size: 27]
===============================================================
2024/07/30 10:00:05 Finished
===============================================================

gobustervhost1, vhost2, hidden_vhost를 성공적으로 찾았음을 알 수 있습니다.

발견된 가상 호스트에 대한 출력 검토하기

이 단계에서는 gobuster 스캔의 출력을 분석하여 발견된 가상 호스트를 이해합니다.

gobuster의 출력은 발견된 각 가상 호스트에 대한 주요 정보를 제공합니다.

  • Found:: 성공적으로 해석된 가상 호스트 이름입니다.
  • (Status: 200): 서버에서 반환된 HTTP 상태 코드입니다. 200 OK는 일반적으로 vhost 가 존재하고 콘텐츠를 성공적으로 제공했음을 나타냅니다. 서버 구성에 따라 다른 상태 코드 (예: 301, 302, 403, 404) 도 관련될 수 있습니다.
  • [Size: XX]: 응답 본문의 크기 (바이트) 입니다. 이는 때때로 다른 유형의 콘텐츠 또는 기본 페이지를 구별하는 데 도움이 될 수 있습니다.

이전 단계의 출력에서 다음을 보았어야 합니다.

  • Found: vhost1 (Status: 200) [Size: 20]
  • Found: vhost2 (Status: 200) [Size: 20]
  • Found: hidden_vhost (Status: 200) [Size: 27]

이 항목들은 gobuster가 제공된 단어 목록을 사용하여 http://127.0.0.1:8080에서 세 개의 가상 호스트를 성공적으로 식별했음을 나타냅니다. 실제 시나리오에서는 이러한 발견된 vhost 를 직접 방문하거나 (예: curl -H "Host: vhost1" http://127.0.0.1:8080) 다른 웹 보안 도구를 사용하여 추가로 조사하게 됩니다.

이것으로 기본 vhost 스캔 랩을 마칩니다. gobuster를 사용하여 가상 호스트를 성공적으로 식별했습니다.

요약

이 랩에서는 Gobuster를 사용하여 기본적인 가상 호스트 스캔을 수행하는 방법을 배웠습니다. 가상 호스트의 개념을 이해하고, 대상을 선택하고, -u (URL) 및 -w (단어 목록) 플래그를 사용하여 gobuster 명령을 구성하고, 스캔을 실행하고, 결과를 해석했습니다. 이 기술은 보안 평가 중에 숨겨진 웹 애플리케이션을 발견하고 공격 표면을 확장하는 데 필수적입니다.