IDOR (Insecure Direct Object Reference)
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA)는 웹 또는 API 엔드포인트가 직접적으로 내부 객체에 접근하는 데 사용되는 사용자 제어 식별자를 공개하거나 수락할 때 발생합니다. 호출자가 해당 객체에 접근/수정할 권한이 있는지 확인하지 않고 접근합니다. 성공적인 악용은 일반적으로 다른 사용자의 데이터를 읽거나 수정하는 수평 또는 수직 권한 상승을 허용하며, 최악의 경우 전체 계정 탈취 또는 대량 데이터 유출로 이어질 수 있습니다.
1. 잠재적 IDOR 식별하기
- 객체를 참조하는 매개변수를 찾습니다:
- 경로:
/api/user/1234
,/files/550e8400-e29b-41d4-a716-446655440000
- 쿼리:
?id=42
,?invoice=2024-00001
- 본문 / JSON:
{"user_id": 321, "order_id": 987}
- 헤더 / 쿠키:
X-Client-ID: 4711
- 데이터를 읽거나 업데이트하는 엔드포인트를 선호합니다 (
GET
,PUT
,PATCH
,DELETE
). - 식별자가 순차적이거나 예측 가능할 때 주의합니다 – 만약 당신의 ID가
64185742
라면,64185741
도 아마 존재할 것입니다. - 추가 API를 노출할 수 있는 숨겨진 또는 대체 흐름(예: 로그인 페이지의 "Paradox team members" 링크)을 탐색합니다.
- 인증된 저권한 세션을 사용하고 ID만 변경합니다 같은 토큰/쿠키를 유지하면서. 권한 오류가 없다는 것은 일반적으로 IDOR의 신호입니다.
빠른 수동 변조 (Burp Repeater)
PUT /api/lead/cem-xhr HTTP/1.1
Host: www.example.com
Cookie: auth=eyJhbGciOiJIUzI1NiJ9...
Content-Type: application/json
{"lead_id":64185741}
자동화된 열거 (Burp Intruder / curl 루프)
for id in $(seq 64185742 64185700); do
curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-H "Cookie: auth=$TOKEN" \
-d '{"lead_id":'"$id"'}' | jq -e '.email' && echo "Hit $id";
done
2. 실제 사례 연구 – McHire 챗봇 플랫폼 (2025)
Paradox.ai 기반의 McHire 채용 포털 평가 중 다음과 같은 IDOR이 발견되었습니다:
- 엔드포인트:
PUT /api/lead/cem-xhr
- 인증: 모든 레스토랑 테스트 계정의 사용자 세션 쿠키
- 본문 매개변수:
{"lead_id": N}
– 8자리, 순차적인 숫자 식별자
lead_id
를 감소시킴으로써 테스터는 임의의 지원자의 전체 PII (이름, 이메일, 전화번호, 주소, 근무 선호도)와 세션 하이재킹을 허용하는 소비자 JWT를 검색했습니다. 범위 1 – 64,185,742
의 열거는 대략 6400만 개의 레코드를 노출했습니다.
개념 증명 요청:
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'
결합된 기본 관리자 자격 증명 (123456:123456
)이 테스트 계정에 대한 접근을 허용하여, 이 취약점은 심각한 회사 전체 데이터 유출로 이어졌습니다.
3. IDOR / BOLA의 영향
- 수평 상승 – 다른 사용자의 데이터 읽기/업데이트/삭제.
- 수직 상승 – 낮은 권한의 사용자가 관리자 전용 기능을 얻음.
- 식별자가 순차적일 경우 대량 데이터 유출 (예: 지원자 ID, 청구서).
- 다른 사용자의 토큰을 훔치거나 비밀번호를 재설정하여 계정 탈취.
4. 완화 및 모범 사례
- 모든 요청에 대해 객체 수준 권한 부여를 시행 (
user_id == session.user
). - 자동 증가 ID 대신 간접적이고 추측할 수 없는 식별자 (UUIDv4, ULID)를 선호.
- 권한 부여를 서버 측에서 수행, 숨겨진 폼 필드나 UI 컨트롤에 의존하지 않음.
- 중앙 미들웨어에서 RBAC / ABAC 검사를 구현.
- ID 열거를 감지하기 위해 속도 제한 및 로깅 추가.
- 모든 새로운 엔드포인트에 대해 보안 테스트 수행 (단위, 통합 및 DAST).
5. 도구
- BurpSuite 확장: Authorize, Auto Repeater, Turbo Intruder.
- OWASP ZAP: Auth Matrix, Forced Browse.
- Github 프로젝트:
bwapp-idor-scanner
,Blindy
(대량 IDOR 탐색).
참고 문헌
- McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants’ PII
- OWASP Top 10 – Broken Access Control
- How to Find More IDORs – Vickie Li
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.