KOROMOON

착한 사마리아인이 되고 싶습니다.

9/10/2025

[Root Me] WEB-Server_API - Broken Access


( 1 ) 문제 정보



Your friend has set up a platform where you can register and post a private note. Everything is based on an API. Before setting up the Front-End, he asked you to check that everything was secure.


친구가 등록하고 비공개 메모를 게시할 수 있는 플랫폼을 구축했습니다. 모든 기능은 API 기반입니다. 프런트엔드를 설정하기 전에 모든 것이 안전한지 확인해 달라고 부탁했습니다.


관련 리소스 : https://www.youtube.com/watch?v=RiKikKIibpk




( 2 ) 문제 요점


기초적인 BOLA 취약점 공격임.




( 3 ) BOLA (Broken Object Level Authorization)



1. 취약점 정의

BOLA 는 Broken Object Level Authorization 의 약자로 한글로는 '손상된 객체 수준 권한 부여' 임.

BOLA 취약점은 웹 어플리케이션의 접근 제어 메커니즘에 존재하는 결함으로 사용자가 IT 환경 내의 데이터베이스 레코드, 파일 또는 기타 리소스와 같은 "객체"에 접근하거나 조작할 수 있는 취약점임.

애플리케이션의 접근 제어 메커니즘이 제대로 작동하지 않으면, 권한이 없는 사용자가 접근 권한이 없는 객체에 대한 작업을 수행할 수 있음.

이 취약점은 OWASP 2023년 상위 10대 API 보안 위험 중 가장 큰 위협으로 간주되는 보안 취약점임.


2. 취약점 발생 원인

BOLA 취약점은 개발자가 사용자 입력을 적절하게 검증하거나 사용자가 객체에 접근하도록 허용하기 전에 권한을 확인하는 코드를 작성하지 못하는 등 안전하지 못한 코딩 관행으로 인해 발생하는 경우가 많음.

검증이 이전에 허용된 경우에도 마찬가지임.


BOLA 취약점은 일반적으로 다음을 포함한 승인 프로세스의 결함으로 인해 발생함.

- 사용자가 제공한 입력의 유효성 검사 실패

- 권한 확인의 잘못된 구성

- URI, 요청 헤더 또는 본문에서 쉽게 식별 가능하거나 열거된 리소스 ID 공개

- 개별 요청에 대한 권한 확인 실패


3. 취약점 영향

- 허가되지 않은 데이터 보기

- 민감함 정보 접근

- 관리 계정 해킹

- 금융 사기 및 신용 도용을 위해 데이터를 훔침




( 4 ) flag 찾기


1. 사이트 화면

Swagger 로 만든 사이트임.

Swagger 는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크임.


POST /api/signup <--- 새로운 사용자 생성

POST /api/login <--- 로그인

GET /api/user <--- 사용자 정보 검색

PUT /api/note <--- 사용자 메모 업데이트


2. 사용자 생성

필자의 username과 password 생성함.


3. 로그인

본인의 계정 정보를 입력함.


4. 사용자 ID 입력 후 사용자 정보 검색

user_id 필드에 사용자 ID를 입력함.

기본적으로 사용자 ID 1은 root 아니면 admin 일 것으로 추측되어 필자는 사용자 ID 를 2로 지정함.


5. 사용자 메모 업데이트

원하는 메모를 입력함.


6. /api/user/ 경로를 볼 수 있음.

Swagger 프로그램의 경로 템플릿은 URL 일부를 경로 매개변수로 표시할 수 있음.

API 서버는 /user/5 또는 /user/12 예와 같이 API 요청 시 경로 매개변수값에 제공해줘야 함.

링크 : https://swagger.io/docs/specification/v3_0/paths-and-operations/


필자의 사용자 ID 2를 /api/user/2 에 접근함.


root 아니면 admin에(사용자 ID 1 추정) flag 값이 있을거라 판단하여 /api/user/1 에 접근함.

flag 값 찾음.




참고 사이트 : 

https://www.akamai.com/glossary/what-is-bola

https://swagger.io/docs/specification/v3_0/paths-and-operations/


댓글 없음:

댓글 쓰기