Broken Access Control 개념 및 실습 정리 #1

MIN·2025년 2월 5일
0

정보보안

목록 보기
7/8

1. Broken Access Control이란?

Access Control(접근 제어)은 웹 애플리케이션이 특정 사용자에게 콘텐츠 및 기능을 제공하는 방식이다. 즉, 모든 사용자가 동일한 권한을 가지는 것이 아니라, 특정 사용자만 특정 콘텐츠에 접근할 수 있도록 제어하는 것이다.

하지만, 개발자가 접근 제어를 적절히 구현하지 않으면 Broken Access Control(접근 제어 실패)이 발생할 수 있다.

이는 단순히 세션을 탈취하는 것뿐만 아니라, 파일 접근, 디렉토리 접근, 심지어는 다른 사용자의 정보까지 탈취할 수 있는 심각한 보안 취약점이다.

2. Broken Access Control의 유형

  1. 디렉토리 및 파일 접근 문제

    • 특정 사용자가 접근해서는 안 되는 파일이나 디렉토리에 접근할 수 있는 경우 발생한다.
    • 예를 들어, 관리자가 접근해야 하는 디렉토리에 일반 사용자가 URL을 직접 입력하여 접근할 수 있는 경우가 있다.
  2. Insecure Direct Object Reference (IDOR)

    • 애플리케이션이 사용자의 입력값을 직접 사용하여 객체에 접근하는 경우 발생하는 취약점이다.
    • 예를 들어, user_id=1 값을 user_id=2로 변경했을 때, 다른 사용자의 데이터가 그대로 출력되는 경우 IDOR 취약점이 존재한다고 볼 수 있다.
  3. 권한 상승(Privilege Escalation)

    • 낮은 권한을 가진 사용자가 높은 권한을 가진 사용자로 변경할 수 있는 경우 발생한다.
    • 예를 들어, 일반 사용자가 관리자 권한을 획득할 수 있도록 잘못된 권한 검증이 이루어진 경우이다.

3. Broken Access Control 실습 예제

3.1 간단한 IDOR 공격 실습

  1. 웹사이트에 로그인하여 특정 페이지로 이동한다.
  2. URL에 포함된 매개변수(user_id=1)를 확인한다.
  3. 이 값을 변경하여(user_id=2, user_id=3 등) 다른 사용자의 정보를 불러올 수 있는지 확인한다.
  4. 만약 변경한 값이 유효하다면, 해당 웹사이트는 Broken Access Control 취약점을 가지고 있다.

3.2 TryHackMe 플랫폼 실습

  1. TryHackMe의 "Broken Access Control" 챌린지를 실행한다.
  1. 제공된 IP 주소를 복사하여 웹 브라우저에서 열어본다.


3. 로그인 페이지에서 제공된 자격 증명(username: not, password: test1234)을 입력하여 로그인한다.

  1. 로그인 후, 페이지 URL을 확인한다.

  1. URL에 포함된 매개변수(not=1)를 발견하고, 이 값을 변경하여 다른 계정으로 접근할 수 있는지 확인한다.
  2. not=0으로 변경하였을 때, 다른 사용자의 플래그(flag)를 확인할 수 있었다.

  1. 이는 Broken Access Control이 존재함을 의미하며, URL을 통해 임의로 다른 사용자의 정보를 열람할 수 있다는 보안 취약점을 나타낸다.

4. 보안 대책

Broken Access Control을 방지하기 위해 다음과 같은 보안 조치를 취할 수 있다.

  1. 서버 측 검증 강화

    • 사용자의 입력값을 신뢰하지 않고, 서버에서 철저히 검증해야 한다.
    • 예를 들어, user_id 값이 변경되었을 때, 세션 정보를 기반으로 해당 사용자가 실제로 접근 가능한 사용자 ID인지 확인해야 한다.
  2. 접근 제어 정책 적용

    • 역할 기반(Role-Based Access Control, RBAC) 또는 속성 기반(Attribute-Based Access Control, ABAC) 접근 제어를 구현하여, 권한이 없는 사용자가 특정 리소스에 접근하지 못하도록 해야 한다.
  3. 로그 모니터링 및 감지 시스템 구축

    • 비정상적인 접근 시도를 감지하고, 이에 대한 로그를 수집하여 분석할 수 있어야 한다.
  4. 보안 테스트 및 취약점 점검

    • 정기적인 보안 점검 및 침투 테스트를 수행하여 취약점을 조기에 발견하고 수정해야 한다.

5. 결론

Broken Access Control은 접근 권한을 제대로 검증하지 않을 경우 발생하는 보안 취약점이다. 이는 단순한 실수로 인해 발생할 수 있으며, 사용자 정보 유출, 권한 상승 등의 심각한 문제를 초래할 수 있다. 따라서 철저한 검증 및 보안 정책을 수립하여 이를 예방하는 것이 중요하다.

profile
코딩에 빠짐

0개의 댓글