Weakness
Session Fixation
Description
취약점 요약
사용자가 계정에 로그아웃을 한 후에도 모든 세션이 완전히 파기되지 않습니다.
설명
wargame.kr
웹 애플리케이션은 사용자가 응용 프로그램에서 "로그아웃"을 클릭하여 계정에 로그아웃을 하는 경우에도 서버 측에서 세션 쿠키를 만료하지 않습니다. 쿠키는 클라이언트 측(브라우저)에서 지워지지만 서버 측에서는 지워지지 않습니다. 재사용하는 경우 사용자 계정에 대한 액세스를 제공합니다. 다시 로그인하면 새 세션 쿠키가 생성되지만 이전 세션 쿠키는 서버 측에서 계속 활성 상태를 유지합니다. 따라서 모든 세션 쿠키를 재사용하여 사용자 계정에 액세스할 수 있습니다.
재현단계
- wargame.com 계정에 로그인한 후 게시글 작성(http://wargame.kr/board/write) 및 댓글 작성 또는 실시간 채팅 기능 페이지에서 주석을 남겨 burp 프록시를 사용하여 요청을 가져옵니다.
- 가져온 요청을 Send To Repeater 통해 리피터로 데이터를 가져온 후 계정에서 로그아웃 합니다.
- 캡처된 요청을 재생하고 적절한 응답을 표시하는지 확인합니다.
권장 사항
- 로그아웃 시 OWASP에 따라 사용자의 세션을 명시적으로 무효화하고 세션 토큰의 재사용을 허용하지 않아야 하며 서버는 로그아웃 후 사용자 브라우저에 새 세션 ID를 제공해야 합니다.
타격
원격 공격자는 피해자의 세션에 액세스하여 손상된 세션 내에서 사용자의 권한으로 임의의 작업을 수행할 수 있습니다.
- 만료되지 않는 쿠키는 사용자의 보안에 영향을 줄 수 있습니다.
- 사용자의 세션은 하이재킹이나 재생에 취약합니다.
- 사용자는 애플리케이션이 세션을 무효화하도록 할 방법이 없습니다. 이것은 공유 컴퓨팅 환경에서 중요합니다.
- 만료되지 않는 쿠키는 서버 보안에 영향을 줄 수 있습니다.
- 유효한 세션 토큰을 무차별 대입하는 시간 창이 늘어납니다.
- 많은 세션 토큰이 유효한 상태로 남아 있으면 무차별 대입을 통해 올바르게 추측할 수 있는 기회가 더 많습니다.
Reference
https://hackerone.com/reports/737058
https://hackerone.com/reports/1168192
https://hackerone.com/reports/709378
https://hackerone.com/reports/6504
https://hackerone.com/reports/216294
https://hackerone.com/reports/231041
https://hackerone.com/reports/245124
https://hackerone.com/reports/434715
https://hackerone.com/reports/249798
wargame.kr 서버 자체의 정보 유출이나 서버 공격에는 활용될 수 없으므로 해당 정책대로 코드 수정 후 티켓 Close 하겠습니다.