
SignSaboteur는 다양한 서명된 웹 토큰을 편집, 서명, 검증하기 위한 Burp Suite 확장 프로그램입니다.
SignSaboteur는 서명된 토큰을 편집, 서명, 검증 및 공격하기 위한 Burp Suite 확장 프로그램입니다. 다양한 유형의 토큰을 지원합니다: Django TimestampSigner, ItsDangerous Signer, Express cookie-session 미들웨어, OAuth2 Proxy, Tornado의 서명된 쿠키, Ruby Rails 서명된 쿠키, Ruby Rails 암호화된 쿠키, Nimbus JOSE + JWT 및 알 수 없는 서명된 문자열(Unknown signed string)입니다.
확장 프로그램에 대한 자세한 내용은 Portswigger Research 블로그 게시물 페이지에서 확인할 수 있습니다 - Introducing SignSaboteur: forge signed web tokens with ease.
HTTP 요청/응답 및 WebSocket 메시지 내의 토큰 자동 탐지 및 인라인 편집, 토큰 서명, 서명된 토큰 구현에 대한 무차별 대입 공격 자동화 기능을 제공합니다.
이 확장 프로그램은 Fraser Winterborn과 Dolph Flynn의 JWT Token 확장 프로그램에서 영감을 받았습니다. 원본 소스 코드는 여기와 여기에서 찾을 수 있습니다.
./gradlew jar 명령어를 실행하세요.build/libs 디렉토리 내에 JAR 파일 sign-saboteur-1.0.6.jar이 생성됩니다.Extensions 탭, Installed 하위 탭으로 이동하여 Add를 클릭하고 JAR 파일을 로드하면 됩니다.
단어 목록 보기에서는 시크릿 및 솔트 목록 파일을 가져올 수 있습니다. 확장 프로그램에는 자체 사전 구축된 딕셔너리 목록이 포함되어 있습니다. 대부분의 시크릿은 jwt-secrets에서 가져왔습니다. 옵션으로 Flask-Unsign-Wordlist를 사용할 수 있습니다. 특수 문자를 위해 JSON 문자열 형식을 지원하며, 시크릿 문자열을 "로 인용하여 사용합니다.
편집기 보기는 Django, Dangerous, Flask, Express, OAuth2 및 Tornado와 같은 여러 서명된 토큰을 지원합니다. Proxy, History 및 Repeater 도구의 Burp Suite HTTP 요청/응답 보기에서 서명된 토큰을 수정할 수 있습니다.
Dangerous 탭은 Flask와 Django 토큰 모두에 사용할 수 있으며, 탐지된 토큰이 Dangerous인지 Django인지에 따라 선택됩니다.
Unknown 탭은 알 수 없는 서명된 문자열을 무차별 대입하는 데 사용할 수 있습니다. 추측 모드는 Balanced 및 Deep 무차별 대입 공격에서만 작동합니다. 다음을 포함한 다양한 메시지 유도 기술을 지원합니다:
JSON 콘텐츠를 포함하는 각 구성 요소를 편집할 수 있는 JSON 텍스트 편집기가 제공됩니다:
타임스탬프를 포함하는 각 구성 요소를 편집할 수 있는 타임스탬프 편집기가 제공됩니다:
모든 서명된 토큰(Express 서명 제외)에 대해 16진수 편집기가 제공됩니다. 참고 Express 탭은 아직 서명 자동 업데이트를 지원하지 않습니다. 해당 서명 쿠키에 수동으로 복사하세요.
Sign은 서명 대화 상자를 제공합니다. 서명 기능이 있는 키 보기의 키를 사용하여 토큰에 서명하여 서명을 업데이트할 수 있습니다.
무차별 대입은 서명 생성에 사용된 비밀 키를 찾으려고 시도합니다. 비밀 키가 발견되면 대화 상자가 표시됩니다.
무차별 대입 옵션은 서명된 토큰의 서명에 대해 세 가지 유형의 공격을 구현합니다:
공격 옵션은 서명된 토큰에 대한 8가지 잘 알려진 인증 공격을 구현합니다:
이에 대한 자세한 내용은 아래에 설명되어 있습니다.
이 모든 공격은 함께 사용할 수 있습니다. 확장 프로그램은 공격 모드에서 토큰 페이로드 수정을 지원하지 않으므로 페이로드가 새 것으로 대체된다는 점을 유의하세요.
OpenID Connect ID 토큰 형식은 일반적으로 인증된 사용자에 대한 정보를 저장하기 위해 서명 라이브러리에서 사용됩니다. 확장 프로그램은 admin 사용자 ID 토큰에 대한 플레이스홀더를 생성합니다.
User claims 공격과 동일하지만 user JSON 속성에 배치됩니다.
사용자 세부 정보를 저장하는 또 다른 일반적인 방법은 username 및 password JSON 속성입니다. 확장 프로그램은 admin 사용자에 대한 플레이스홀더를 생성합니다.
Flask 인증된 사용자 세션 정보가 클라이언트 측에 저장된 경우 id, _id, user_id 또는 _user_id JSON 속성을 포함해야 합니다. 확장 프로그램은 일반적으로 관리자인 첫 번째 사용자에 대한 세션을 생성합니다.
Express 프레임워크는 passport JSON 속성을 사용하여 사용자 세부 정보를 저장합니다. 확장 프로그램은 admin 사용자에 대한 플레이스홀더를 생성합니다.
일부 프레임워크는 인증된 사용자에 대한 정보를 저장하기 위해 account 래퍼를 사용할 수 있습니다. 익스플로잇을 위해 Authenticated claims도 사용해야 할 수 있습니다.
Authenticated claims는 12개의 잘 알려진 인증 플래그를 구현합니다.
User access_token 옵션은 키 유도 없이 동일한 키와 동일한 해싱 알고리즘으로 서명된 JWT OpenID Connect ID 토큰을 생성합니다.