Gobuster 로 특정 파일 확장자 스캔하기

Beginner
지금 연습하기

소개

Gobuster 는 웹 서버에서 디렉토리 및 파일 무차별 대입 (brute-forcing) 에 사용되는 강력한 도구입니다. 숨겨진 디렉토리를 찾는 데 흔히 사용되지만, 특정 확장자를 가진 파일을 찾는 데에도 활용될 수 있습니다. 이 기능은 침투 테스트 및 보안 평가에서 잠재적인 진입점, 민감한 파일 또는 즉시 명확하지 않을 수 있는 잘못된 구성을 식별하는 데 도움이 되므로 매우 중요합니다. 예를 들어, .php 파일을 찾는 것은 웹 애플리케이션을 나타낼 수 있으며, .bak 또는 .old 파일은 민감한 데이터의 백업 복사본을 드러낼 수 있습니다.

이 랩에서는 웹 열거 (enumeration) 과정에서 특정 파일 확장자를 대상으로 Gobuster 의 -x 플래그를 효과적으로 사용하는 방법을 배우게 됩니다. 일반적이고 관련성 있는 파일 확장자를 식별하는 것부터 시작하여 기본 Gobuster 명령을 구성한 다음, 확장자별 스캔을 포함하도록 개선할 것입니다. 마지막으로 스캔을 실행하고 결과를 분석하여 출력 해석 방법을 이해할 것입니다. 이 실습 경험은 보다 표적화되고 효율적인 웹 정찰 (reconnaissance) 을 위한 귀중한 기술을 갖추게 해 줄 것입니다.

대상 파일 확장자 식별 (예: .php, .html)

이 단계에서는 웹 열거 중에 스캔하려는 일반적이고 관련성 있는 파일 확장자를 식별하는 방법을 배우게 됩니다. 확장자 선택은 종종 대상 기술 스택 (예: PHP 애플리케이션의 경우 .php, ASP.NET 의 경우 .aspx, Java 애플리케이션의 경우 .jsp) 또는 민감한 정보를 포함할 수 있는 일반적인 파일 유형 (예: .txt, .bak, .zip, .sql) 에 따라 달라집니다.

이 랩에서는 몇 가지 일반적인 웹 관련 확장자인 .php, .html, .txt에 중점을 둘 것입니다. 이들은 자주 접하게 되며 Gobuster 의 기능을 시연하는 좋은 예시가 됩니다.

스캔 시 염두에 둘 몇 가지 일반적인 확장자를 나열할 수 있습니다. 이 단계에서는 명령을 수행할 필요는 없지만, 찾고 있는 파일 유형을 이해하는 것은 모든 표적 스캔에서 첫 번째로 중요한 단계입니다.

다음과 같은 일반적인 확장자를 고려하십시오.

  • .php: PHP 스크립트
  • .html, .htm: HTML 페이지
  • .txt: 텍스트 파일, 종종 메모나 로그 포함
  • .js: JavaScript 파일
  • .css: Cascading Style Sheets
  • .xml: XML 파일
  • .json: JSON 데이터 파일
  • .bak, .old, .orig: 백업 파일
  • .zip, .tar.gz: 아카이브 파일
  • .sql: 데이터베이스 덤프

어떤 확장자를 대상으로 할지 알면 검색 범위를 좁히고 열거를 더 효율적으로 만들 수 있습니다.

기본 gobuster dir 명령 구성

이 단계에서는 기본 gobuster dir 명령을 구성합니다. Gobuster 의 dir 모드는 디렉토리 및 파일 무차별 대입에 사용됩니다. 파일 확장자별 옵션을 추가하기 전에 기본 명령 구조를 이해하는 것이 좋습니다.

gobuster dir 명령의 필수 구성 요소는 다음과 같습니다.

  • gobuster dir: 모드 (디렉토리/파일 무차별 대입) 를 지정합니다.
  • -u <URL>: 대상 URL 을 지정합니다. 이 랩에서는 대상이 /tmp/web_root에서 파일을 제공하는 http://localhost:8000이 될 것입니다.
  • -w <wordlist>: 무차별 대입에 사용할 단어 목록 (wordlist) 을 지정합니다. 웹 열거에 일반적인 단어 목록은 common.txt 또는 directory-list-2.3-medium.txt입니다. 이 랩에서는 단순성과 속도를 위해 index, about, notes, admin을 포함하는 작은 사용자 정의 단어 목록을 사용할 것입니다.

~/project 디렉토리에 간단한 단어 목록을 만들어 보겠습니다.

echo -e "index\nabout\nnotes\nadmin\nconfig" > ~/project/small_wordlist.txt

이제 확장자 없이 기본 명령을 구성해 보겠습니다. 이 명령은 small_wordlist.txt의 항목과 일치하는 디렉토리 또는 파일을 찾으려고 시도합니다.

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

다음과 유사한 출력이 표시되며, 특정 확장자 없이 찾은 디렉토리/파일을 보여줍니다.

...
/index (Status: 200)
/about (Status: 200)
/notes (Status: 200)
/admin (Status: 200)
/config (Status: 200)
...

이 출력은 Gobuster 가 단어 목록과 일치하는 항목을 찾았음을 보여주지만, 아직 특정 파일 유형을 알려주지는 않습니다.

확장자 지정을 위해 -x 플래그 추가

이 단계에서는 Gobuster 에서 스캔하려는 파일 확장자를 지정하기 위해 -x 플래그를 사용하는 방법을 배우게 됩니다. 이것이 특정 유형의 파일을 찾는 핵심입니다.

-x 플래그는 쉼표로 구분된 확장자 목록을 받습니다. 예를 들어 .php.html 파일을 스캔하려면 -x php,html을 사용합니다. 그러면 Gobuster 는 단어 목록의 각 항목에 이러한 확장자를 추가하고 index.php, about.html 등을 찾으려고 시도합니다.

이전 명령을 수정하여 .php, .html, .txt 확장자를 포함해 보겠습니다.

gobuster dir -u http://localhost:8000 -w ~/project/small_wordlist.txt -x php,html,txt,bak

이 명령은 Gobuster 에게 단어 목록의 각 항목에 대해 index.php, index.html, index.txt, index.bak, about.php, about.html, about.txt, about.bak 등을 찾도록 지시합니다.

명령을 실행하고 출력을 관찰하십시오. 이제 명시적으로 파일 확장자를 포함하는 결과를 볼 수 있어야 합니다.

...
/index.php (Status: 200)
/about.html (Status: 200)
/notes.txt (Status: 200)
/admin.php (Status: 200)
/config.bak (Status: 200)
...

출력에서 파일 이름과 해당 확장자가 명확하게 표시되어 Gobuster 가 이러한 파일을 성공적으로 찾았음을 나타내는 것을 알 수 있습니다.

대상에 대한 스캔 실행

이 단계에서는 시뮬레이션된 대상에 대해 지정된 확장자를 사용하여 전체 Gobuster 명령을 실행합니다. 이것은 배운 내용을 실제로 적용하는 것입니다.

이전 단계의 명령을 사용하며, 대상 URL, 사용자 정의 단어 목록 및 .php, .html, .txt, .bak 확장자가 포함된 -x 플래그를 사용합니다.

gobuster dir -u http://localhost:8000 -w ~/project/small_wordlist.txt -x php,html,txt,bak

이 명령을 실행하면 Gobuster 는 단어 목록을 반복하고 각 지정된 확장자를 추가하며 http://localhost:8000 서버에 요청을 보내기 시작합니다.

출력에는 발견된 파일과 해당 HTTP 상태 코드가 표시됩니다. 200 OK 상태 코드는 파일이 성공적으로 발견되었음을 나타냅니다.

===============================================================
Gobuster v3.6
by OJ (https://github.com/OJ/gobuster)
===============================================================
[+] Url:                     http://localhost:8000
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /home/labex/project/small_wordlist.txt
[+] Extensions:              php,html,txt,bak
[+] Timeout:                 10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/index.php            (Status: 200)
/about.html           (Status: 200)
/notes.txt            (Status: 200)
/admin.php            (Status: 200)
/config.bak           (Status: 200)
===============================================================
2024/01/01 12:00:00 Finished
===============================================================

이 출력은 Gobuster 가 대상 서버에서 index.php, about.html, notes.txt, admin.php, config.bak을 성공적으로 식별했음을 확인합니다.

특정 확장자를 가진 파일에 대한 결과 검토

이 마지막 단계에서는 Gobuster 스캔에서 얻은 결과를 검토하고 해석합니다. 보안 평가 중에 유용한 정보를 식별하는 데는 출력 이해가 중요합니다.

이전 단계의 출력은 발견된 파일과 해당 HTTP 상태 코드를 명확하게 나열합니다.

===============================================================
Gobuster v3.6
by OJ (https://github.com/OJ/gobuster)
===============================================================
[+] Url:                     http://localhost:8000
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /home/labex/project/small_wordlist.txt
[+] Extensions:              php,html,txt,bak
[+] Timeout:                 10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/index.php            (Status: 200)
/about.html           (Status: 200)
/notes.txt            (Status: 200)
/admin.php            (Status: 200)
/config.bak           (Status: 200)
===============================================================
2024/01/01 12:00:00 Finished
===============================================================

각 줄의 의미는 다음과 같습니다.

  • /index.php (Status: 200): 웹 서버 루트에서 index.php라는 파일이 발견되었고 서버가 200 OK 상태로 응답했음을 나타냅니다. 이는 요청이 성공했음을 의미합니다.
  • /about.html (Status: 200): 마찬가지로 about.html이 발견되었습니다.
  • /notes.txt (Status: 200): notes.txt라는 텍스트 파일이 발견되었습니다. 잠재적으로 민감한 정보가 포함될 수 있습니다.
  • /admin.php (Status: 200): admin.php 파일이 발견되었습니다. 이는 종종 추가 조사의 대상이 되는 관리 인터페이스일 수 있습니다.
  • /config.bak (Status: 200): config.bak이라는 백업 파일이 발견되었습니다. 백업 파일에는 종종 민감한 구성 세부 정보 또는 소스 코드가 포함됩니다.

이러한 결과를 검토함으로써 추가 조사를 위해 흥미로울 수 있는 파일을 식별할 수 있습니다. 예를 들어 웹 브라우저에서 /admin.php에 액세스하거나 /config.bak을 다운로드하여 내용을 검사해 볼 수 있습니다.

확장자에 대한 이러한 대상 스캔은 취약점이나 정보 노출로 이어질 수 있는 숨겨지거나 잊혀진 파일을 발견하는 데 도움이 됩니다.

요약

이 실습에서는 대상 웹 서버에서 특정 파일 확장자를 스캔하기 위해 Gobuster 를 사용하는 방법을 성공적으로 배웠습니다. 관련 파일 확장자를 식별하는 것의 중요성을 이해하는 것부터 시작하여 기본 gobuster dir 명령을 구성했으며, 마지막으로 -x 플래그를 사용하여 .php, .html, .txt, .bak 파일을 대상으로 지정하도록 개선했습니다.

시뮬레이션된 웹 서버에 대해 스캔을 실행하고 결과를 해석하여 다양한 파일과 해당 확장자 및 HTTP 상태 코드를 식별했습니다. 이 기술은 침투 테스트 중 웹 열거에 매우 중요하며, 민감한 정보를 포함하거나 기술 스택을 드러내거나 잠재적인 진입점을 노출할 수 있는 숨겨진 파일을 발견할 수 있게 해줍니다.

-x 플래그 사용을 숙달함으로써 더 대상화되고 효율적인 정찰을 수행할 수 있으며, 웹 애플리케이션의 취약점을 발견하는 능력을 크게 향상시킬 수 있습니다. 다양한 단어 목록 및 확장자 조합으로 계속 연습하여 웹 열거 기술을 더욱 연마하십시오.