본문 바로가기

Hack The Box CBBH

CBBH - Web Attacks[Intro to IDOR]

 

IDOR 취약점은 가장 일반적인 웹 취약점 중 하나이며, 취약한 웹 애플리케이션에 심각한 영향을 미칠 수 있다. IDOR 취약점은 웹 애플리케이션이 파일이나 데이터베이스 리소스와 같은 객체에 접근할 수 있을 때 발생한다. 사용자가 접근 권한 없이 임의의 리소스를 열람하거나 수정할 수 있다면, 해당 시스템은 취약하다고 간주된다.

IDOR 취약점은 광범위하게 존재할 수 있다. 접근 제어 시스템의 취약점을 자동으로 식별하는 것도 쉽지 않기 때문에, 이러한 취약점은 개발 단계에서 발견되지 않은 채 운영 환경까지 도달하는 경우가 많다.

예를 들어, 사용자가 최근에 업로드한 파일에 접근하기 위해 downloadphp?file_id=123 과 같은 URL을 확인했다고 가정하려 한다. 여기서 file_id=123 이 특정 파일을 참조하는 ID라면, 사용자가 다른 파일인 124 에 접근을 시도할 때 백엔드에서 적절한 접근 제어 시스템을 가지고 있지 않으면, 단순히 파일 ID만 변경해 다른 사용자의 파일에도 접근할 수 있다. 특히, 파일 ID가 쉽게 예측 가능한 값이라면, 공격자는 반복적인 요청을 통해 다수의 파일이나 리소스를 불법적으로 열람할 수 있다.

What Makes an IDOR Vulnerability

단순히 내부 객체나 리소스에 대한 직접적인 참조가 노출되는 것 자체가 취약점이 되는 것은 아니다. 하지만, 이러한 방식은 또 다른 취약점인 취약한 접근 제어 시스템을 악용할 수 있는 가능성을 제공한다.

대부분의 웹 애플리케이션은 특정 페이지, 기능, API에 대한 접근을 제한해 사용자가 악의적으로 리소스를 열람하지 못하도록 한다. 그러나 사용자가 예상치 못한 방법(Ex: 공유된 링크 또는 추측을 통한 접근)으로 해당 페이지에 접근할 경우, 웹 애플리케이션에서 사용자의 인증 정보를 비교해 리소스의 접근 권한을 검증하지 않으면 사용자는 단순히 링크만 알고 있어도 접근이 가능해진다.

웹 애플리케이션의 접근 제어를 강화하는 방법에는 여러 가지가 있으며, 대표적으로 Role-Based Access Control(RBAC) 시스템을 도입하는 방식이 있다. 중요한 점은 IDOR 취약점은 백엔드에서의 접근 제어가 부재하기 때문에 발생하는 것이다. 즉, 사용자가 객체에 대한 직접 참조를 가질 수 있을 때, 웹 애플리케이션이 적절한 권한 검사를 수행하지 않으면 공격자가 다른 사용자의 데이터를 볼 수 있거나 수정할 가능성이 높아진다.

만약 웹 및 모바일 애플리케이션에서 백엔드가 보호되지 않은 채 운영되면 모든 사용자가 다른 사용자 데이터에 임의로 접근할 수 있는 상태가 되며, 프론트엔드에서 이를 제한하는 UI 요소만이 유일한 보호 수단이 된다. 그러나 HTTP 요청을 직접 조작하면 백엔드에서 아무런 제한 없이 데이터를 조회할 수 있는 사실이 드러날 수 있으며, 이는 공격자가 시스템을 쉽게 접근할 수 있는 환경을 조성한다.

이렇게 IDOR 취약점은 웹 및 모바일 애플리케이션에서 가장 중요한 취약점 중 하나이다. 이는 단순히 객체 참조를 노출하는 문제가 아닌, 강력한 접근 제어 시스템이 존재하지 않기 때문에 발생하는 문제이다. 심지어 대형 웹 애플리케이션에서도 이러한 취약점이 발생할 수 있다.

Impact of IDOR Vulnerabilities

가장 기본적인 IDOR 공격 사례는, 특정 사용자만 접근할 수 있어야 하는 개인 파일이나 신용카드 정보오 같은 민감한 데이터를 다른 사용자가 불법적으로 조회하는 정보 유출인 IDOR Information Disclosure이 있다. 또한, 해당 객체가 단순한 조회뿐만 아니라 수정 권한 까지 부여된 상태라면, 공격자는 다른 사용자의 데이터를 변경하거나 삭제할 수도 있다. 이 경우, 계정 탈취(Account Takeover)로 이어질 수도 있다.

공격자가 IDOR 취약점을 발견하면, 일반적으로 다음과 같은 방식으로 공격이 진행된다.

  • 객체 참조 값을 분석 Ex: 데이터베이스 ID, URL 파라미터
  • 특정 패턴을 찾아, 유효한 ID를 예측하거나 증가시키면서 접근
  • 불법적으로 데이터에 접근할 수 있는지 확인한 후, 공격을 확장해 데이터를 추출하거나 조작

뿐만 아니라, IDOR 취약점은 권한 상승(Privilege Escalation)으로 이어질 수 있다. IDOR Insecure Function Calls (취약한 함수 호출)을 통해 일반 사용자 계정에서 관리자 계정으로 권한을 상승시킬 수 있는 경우도 존재한다.

예를 들어, 일부 웹 애플리케이션은 프론트엔드에서 관리자 기능을 제공하지만, 이를 일반 사용자에게 숨기는 방식으로 제한한다. 그러나, 공격자가 특정 URL이나 API 엔드포인트를 확인해 관리자 전용 기능을 호출할 수 있고 만약 백엔드에서 관리자 권한을 검사하지 않으면, 일반 사용자도 관리자 전용 API를 호출해 비밀번호 변경, 사용자 권한 수정, 계정 삭제 등의 조작이 가능해질 수 있으며, 결국 웹 애플리케이션 전체를 장악하는 결과를 초래할 수 있다.