API 구성 오류 - SwaggerUI의 스웨그 없음

Jan 19 2023
요약 API 구성 오류는 API(응용 프로그래밍 인터페이스)의 부적절하거나 안전하지 않은 설정을 나타냅니다. 여기에는 취약한 인증, 입력 유효성 검사 부족 또는 부적절한 액세스 제어와 같은 문제가 포함될 수 있습니다.

요약

API 구성 오류는 API(애플리케이션 프로그래밍 인터페이스)의 부적절하거나 안전하지 않은 설정을 나타냅니다. 여기에는 취약한 인증, 입력 유효성 검사 부족 또는 부적절한 액세스 제어와 같은 문제가 포함될 수 있습니다.

API 구성 오류는 공격자에게 중요한 데이터에 대한 무단 액세스 또는 사용자 대신 작업을 수행할 수 있는 기능을 제공할 수 있습니다. 이로 인해 민감한 데이터 유출, 시스템 손상 및 기타 보안 문제가 발생할 수 있습니다.

설명

비공개 프로그램의 웹 애플리케이션 중 하나에서 SwaggerUI 끝점의 API 구성 오류를 발견했습니다. 웹사이트에서 사용자의 민감한 정보를 찾기 위해 사용했던 웹 애플리케이션의 로컬 저장소에서 인증 토큰이 유출되었습니다. 그러나 SwaggerUI 엔드포인트에 액세스하여 요청을 조사한 결과 "권한이 없습니다. 액세스하려면 전체 인증이 필요합니다"라는 오류가 표시되었고 내 눈을 사로잡은 한 가지는 응답에 시작 값 Bearer가 있는 WWW -Authenticate 헤더 였습니다 . 시작 값이 Bearer 인 권한 요청 헤더가 사용됩니다.

요청에서 토큰을 찾기 시작했지만 토큰을 찾지 못한 다음 쿠키, localstorage 및 sessiontorage에서 토큰을 찾기 시작했고 애플리케이션의 localstorage에 저장되는 인증 토큰을 찾았습니다. 토큰을 복사하여 요청에 사용한 다음 {serviceIdentifier}를 1로 변경했고 이름, 성, 직원 ID, 이메일, 부서 이름 및 전화번호와 같은 직원 세부 정보가 포함된 사용자 목록을 열거할 수 있었습니다 .

SwaggerUI란 무엇입니까?

Swagger UI는 OpenAPI 사양을 사용하여 정의된 RESTful API의 끝점을 표시하고 테스트하기 위한 사용자 친화적인 인터페이스입니다. 이를 통해 개발자는 API와 쉽게 상호 작용하고 간단하고 직관적인 형식으로 다양한 요청 및 응답을 볼 수 있습니다.

이 취약점을 어떻게 찾았습니까?

  1. swaggerUI의 대상 엔드포인트로 이동하여 요청을 가로채서 > 리피터로 보내고 보내기를 클릭했습니다.
  2. 연발총
검사
로컬 저장소

3. 요청에 사용하기 위해 로컬 저장소에서 인증 토큰을 복사하여 파일에 붙여넣었습니다.

인증 토큰

4. 그런 다음 시작 값이 Bearer 인 Authorization 헤더 와 인증 토큰을 추가했습니다.

인증 헤더 및 토큰

5. 보내기를 클릭하고 사용자 세부 정보를 얻었습니다.

사용자 세부정보
사용자 세부정보
사용자 세부정보

왜 이런 일이 일어 났습니까?

제 생각에는

이 취약점을 유발하는 두 가지 문제가 있습니다.

  1. 액세스 가능한 swaggerUI 끝점
  2. 지나치게 권한이 부여된 인증 토큰

모든 사용자는 액세스가 제한되어야 하는 모든 사용자 정보에 쉽게 액세스할 수 있습니다.

계산된 CVSS

벡터 문자열 - CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:L

점수 - 7.2 높음

완화

이 문제에 적용할 수 있는 두 가지 완화 조치가 있습니다.

  1. swaggerUI 끝점 제한
  2. 생성된 인증 토큰에 적절한 권한 부여