Gobuster 에서 Basic HTTP 인증 사용하기

Beginner
지금 연습하기

소개

이 랩에서는 대상 웹 서버가 Basic HTTP Authentication 으로 보호되어 있을 때 인기 있는 디렉토리 및 파일 무차별 대입 도구인 Gobuster 를 효과적으로 사용하는 방법을 배우게 됩니다. 많은 웹 애플리케이션 및 관리 인터페이스는 특정 리소스에 대한 액세스를 제한하기 위해 Basic HTTP Authentication 을 사용합니다. 유효한 자격 증명을 제공하지 않으면 Gobuster 는 일반적으로 이러한 보호된 경로를 발견할 수 없습니다. 이 랩에서는 이러한 대상을 식별하고, Gobuster 에 필요한 사용자 이름과 비밀번호를 제공하는 방법, 그리고 보호된 디렉토리 및 파일을 성공적으로 열거하는 과정을 안내합니다. 이 랩이 끝나면 Gobuster 의 인증 플래그를 사용하여 기본 액세스 제한을 우회하고 숨겨진 웹 콘텐츠를 발견하는 데 능숙해질 것입니다.

Basic HTTP 인증으로 보호된 대상 식별

이 단계에서는 Basic HTTP 인증으로 보호된 웹 서버 디렉토리를 식별합니다. 보호된 디렉토리인 /protected_area로 로컬 Apache 웹 서버를 설정했습니다. 자격 증명 없이 이 디렉토리에 액세스하려고 하면 서버에서 사용자 이름과 비밀번호를 요청합니다.

먼저 자격 증명을 제공하지 않고 curl을 사용하여 보호된 디렉토리에 액세스해 보겠습니다. 이를 통해 인증 챌린지를 시연할 수 있습니다.

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

curl http://localhost/protected_area/

다음과 유사한 출력, 즉 401 Unauthorized 응답과 WWW-Authenticate 헤더가 표시되어야 합니다.

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>
</head><body>
<h1>Unauthorized</h1>
<p>This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at localhost Port 80</address>
</body></html>

이 출력은 /protected_area가 Basic HTTP 인증으로 보호되어 있음을 확인합니다.

다음으로, 이 보호된 디렉토리 내의 파일인 secret.txt에 액세스하여 보호되고 있는지 확인해 보겠습니다.

curl http://localhost/protected_area/secret.txt

유사한 401 Unauthorized 응답을 받게 됩니다. 이는 /protected_area 내의 모든 리소스에 인증이 필요함을 확인합니다.

사용자 이름 및 비밀번호 얻기

실제 시나리오에서는 Basic HTTP 인증을 위한 사용자 이름과 비밀번호를 얻는 것이 소셜 엔지니어링, 피싱 또는 무차별 대입과 같은 다양한 기술을 포함할 수 있습니다. 이 랩의 목적을 위해 보호된 영역에 대한 자격 증명을 미리 구성했습니다.

사용자 이름은 labexuser이고 비밀번호는 labexpassword입니다.

-u 플래그와 함께 curl을 사용하여 사용자 이름과 비밀번호를 직접 제공하여 이러한 자격 증명을 확인할 수 있습니다.

올바른 자격 증명으로 보호된 디렉토리에 액세스하려면 다음 명령을 실행합니다.

curl -u labexuser:labexpassword http://localhost/protected_area/

이제 성공적인 응답을 보게 될 것입니다. 아마도 비어 있는 디렉토리 목록이거나 존재하는 경우 기본 인덱스 페이지일 것입니다. /protected_areaindex.html이 없으므로 Indexes가 활성화된 경우 403 Forbidden 또는 디렉토리 목록이 표시될 수 있습니다. 중요한 것은 401 Unauthorized 오류를 받지 않았다는 것입니다.

이제 자격 증명을 사용하여 보호된 디렉토리 내의 secret.txt 파일에 액세스해 보겠습니다.

curl -u labexuser:labexpassword http://localhost/protected_area/secret.txt

이제 secret.txt 파일의 내용을 보게 될 것입니다.

This is a secret file.

이는 제공된 사용자 이름과 비밀번호가 올바르며 보호된 리소스에 대한 액세스를 허용함을 확인합니다.

사용자 이름에 -U 플래그 사용

이 단계에서는 Gobuster 에서 -U 플래그를 사용하여 Basic HTTP 인증에 대한 사용자 이름을 지정하는 방법을 배웁니다. 이 플래그는 사용자 이름을 알고 있지만 비밀번호를 무차별 대입하거나 단순히 인증 프로세스의 일부로 사용자 이름을 제공해야 하는 경우 중요합니다.

먼저 인증 없이 Gobuster 스캔을 시도하여 보호된 디렉토리에 대한 동작을 살펴보겠습니다. 시연을 위해 작은 단어 목록을 사용하겠습니다.

~/project 디렉토리에 common.txt라는 간단한 단어 목록 파일을 만듭니다.

echo -e "admin\nuser\nprotected_area\nsecret.txt" > ~/project/common.txt

이제 이 단어 목록을 사용하여 인증 없이 http://localhost에 대해 Gobuster 를 실행합니다.

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

Gobuster 는 /protected_area 항목에 대해 401 Unauthorized를 보고할 가능성이 높으며, 이는 자격 증명 없이는 액세스할 수 없음을 나타냅니다.

/protected_area       (Status: 401) [Size: 399]

이제 -U 플래그를 사용하여 사용자 이름 labexuser를 지정해 보겠습니다. 비밀번호만 제공하는 효과를 시연하기 위해 지금은 비밀번호를 생략하겠습니다.

gobuster dir -u http://localhost -w ~/project/common.txt -U labexuser

사용자 이름이 제공되었더라도 비밀번호도 필요하기 때문에 Gobuster 는 여전히 401 Unauthorized 응답을 받게 됩니다. 이 단계는 주로 사용자 이름을 제공하는 구문을 시연합니다.

/protected_area       (Status: 401) [Size: 399]

이는 사용자 이름은 허용되지만 올바른 비밀번호 없이는 인증이 여전히 실패함을 보여줍니다.

비밀번호에 -P 플래그 사용

이 단계에서는 Gobuster 에서 -P 플래그를 사용하여 Basic HTTP 인증에 대한 비밀번호를 지정하는 방법을 배웁니다. 이 플래그는 -U 플래그와 결합하여 Gobuster 가 인증된 스캔을 수행할 수 있도록 합니다.

이전 단계에 이어 사용자 이름은 labexuser이고 비밀번호는 labexpassword임을 알고 있습니다. 이제 비밀번호를 제공하기 위해 -P 플래그를 추가해 보겠습니다.

사용자 이름 (-U) 및 비밀번호 (-P) 플래그를 모두 포함하여 다음 Gobuster 명령을 실행합니다.

gobuster dir -u http://localhost -w ~/project/common.txt -U labexuser -P labexpassword

출력을 주의 깊게 관찰하십시오. 이번에는 Gobuster 가 /protected_area를 만났을 때 성공적으로 인증하고 이전에 보았던 401 Unauthorized 대신 200 OK 또는 403 Forbidden 상태 (디렉토리 목록 설정에 따라 다름) 를 보고할 수 있어야 합니다.

/protected_area       (Status: 403) [Size: 277]

403 Forbidden 상태는 액세스가 허용되었지만 (인증 성공), 서버가 디렉토리 목록을 금지하도록 구성되었음을 나타냅니다. 이는 이전에 보았던 401 Unauthorized와 달리 성공적인 인증입니다.

이는 사용자 이름과 비밀번호를 모두 제공함으로써 Gobuster 가 Basic HTTP 인증에 성공적으로 인증하고 디렉토리 무차별 대입을 계속할 수 있음을 보여줍니다.

스캔 실행 및 보호된 리소스 액세스

이 마지막 단계에서는 보호된 영역에 대해 전체 Gobuster 스캔을 실행하여 secret.txt 파일을 발견할 수 있는지 확인합니다. 이는 숨겨진 리소스를 발견하기 위해 Gobuster 와 함께 Basic HTTP 인증을 사용하는 실제 적용 사례를 보여줍니다.

대상 URL 을 수정하여 /protected_area 내에서 특정 스캔을 수행하고 secret.txt를 포함하는 단어 목록을 사용하겠습니다.

먼저 common.txt 단어 목록에 secret.txt가 포함되어 있는지 확인합니다. 3 단계에서 생성했다면 이미 존재해야 합니다.

이제 올바른 사용자 이름과 비밀번호로 http://localhost/protected_area/를 대상으로 Gobuster 를 실행합니다.

gobuster dir -u http://localhost/protected_area/ -w ~/project/common.txt -U labexuser -P labexpassword

스캔이 완료된 후에는 secret.txt200 OK 상태로 발견되었음을 나타내는 다음과 유사한 출력이 표시되어야 합니다.

/secret.txt           (Status: 200) [Size: 21]

이는 Gobuster 가 성공적으로 인증하고 보호된 디렉토리 내에서 secret.txt 파일을 발견했음을 확인합니다.

이제 자격 증명을 사용하여 curl로 발견된 파일의 내용을 확인할 수 있습니다.

curl -u labexuser:labexpassword http://localhost/protected_area/secret.txt

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

This is a secret file.

이것으로 실습을 마칩니다. Gobuster 와 함께 Basic HTTP 인증을 사용하여 보호된 웹 리소스를 발견하는 방법을 성공적으로 배웠습니다.

요약

이 실습에서는 Basic HTTP 인증으로 보호되는 웹 서버에서 디렉토리 및 파일을 열거하기 위해 Gobuster 를 사용하는 실질적인 경험을 쌓았습니다. 보호된 대상을 식별하고 401 Unauthorized 응답을 이해하는 것부터 시작했습니다. 그런 다음 -U-P 플래그를 사용하여 Gobuster 에 필요한 사용자 이름과 비밀번호를 제공하는 방법을 배웠습니다. 마지막으로 인증된 스캔을 성공적으로 실행하여 Gobuster 가 보호된 영역 내에서 secret.txt와 같은 숨겨진 리소스를 발견하는 능력을 입증했습니다. 이 기술은 기본 인증 메커니즘을 사용하는 웹 애플리케이션을 다룰 때 침투 테스터 및 보안 전문가에게 매우 중요합니다.