IDOR?

2025. 5. 7. 23:59잡다한 글

728x90

IDOR (Insecure Direct Object Reference) 취약점

=> 한국어로는 안전하지 않은 직접 객체 참조

=> "주소를 살짝 바꾸면 다른 사람의 것을 볼 수 있는 취약점"이라고 생각하면 편하다.

[+] https://test.com/user/profile?usid=5

[+] 위와 같은 URL이 있을 때, 만약 usid를 6으로 바꿔서 다른 사용자의 프로필을 볼 수 있다면? 그게 IDOR 취약점.


위험성은?

[1] OWASP Top 10 - Broken Access Control 의 하위 취약점이다.

[2] 수평적, 때로는 수직적 권한 상승이 가능해진다. (ex. 관리자 권한)

[3] 권한 상승이 가능함에 따라, 정보 조회 뿐만 아니라 정보 수정까지 가능해진다. (읽기/쓰기 권한)

[4] 결론은 매 위험하다.... (괜히 OWASP Top 10에 든 게 아니다....)


공격 벡터? (+ 예시)

1. URI 파라미터 변조

https://test.com/user/profile?usid=5

=> https://test.com/user/profile?usid=6

 

2. HTTP Body 파라미터 변조

POST /api/order/cancel
{ "order_id": 300, "user_id": 100 }

=> POST /api/order/cancel
=> { "order_id": 300, "user_id": 100 }

 

3. HTTP 헤더 변조

X-User-ID: 100 => X-User-ID: 105

 

4. 쿠키 변조

Set-Cookie: is_admin=false; Path=/; HttpOnly; Secure;

=> Set-Cookie: is_admin=true; Path=/; HttpOnly; Secure;

 

5. JWT, JSON 변조

eyJhbGciOiAiSFMyNTYiLCJ0eXAiOiAiSldUIn0.eyJ1c2VyX2lkIjogMTIzNDUsICJyb2xlIjogInVzZXIifQ.MlqxHVpZrFQXt25tDlfU8YNhl7uGxDiSOiBoU3zDkvs

[Decoded Payload 부분]

{
  "user_id": 12345,
  "role": "user"
}

=> user_id를 변조 후, 변조된 토큰을 서버로 전송

 

6. 인코딩 값 변조

ex) URI 파라미터 변조가 제대로 되지 않을 때, Base64로 인코딩 된 값을 넣어서 공격

ex) 파일 이름 등을 Base64로 인코딩해서 접근

 

728x90

'잡다한 글' 카테고리의 다른 글

KUality 정회원 선발 웹 과제 Write-Up  (0) 2025.09.14
ReDoS?  (0) 2025.05.08
컴퓨터구조 기초  (0) 2023.09.11
2022/05/03 - 백준 티어와 약간의 근황  (0) 2022.05.03