웹 취약점/취약점

검증되지않은 Redirect/Forward 취약점

샤이릴라 2018. 12. 31. 16:18

검증되지않은 Redirect/Forward 취약점


신뢰되지 않는 URL 주소로 자동 접속 연결이란

 

사용자의 입력값등 외부 입력값이 링크 표현에 사용되고, 이 링크를 이용하여 악의적인 사이트로 리다이렉트 되는 취약점

 

- Redirect:클라이언트에서 다른페이지 변경이 발생
- Forward:서버 단 자차에서 페이지 변경이 발생


Redirect
Web Container 는 Redirect 명령이 들어오면 웹 브라우저에게 다른 페이지로 이동하라고 명령을 내린다.
그러면 웹 브라우저는 URL을 지시된 주소로 바꾸고 그 주소로 이동한다. 다른 웹 컨테이너에 있는 주소로 이동이 가능하다.
새로운 페이지에서는 request 와 response 객체가 새롭게 생성된다.


Forward
Web Container 차원에서 페이지 이동만 있다. 실제로 웹 브라우저는 다른 페이지로 이동했음을 알 수 없다.
그렇기 때문에, 웹 브라우저에는 최초에 호출한 URL이 표시되고 이동한 페이지의 URL 정보는 볼수 없다.
동일한 웹 컨테이너에 있는 페이지로만 이동할수 있다.
현재 실행중인 페이지와 Forward에 의해 호출될 페이지는 request와 response 객체를 공유한다.


취약점 발생원인

- 검증되지 않은 분기 페이지가(redirect 또는 forward) 존재 하는 경우

- redirect, forward의 파라미터 값에 URL 정보가 있는지 확인하는 절차가 생략된 경우

- 해당 파라미터에 허용된 페이지만이 분기 가능하도록 확인하는 절차가 생략된 경우

 


대응절차

대응 방법은 아주 간단합니다. 파라미터에 대한 검증 절차 만으로도 쉽게 막아낼 수 있습니다.
서비스에서 허용하는 페이지에 대해서만 Redirection 시키도록 하거나 이전 페이지(Referer 헤더)에 대한 검증으로

해결이 가능합니다.