22. 세션고정(SF) 취약점
- 취약점 설명
세션값을 고정하여 명확한 세션 식별자(ID) 값으로 사용자가 로그인하여 정의된 세션 식별자(ID)가 사용 가능하게 되는 취약점
- 판단기준(조건)
- 로그인(인증절차) 전후로 세션이 변하지 않고 처음 웹 서버에 접속할때 세션을 고정하여 사용한다
- IP가 다른 두개의 PC에서 동일한 세션으로 접근이 가능하다
- 모의해킹 시나리오
- 해커는 웹(Target)서버에 접근하여 정상 세션을 발급받는다.
- 해커는 희생자(admin)에게 해커가 받은 정상 세션을 강제로 Set-Cookie하고 웹으로 리다이렉트 하는 스크립트를 메일로 전송한다.
- 희생자(admin)는 해커가 보낸 메일을 확인하고 스크립트를 실행한다.
- 희생자(admin)는 웹(Target)에 접근할때 해커와 같은 세션으로 접근하게 된다.
- 희생자(admin)는 정상적으로 관리자 페이지에 로그인한다.
- 관리자 페이지에 로그인(인증절차)을 하여도 세션이 로그인 전후로 변하지 않는다.
- 해커와 희생자(admin)는 동일한 세션을 사용하기 때문에 해커는 새로고침(F5)을 할때 관리자 권한을 가져온다.
- 조치 방안
- 로그인 전후로 세션을 재 발급한다.
PHP
<?php
session_start();
$old_sessionid = session_id();
session_regenerate_id();
$new_sessionid = session_id();
echo "Old Session : $old_sessionid<br />";
echo "New Session : $new_sessionid<br />";
print_r($_SESSION);
?>
ASP
JSP
- IP를 체크하여 멀티세션을 막는다.
※ 참고 자료
http://en.wikipedia.org/wiki/Session_fixation
'30. > 31. Web' 카테고리의 다른 글
OpenSSL HeartBleed 취약점 (0) | 2014.04.19 |
---|---|
The Hacker Firefox (0) | 2014.04.17 |
Flash SWF을 이용한 XSS (0) | 2014.03.20 |
[DVWA] Damn Vulnerable Web Application 설치 (1) | 2014.02.05 |
인터넷 익스플로러에서 프록시 서버를 통한 설정 후, 직접 통신 (0) | 2013.12.04 |