2025. 5. 7. 23:59ㆍ잡다한 글
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로 인코딩해서 접근
'잡다한 글' 카테고리의 다른 글
| KUality 정회원 선발 웹 과제 Write-Up (0) | 2025.09.14 |
|---|---|
| ReDoS? (0) | 2025.05.08 |
| 컴퓨터구조 기초 (0) | 2023.09.11 |
| 2022/05/03 - 백준 티어와 약간의 근황 (0) | 2022.05.03 |