Jr Penetration Tester > Introduction to Web Hacking > IDOR
IDOR에 대해 공부해보자.
IDOR 이란? Insecure Direct Object Reference의 줄임말로, 직접 객체 참조 취약점을 의미한다. 접근 제어(Access Control)가 제대로 이루어지지 않아 사용자가 권한이 없는 다른 사람의 데이터나 리소스를 볼 수 있는 취약점.
웹사이트에서 URL이나 요청 파라미터에 직접 숫자나 ID값을 넣어서 특정 데이터를 가져올 때, 서버가 그 요청이 권한이 있는 사용자인지 제대로 확인하지 않으면 생기는 문제라고 할 수 있다.
예를 들어, http://secu/profile?user_id=1234가 내 user_id인데, 숫자를 조금만 바꾸면 다른 사람의 프로필을 볼 수 있다든지 하는 취약점이 해당된다. 만약에 user_id라는 파라미터도 모르는 상황이었는데, 이 파라미터를 알게되는 것을 파라미터 마이닝이라고도 한다.
웹 페이지 간 데이터를 전달할 때는 일반적으로 POST 방식, Query String, 그리고 Cookie를 통해 전달하는데 이때 웹 개발자들은 종종 raw 데이터를 먼저 encoding하는 작업을 한다. 왜냐하면, 받는 쪽 웹 서버가 이 데이터를 제대로 이해할 수 있도록 하기 위해.
인코딩은 이진(binary) 데이터를 ASCII 문자열로 변환하는 작업인데, 제일 일반적으로 Base64를 사용한다.
Hash ID도 있는데 이건 https://crackstation.net/ 같은 웹사이트 활용 가능. 일반적으로 MD5 사용됨
또 하나의 방법은 Unpredictable IDs로, 인코딩이나 해시로 id를 추측할 수 없는 경우 계정을 2개 생성해 이 ID 값을 서로 바꿔 요청해보는 것이다. A 계정으로 로그인해서 B 계정 ID로 요청 보냈는데 콘텐츠가 보이거나, 로그인을 하지 않았는데도 다른 사용자 계정 정보에 접근할 수 있다면 정상적인 인증 없이 정보 열람이 가능한 IDOR 취약점이 존재한다는 뜻.
맨날 URL에만 보이는 형태는 아니고, 브라우저가 AJAX 요청을 통해 백그라운드로 불러오는 콘텐츠일 수도 있고, JavaScript 파일 안에서 참조되는 엔드포인트일 수도 있다.
실습도 함께 진행해봤다.
customer?id=50을 클릭해봤다. 내 id=50이라는 뜻.. 보면 /api/v1/customer?id={user_id} 경로를 가진 엔드포인트로 GET 요청이 보내지고 있다. 브라우저에 표시되는 사용자 정보는 쿼리 스트링의 id 파라미터로부터 가져오는 것임을 알 수 있음.
그리고 이 요청의 응답은 JSON 형식이라고 한다.
이제 15.73%이라니..!
'CTF, 워게임 문제 풀이 > Try Hack Me' 카테고리의 다른 글
THM: Intro to SSRF (0) | 2025.06.08 |
---|---|
THM: File Inclusion (0) | 2025.06.07 |
THM: Authentication Bypass (0) | 2025.06.03 |
THM: Subdomain Enumeration (0) | 2025.06.02 |
THM: Content Discovery (0) | 2025.06.01 |
댓글