
AuthMatrix는 웹 애플리케이션 및 웹 서비스에서 인가를 테스트할 수 있는 간단한 방법을 제공하는 Burp Suite 확장 프로그램입니다.
AuthMatrix는 Burp Suite의 확장 기능으로, 웹 애플리케이션과 웹 서비스에서 권한 부여(Authorization)를 간편하게 테스트할 수 있는 방법을 제공합니다. AuthMatrix를 사용하면 테스터는 대상 애플리케이션에 맞게 사용자, 역할 및 요청 테이블을 사전에 철저히 정의하는 데 집중합니다. 이러한 테이블은 다양한 위협 모델링 방법론에서 흔히 사용되는 접근 제어 매트릭스와 유사한 형식으로 구성됩니다.
테이블이 준비되면 테스터는 간단한 클릭-투-런 인터페이스를 통해 모든 역할과 요청 조합을 실행할 수 있습니다. 결과는 읽기 쉬운 색상 코드 인터페이스로 확인할 수 있으며, 시스템에서 감지된 모든 권한 부여 취약점을 표시합니다. 또한 확장 기능은 간단한 회귀 테스트를 위해 대상 구성을 저장하고 불러오는 기능을 제공합니다.
AuthMatrix는 Burp Suite BApp Store를 통해 설치할 수 있습니다. Burp Suite 내에서 Extender 탭을 선택하고, BApp Store를 선택한 다음 AuthMatrix를 선택하고 설치를 클릭합니다.
수동 설치는 이 저장소에서 AuthMatrix.py를 다운로드합니다. 그런 다음 Burp Suite 내에서 Extender 탭을 선택하고, Add 버튼을 클릭한 후 Extension type을 Python으로 변경하고 AuthMatrix python 파일을 선택합니다.
AuthMatrix를 사용하려면 Burp Suite에서 Jython을 사용하도록 구성해야 합니다. 이에 대한 간단한 지침은 다음 URL에서 확인할 수 있습니다.
https://portswigger.net/burp/help/extender.html#options_pythonenv
호환성을 보장하려면 Jython 버전 2.7.0 이상을 사용해야 합니다.
대상 애플리케이션 내 모든 권한 수준에 대한 역할을 생성합니다. (일반적인 역할로는 User, Admin, Anonymous 등이 있습니다)
이러한 다양한 역할에 맞는 충분한 사용자를 생성하고, 해당 사용자가 속한 모든 역할의 체크박스를 선택합니다. 단일 사용자만 포함하는 "Single-User" 역할은 교차 사용자 리소스 테스트를 지원하기 위해 자동으로 구성됩니다. 필요하지 않은 경우 요청 테이블에서 열을 마우스 오른쪽 버튼으로 클릭하여 이러한 역할을 삭제할 수 있습니다.
Repeater 탭에서 각 사용자에 대한 세션 토큰을 생성하고 사용자 테이블의 해당 열에 입력합니다. 쿠키는 Repeater에서 사용 가능한 오른쪽 클릭 메뉴를 통해 직접 사용자로 보낼 수 있습니다. AuthMatrix는 테이블에서 쿠키 문자열을 지능적으로 파싱하여 해당 요청에 대체/추가합니다.
참고: 쿠키 필드는 선택 사항입니다. 대상이 대신 HTTP 헤더를 사용하는 경우 "New Header" 버튼을 클릭하여 추가할 수 있습니다.
보다 고급 구성(자격 증명 자동 새로 고침 포함)은 아래의 "사용자 인증을 위한 체인" 예제를 참조하십시오.
Burp Suite의 다른 영역(예: Target 탭, Repeater 탭 등)에서 요청을 마우스 오른쪽 버튼으로 클릭하고 "Send to AuthMatrix"를 선택합니다.
AuthMatrix의 요청 테이블에서 각 HTTP 요청을 수행할 권한이 있는 모든 역할의 체크박스를 선택합니다.
요청의 예상 응답 동작을 기반으로 응답 정규식을 사용자 지정하여 작업 성공 여부를 판단합니다.
일반적인 정규식으로는 HTTP 응답 헤더, 본문 내 성공 메시지 또는 페이지 본문의 기타 변형이 있습니다.
참고: 요청은 오른쪽 클릭 메뉴를 통해 대신 실패 정규식(Failure Regex)을 사용하도록 구성할 수 있습니다(예: 인증된 사용자는 HTTP 303을 절대 수신하지 않아야 함).
아래의 Run을 클릭하여 모든 요청을 실행하거나 여러 요청을 마우스 오른쪽 버튼으로 클릭하고 Run을 선택합니다. 인접한 테이블에 색상 코드 결과가 표시되는 것을 확인할 수 있습니다.
녹색은 취약점이 감지되지 않았음을 나타냅니다.
빨간색은 요청에 취약점이 포함될 수 있음을 나타냅니다.
파란색은 결과가 오탐(false positive)일 수 있음을 나타냅니다. (일반적으로 유효하지 않거나 만료된 세션 토큰 또는 잘못된 정규식을 의미합니다)


체인(Chains)은 정적 또는 동적 값을 요청 본문에 복사하는 방법을 제공합니다. 이러한 값은 이전에 실행된 요청의 응답(정규식 사용)에서 가져오거나 사용자별 정적 문자열 값을 지정하여 가져올 수 있습니다.
체인의 가장 일반적인 사용 사례는 다음과 같습니다:
체인 항목에는 다음과 같은 값이 있습니다:
체인 이름: 설명적인 이름
소스: 사용자 테이블에 정의된 정적 사용자 문자열 또는 요청 테이블의 소스 요청 ID
추출 정규식: 소스 요청의 응답에서 값을 추출하는 데 사용되는 정규식입니다. 이전 필드에 요청이 지정된 경우에만 사용됩니다. 사용되는 경우 추출할 하나의 괄호 그룹이 포함되어야 합니다 [예: (.*)]
대상: 소스 값이 대체될 요청 ID 목록
대체 정규식: 소스 값을 삽입할 위치를 결정하는 데 사용되는 정규식입니다. 대체할 하나의 괄호 그룹이 포함되어야 합니다 [예: (.*)]
값 사용 대상: 선택한 한 사용자로부터 얻은 소스 값을 사용할지(교차 사용자 리소스 테스트에 유용) 아니면 모든 사용자의 값을 가져와 해당 사용자의 대상 요청에 배치할지(CSRF 토큰 검색과 같은 자동화 작업에 유용) 지정합니다.
참고: 요청은 행 순서대로 실행되지만, 체인 종속성이 감지되면 AuthMatrix는 필요한 순서대로 요청을 실행합니다.



특정 대상의 경우 요청이 실패한 시점의 응답 조건을 감지하도록 AuthMatrix를 구성하는 것이 더 쉬울 수 있습니다. 예를 들어 대상 사이트가 성공적인 요청에서 고유한 데이터를 반환하지만 권한이 없는 작업이 수행되면 항상 HTTP 303을 반환하는 경우가 있습니다.
이 모드에서 AuthMatrix는 성공 역할에 속하지 않은 모든 사용자에 대해 이 정규식을 검증합니다.
이렇게 하려면 요청을 마우스 오른쪽 버튼으로 클릭하고 "Toggle Regex Mode"를 선택합니다. 정규식 필드는 보라색으로 강조 표시되어 AuthMatrix가 실패 정규식 모드로 요청을 실행함을 나타냅니다.
참고: 오탐 감지 및 강조 표시는 실패 정규식 모드에서 작동하지 않을 수 있습니다.

상태 파일의 구조에 대한 자세한 내용은 JsonState 문서를 참조하십시오.