김승현
Bugbounty Boot Camp Chap.7 OPEN REDIRECTS 본문
Open Redirect는 사용자가 기존의 사이트가 아닌 외부의 url에 접근하게 속이는 공격 유형임
https://www.naver.com/login?redirect=https://attacker.com
위와 같이 네이버의 주소로 시작한다면 사용자들은 안심하고 클릭할 가능성 ↑
방지법
- 리다이렉션을 할 때 악의적인 주소로 접근하는지 확인하도록 해야 함
- 미리 작성된 피해야 할 목록을 확인하여 접근을 방지
- 제공된 URL이 기존의 호스트와 동일한지 확인
Open Redirects 찾는 법
Step 1: Look for Redirect Parameters
- 리다이렉션에 사용된 파라미터들 확인하기
Step 2: Use Google Dorks to Find Additional Redirect Parameters
- 구글 검색을 통해 추가적인 파라미터 검색하기 ex) inurl:%3Dhttp site:example.com
Step 3: Test for Parameter-Based Open Redirects
- 파라미터를 기반으로 테스트하기
Step 4: Test for Referer-Based Open Redirects
- referer를 기반으로 테스트하기
우회법
- 혼합 URL 사용
- URL 구성 요소를 섞어서 우회
- URL 인코딩 사용
- URL 내의 특정 문자를 인코딩하여 우회
- 잘못된 URL 구조 사용
- 잘못된 구조의 URL을 사용하여 우회
- 변칙적인 포트 사용:
- 비표준 포트를 사용하여 우회
우회법에 대한 방지법
엄격한 URL 검증, 화이트리스트, 상대경로 사용
+ 브라우저 자동 수정 기능을 활용한 우회법
- https:attacker.com
- https;attacker.com
- https:\/\/attacker.com
- https:/\/\attacker.com
위의 방법 모두 브라우저가 https://attacker.com으로 인식하는 주소들
https://attacker.com\@example.com
아래 설명에 대한 예시 주소
대부분의 브라우저는 \를 /로 자동 수정한다.
이런 경우,
사용자를 attacker.com으로 리다이렉트하고, @example.com을 URL의 경로 부분으로 간주하여 아래와 같은 주소로 만듦
https://attacker.com/@example.com
그러나 그렇지 않은 경우,
example.com을 호스트 이름으로 해석하고, attacker.com\를 URL의 사용자 이름 부분으로 간주하게 됨
+ 데이터 URL 사용
data:text/plain,hello!
data 스키마를 사용하면 위를 통해 hello!라는 평문을 보낼 수 있다.
data:text/html;base64,PHNjcmlwdD5sb2NhdGlvbj0iaHR0cHM6Ly9leGFtcGxlLmNvbSI8L3NjcmlwdD4=
base64를 활용하면 인코딩 또한 적용한 상태로 보낼 수 있게 된다
https://example.com/login?redir=data:text/html;base64,PHNjcmlwdD5sb2NhdGlvbj0iaHR0cHM6Ly9leGFtcGxlLmNvbSI8L3NjcmlwdD4=
최종적으로 redirect되는 주소에 data 스키마를 통해 원하는 곳으로 리다이렉션 되도록 만들 수 있음
이외 추가적인 방법들
- 잘못된 논리 검증 부분 우회
- https://example.com/login?redir=http://example.com.attacker.com
- url 디코딩 이용하기
- 더블인코딩
- https://example.com%252f@attacker.com
- 비ASCII 문자
- https://attacker.com?.example.com
- https://attacker.com/.example.com
- 더블인코딩
'book_summary' 카테고리의 다른 글
Bugbounty Boot Camp Chap.10 INSECURE DIRECT OBJECT REFERENCES (0) | 2024.07.28 |
---|---|
Bugbounty Boot Camp Chap.7 CLICKJACKING (0) | 2024.07.26 |
Bugbounty Boot Camp Chap.6 CROSS - SITESCRIPTING (0) | 2024.07.24 |
Bugbounty Boot Camp Chap.5 WEB HACKING RECONNAISSANCE (0) | 2024.07.24 |
Bugbounty Boot Camp Chap.4 ENVIRONMENTAL SET UP AND TRAFFIC INTERCEPTION (0) | 2024.07.22 |