Gobuster 에서 디렉토리 스캔을 위한 다양한 단어 목록 사용하기

Beginner
지금 연습하기

소개

이 실습에서는 웹 열거 (web enumeration) 를 위한 인기 도구인 Gobuster 를 사용하여 디렉토리 스캔에서 단어 목록 (wordlist) 의 중요한 역할을 탐구합니다. 디렉토리 스캔은 웹 애플리케이션 침투 테스트의 기본적인 단계로, 민감한 정보가 포함되어 있거나 공격 벡터를 제공할 수 있는 숨겨진 디렉토리와 파일을 발견하는 데 도움이 됩니다. 이 프로세스의 효과와 효율성은 사용되는 단어 목록에 크게 좌우됩니다. Kali Linux 에서 기본 단어 목록을 찾는 방법, 다양한 크기의 단어 목록으로 스캔을 수행하는 방법, 스캔 시간 및 발견된 항목 수에 미치는 영향을 분석하는 방법을 배우게 됩니다. 이를 통해 열거 작업에 적합한 단어 목록을 선택할 때 관련된 절충점에 대한 실질적인 이해를 얻을 수 있습니다.

Kali 에서 기본 단어 목록 찾기

이 단계에서는 Gobuster 와 같은 도구에 필수적인 Kali Linux 에 제공되는 기본 단어 목록을 찾습니다. Kali Linux 에는 seclists 디렉토리에 저장된 풍부한 단어 목록 모음이 있습니다. 이러한 단어 목록은 디렉토리 열거, 비밀번호 크래킹, 퍼징 (fuzzing) 등 다양한 목적에 맞게 분류되어 있습니다.

먼저 seclists 디렉토리로 이동합니다. 이러한 단어 목록의 일반적인 경로는 /usr/share/seclists입니다.

ls -l /usr/share/seclists

그러면 다양한 하위 디렉토리가 표시됩니다. 웹 열거의 경우 Discovery 디렉토리가 특히 관련성이 높습니다. Discovery 안에는 웹 디렉토리 및 파일을 찾는 데 특화된 단어 목록이 포함된 Web-Content가 있습니다.

ls -l /usr/share/seclists/Discovery/Web-Content/

이 중에서 common.txt는 비교적 작은 단어 목록이며, directory-list-2.3-medium.txt는 더 크고 포괄적인 단어 목록입니다. 다음 단계에서 이 두 단어 목록을 사용하여 Gobuster 스캔에 대한 단어 목록 크기의 영향을 관찰할 것입니다.

ls -l /usr/share/seclists/Discovery/Web-Content/common.txt
ls -l /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt

common.txt의 처음 몇 줄을 보고 내용을 파악할 수도 있습니다.

head /usr/share/seclists/Discovery/Web-Content/common.txt

예상 출력 (일부):

.git
.svn
.DS_Store
.htaccess
.htpasswd
.bash_history
.bash_logout
.bashrc
.profile
.ssh

작은 단어 목록 (common.txt) 으로 스캔 수행하기

이 단계에서는 더 작은 common.txt 단어 목록을 사용하여 Gobuster 로 디렉토리 스캔을 수행합니다. 이 스캔은 덜 일반적인 디렉토리를 놓칠 수 있지만 더 빠른 스캔을 시연할 것입니다.

스캔 대상은 로컬에서 8000 번 포트로 실행되는 간단한 Python 웹 서버가 될 것입니다. URL 은 http://127.0.0.1:8000입니다.

Gobuster 를 실행하려면 다음 명령을 사용하십시오.

  • dir: 디렉토리/파일 무차별 대입 (brute-forcing) 을 수행하고 있음을 지정합니다.
  • -u: 대상 URL 을 지정합니다.
  • -w: 단어 목록의 경로를 지정합니다.
  • -o: 결과를 저장할 출력 파일을 지정합니다.
gobuster dir -u http://127.0.0.1:8000 -w /usr/share/seclists/Discovery/Web-Content/common.txt -o ~/project/gobuster_common_results.txt

스캔이 실행되고 진행 상황이 표시됩니다. 완료되면 ~/project/gobuster_common_results.txt에 저장된 결과를 볼 수 있습니다.

cat ~/project/gobuster_common_results.txt

예상 출력 ( common.txt 내용 및 서버 설정에 따라 약간 다를 수 있습니다):

/admin                (Status: 200)
/backup               (Status: 200)
/common.html          (Status: 200)

스캔이 완료되는 데 걸린 시간을 기록해 두십시오. 다음 단계에서 더 큰 단어 목록을 사용한 스캔과 비교할 것입니다.

더 큰 단어 목록 (directory-list-2.3-medium.txt) 으로 스캔 수행하기

이 단계에서는 Gobuster 를 사용하여 디렉토리 스캔을 다시 수행하지만, 이번에는 훨씬 더 큰 directory-list-2.3-medium.txt 단어 목록을 사용합니다. 이를 통해 더 포괄적인 단어 목록이 더 많은 항목을 찾을 수 있지만 스캔 시간이 증가하는 비용이 발생함을 보여줄 것입니다.

gobuster dir -u http://127.0.0.1:8000 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -o ~/project/gobuster_medium_results.txt

이 스캔은 단어 목록의 크기 때문에 이전 스캔보다 훨씬 오래 걸릴 것입니다. 실행되는 동안 인내심을 가지십시오. 완료되면 결과를 검토하십시오.

cat ~/project/gobuster_medium_results.txt

예상 출력 ( common.txt 스캔보다 더 많은 항목이 포함되며, /admin, /backup, /common.html 및 잠재적으로 다른 많은 항목이 포함됩니다):

/admin                (Status: 200)
/backup               (Status: 200)
/common.html          (Status: 200)
/css                  (Status: 200)
/js                   (Status: 200)
/images               (Status: 200)
... (더 많은 항목)

이전 스캔과 비교하여 발견된 항목 수와 총 소요 시간의 차이를 관찰하십시오.

두 스캔의 시간 및 결과 비교하기

이 단계에서는 두 스캔에 대한 결과와 대략적인 소요 시간을 명시적으로 비교합니다. Gobuster 는 출력에서 정확한 소요 시간을 제공하지 않지만, 실행 중 관찰한 시간과 출력 파일의 파일 크기 또는 줄 수를 확인하여 추론할 수 있습니다.

먼저 두 출력 파일의 줄 수 (발견된 항목 수에 해당) 를 비교해 보겠습니다.

echo "Results from common.txt scan:"
wc -l ~/project/gobuster_common_results.txt

echo "Results from directory-list-2.3-medium.txt scan:"
wc -l ~/project/gobuster_medium_results.txt

예상 출력 (줄 수는 다를 수 있습니다):

Results from common.txt scan:
3 /home/labex/project/gobuster_common_results.txt
Results from directory-list-2.3-medium.txt scan:
X /home/labex/project/gobuster_medium_results.txt (여기서 X는 훨씬 더 큰 숫자입니다)

directory-list-2.3-medium.txt를 사용한 스캔이 훨씬 더 많은 항목을 발견했음을 알 수 있습니다.

시간과 관련해서는 common.txt 스캔이 매우 빠르게 완료되었지만 (아마도 몇 초), directory-list-2.3-medium.txt 스캔은 훨씬 더 오래 걸렸다는 것을 알 수 있습니다 (시스템 리소스 및 네트워크 속도에 따라 몇 분이 걸릴 수도 있습니다). 이는 단어 목록 크기와 스캔 시간 사이의 직접적인 관계를 강조합니다.

단어 목록 크기와 스캔 시간 간의 절충점 이해하기

이 마지막 단계에서는 이전 스캔에서 얻은 주요 내용을 요약하고, 단어 목록 크기, 스캔 시간 및 결과의 포괄성 간의 절충점에 초점을 맞춥니다.

더 큰 단어 목록:

  • 장점: 숨겨진 디렉토리 및 파일을 발견할 가능성이 높아 더 철저한 열거로 이어집니다. 이는 취약점이나 민감한 데이터를 포함할 수 있는 모호하거나 비표준 경로를 찾는 데 중요합니다.
  • 단점: 스캔 시간이 크게 증가하고, 더 많은 시스템 리소스를 소비하며, 분석하기 어려운 더 많은 양의 출력을 생성합니다. 또한 더 많은 노이즈 (거짓 양성 또는 관련 없는 항목) 를 생성할 수 있습니다.

더 작은 단어 목록:

  • 장점: 훨씬 빠른 스캔 시간, 적은 리소스 사용량, 더 관리하기 쉬운 출력 생성. 빠른 확인 또는 일반적인 경로에 대한 좋은 아이디어가 있을 때 이상적입니다.
  • 단점: 덜 일반적이거나 사용자 정의 이름의 디렉토리 및 파일을 놓칠 수 있으며, 이는 불완전한 열거로 이어지고 중요한 정보를 간과할 수 있습니다.

올바른 단어 목록 선택:
단어 목록의 선택은 목표와 사용 가능한 시간에 따라 달라집니다.

  • 초기 정찰 또는 빠른 확인을 위해 common.txt와 같은 작고 대상이 지정된 단어 목록이 종종 충분합니다.
  • 포괄적이고 심층적인 평가를 위해서는 directory-list-2.3-medium.txt 또는 더 큰 것 (예: directory-list-2.3-big.txt) 과 같은 더 큰 단어 목록이 필요합니다.
  • 때로는 조합 접근 방식이 가장 좋습니다. 속도를 위해 작은 단어 목록으로 시작한 다음, 초기 결과가 더 깊이 파고들 가치가 있다면 더 큰 목록으로 후속 조치를 취하십시오.
  • 특정 대상 또는 기술 스택에 맞춰진 사용자 정의 단어 목록도 매우 효과적일 수 있습니다.

이러한 이해는 효율적이고 효과적인 웹 애플리케이션 침투 테스트에 필수적입니다.

요약

이 실습에서는 Gobuster 디렉토리 스캔에 대한 다양한 단어 목록 크기의 영향을 성공적으로 탐색했습니다. Kali Linux 에서 기본 단어 목록을 찾는 방법, 작음 (common.txt) 및 더 큰 (directory-list-2.3-medium.txt) 단어 목록을 사용한 스캔 수행, 결과 및 대략적인 스캔 시간 비교 방법을 배웠습니다. 더 큰 단어 목록은 더 포괄적인 결과를 제공하지만 상당한 시간이 더 필요하고, 더 작은 단어 목록은 덜 일반적인 항목을 놓칠 위험이 있지만 더 빠른 스캔을 제공하는 절충점에 대한 실질적인 이해를 얻었습니다. 이러한 지식은 침투 테스트에서 웹 열거 작업 중에 정보에 입각한 결정을 내리는 데 중요합니다.