
인가 문제를 테스트하기 위한 Burp 확장 프로그램. 자동화된 요청 반복 및 실시간 매개변수 값 추출.
이 Burp 확장 프로그램은 인증 취약점을 찾는 데 도움을 줍니다. 권한이 높은 사용자로 웹 애플리케이션을 탐색하고, Auth Analyzer가 정의된 비권한 사용자를 위해 요청을 반복하도록 하면 됩니다. 파라미터를 정의할 수 있는 기능을 통해 Auth Analyzer는 파라미터 값을 자동으로 추출하고 교체할 수 있습니다. 예를 들어, CSRF 토큰이나 전체 세션 특성 등을 응답에서 자동으로 추출하여 이후 요청에서 교체할 수 있습니다. 각 응답은 분석되어 우회 상태가 태그됩니다.
기본적으로 유사한 기능을 수행하는 다른 Burp 확장 프로그램이 있습니다. 그러나 파라미터 기능과 자동 값 추출의 강점이 Auth Analyzer를 선택하는 주요 이유입니다. 이를 통해 교환해야 하는 데이터의 내용을 알 필요가 없습니다. 파라미터와 쿠키를 쉽게 정의하면 Auth Analyzer가 필요한 값을 즉시 추출합니다. Auth Analyzer는 사전 요청을 수행하지 않습니다. 기본적으로 웹 앱과 동일한 작업을 수행합니다. 사용자가 정의한 사용자 역할/세션을 사용하여 말이죠.
(1) 테스트하려는 각 사용자에 대해 세션을 생성하거나 복제합니다.
(2) 세션 설정을 저장하고 불러옵니다.
(3) 세션 특성(교체할 헤더 및/또는 파라미터)을 지정합니다.
(4) 필요한 경우 필터를 설정합니다.
(5) Auth Analyzer를 시작/중지 및 일시 중지합니다.
(6) 테이블 필터를 지정합니다.
(7) 다른 사용자로 웹 앱을 탐색하고 반복된 요청의 결과를 추적합니다.
(8) 테이블 데이터를 XML 또는 HTML로 내보냅니다.
(9) 원본 및 반복 요청/응답을 수동으로 분석합니다.

사이트맵에 테스트할 리소스가 있다면 인증 테스트를 매우 쉽고 빠르게 수행할 수 있습니다. 첫 번째 단계에서는 테스트하려는 세션을 정의합니다. 그런 다음 사이트맵을 확장하고 리소스를 선택한 후 컨텍스트 메뉴를 통해 요청을 반복합니다. 추가로 어떤 요청을 반복할지, 반복하지 않을지에 대한 옵션을 정의할 수 있습니다. 이를 통해 복잡한 웹사이트의 인증 테스트를 몇 초 안에 수행할 수 있습니다.
Auth Analyzer는 주어진 세션에 대해 요청을 반복하기 전에 교체할 파라미터를 정의할 수 있습니다. 주어진 파라미터의 값은 다양한 요구 사항에 따라 설정할 수 있습니다.
파라미터 값은 다음 조건 중 하나를 충족하는 응답에서 추출됩니다.
Set-Cookie 헤더가 포함된 응답으로, 쿠키 이름이 정의된 추출 필드 이름과 일치하는 경우
HTML 문서 응답에 name 속성이 정의된 추출 필드 이름과 일치하는 입력 필드가 포함된 경우
JSON 응답에 추출 필드 이름과 일치하는 키가 포함된 경우
기본적으로 Auth Analyzer는 모든 위치에서 파라미터 값을 자동 추출하려고 시도합니다. 그러나 파라미터 설정 아이콘을 클릭하면 필요에 따라 자동 추출 위치를 제한할 수 있습니다.

응답의 한 줄에 지정된 시작 문자열과 끝 문자열이 포함된 경우 파라미터가 추출됩니다. From-To 문자열은 수동으로 설정하거나 해당 컨텍스트 메뉴를 통해 직접 설정할 수 있습니다. 응답에서 추출하려는 단어를 표시한 후 원하는 파라미터에 대해 From-To 추출로 설정하면 됩니다.
기본적으로 Auth Analyzer는 대부분의 텍스트 응답에서 헤더와 본문 모두에서 값을 추출하려고 시도합니다. 그러나 파라미터 설정 아이콘을 클릭하면 필요에 따라 From-To 추출 위치를 제한할 수 있습니다.

정적 파라미터 값을 정의할 수 있습니다. 예를 들어, 정적 CSRF 토큰이나 로그인 자격 증명에 사용할 수 있습니다.
정의된 파라미터가 요청에 존재하는 경우 입력을 요청하는 프롬프트가 표시됩니다. 예를 들어 2FA 코드를 설정하는 데 사용할 수 있습니다.
값이 설정(추출되거나 사용자가 정의)되면 해당 파라미터가 요청에 존재하는 경우 교체됩니다. 파라미터 교체 조건은 다음과 같습니다.
파라미터는 다음 위치 중 하나에 존재하는 경우 교체됩니다.

경로 내 (예: /api/user/99/profile → user라는 파라미터가 존재하는 경우 값 99가 교체됨)
URL 파라미터 (예: email=hans.wurst[a]gmail.com)
쿠키 파라미터 (예: PHPSESSID=mb8rkrcdg8765dt91vpum4u21v)
본문 파라미터 (URL-인코딩 또는 멀티파트 폼 데이터)
JSON 파라미터 (예: {"email":"hans.wurst[a]gmail.com"})
기본적으로 파라미터 값은 모든 위치에서 교체됩니다. 그러나 파라미터 설정 아이콘을 클릭하면 필요에 따라 위치를 제한할 수 있습니다.

정의된 파라미터를 완전히 제거할 수 있습니다. 예를 들어 CSRF 체크 메커니즘을 테스트할 때 사용할 수 있습니다.
사용자 이름과 비밀번호를 정적 값으로 정의합니다. 세션 쿠키 이름은 자동 추출로 정의해야 합니다. 세션 쿠키가 설정되지 않은 상태로 애플리케이션 탐색을 시작하는지 확인하세요. 웹 앱에 로그인합니다. Auth Analyzer는 정적 파라미터로 로그인 요청을 반복하고 Set-Cookie 헤더를 통해 자동으로 세션을 획득합니다. 이 쿠키는 주어진 세션의 이후 요청에 사용됩니다. 정의된 쿠키는 파라미터로 처리되므로 별도의 쿠키 헤더를 정의할 필요가 없습니다.

힌트: 파라미터에 대한 추출 및 교체 조건을 제한하여 추출/교체 단계에서 오작동을 방지할 수 있습니다.

쿠키 헤더와 CSRF 토큰(자동 값 추출 사용)을 정의합니다. CSRF 토큰 값은 주어진 세션의 응답에서 HTML 입력 태그, Set-Cookie 헤더 또는 JSON 응답에 존재하는 경우 추출됩니다.

자동 추출 방식은 HTML 입력 필드, JSON 객체 또는 Set-Cookie 헤더에서만 작동하므로 From To String이라는 일반 추출 방법을 사용해야 합니다. 이 추출 방법을 사용하면 고유한 시작 문자열과 끝 문자열 사이에 있는 모든 값을 응답에서 추출할 수 있습니다. Auth Analyzer는 컨텍스트 메뉴를 통해 시작 문자열과 끝 문자열을 자동으로 설정하는 방법을 제공합니다. 추출하려는 문자열을 표시한 후 컨텍스트 메뉴에서 From-To 추출로 설정하면 됩니다.

Authorization 헤더는 (Cookie 헤더처럼) 파라미터로 처리되지 않으므로, 헤더 삽입 지점을 사용하여 원하는 작업을 수행할 수 있습니다. 지정된 헤더에서 교체하려는 값을 표시하고 마우스 오른쪽 버튼을 클릭하세요. 기본값은 아직 파라미터 값이 추출되지 않은 경우 사용됩니다.

여러 역할을 동시에 테스트하려면 원하는 만큼 많은 세션을 생성하세요.

세션 상태 패널에서 갱신 버튼을 누르거나 컨텍스트 메뉴(테이블 항목에서 마우스 오른쪽 버튼 클릭)를 통해 영향을 받는 요청을 반복하세요. 힌트: 로그인 요청은 표시된 후 필터링할 수 있습니다.

멱등성 연산(예: DELETE 기능)을 테스트하기 위해 원본 요청을 드롭할 수 있습니다.

익명 사용자가 유효한 특성(예: 유효한 쿠키 값)을 필요로 하는 경우 평소처럼 헤더를 정의해야 합니다. 그렇지 않으면 다음과 같이 제거할 헤더를 정의할 수 있습니다.

교체할 헤더에 Origin 헤더를 추가하고 세션 패널에서 CORS 테스트를 선택하여 여러 엔드포인트의 개별 CORS 설정을 쉽게 테스트할 수 있습니다. CORS 테스트를 선택하면 Auth Analyzer가 요청을 반복하기 전에 HTTP 메서드를 OPTIONS로 변경합니다.

제거 체크박스를 선택하여 지정된 파라미터를 제거할 수 있습니다. 예를 들어 CSRF 체크 메커니즘을 테스트하는 데 사용할 수 있습니다.

Auth Analyzer는 두 응답 간의 차이를 확인할 수 있는 내장 비교 보기를 제공합니다. 분석하려는 메시지를 표시하고 메시지 보기를 변경하세요 (1). 이제 두 요청을 비교할 수 있습니다 (2) (3). 내장된 차이(Diff) 기능은 실시간으로 두 요청 간의 차이를 계산하여 표시합니다 (4).

확장된 차이 보기:

Auth Analyzer는 두 가지 유형의 요청/응답을 처리해야 합니다.
응답에 추출해야 하는 값이 포함된 경우
요청된 리소스가 정의된 세션에서 접근할 수 없어야 하는 경우
예를 들어, 정적 JavaScript 파일은 모든 사람이 접근할 수 있고 (바라건대) 보호된 데이터를 포함하지 않으므로 처리하지 않으려고 합니다. 이를 위해 다음과 같은 유형의 필터를 설정할 수 있습니다.