3.어플리케이션보안

불충분한 세션 관리 취약점

222b 2019. 10. 31. 12:53

동일한 세션 ID(일정한 패턴이 존재)를 발급하거나 세션 타입아웃을 너무 길게 설정하였을 경우 공격자가 다른 사용자의 세션을 재사용하여 해당 사용자의 권한을 탈취할 수 있는 취약점.

 

session timeout: IDLE한 시간 

 

탈취한 세션 ID를 이용하여 다른 브라우저에서 admin 계정 세션을 가로채기 성공한다. 

이를 "HTTP 세션 하이재킹(hijacking)이라 한다.(쿡시 툴을 이용하여 Cookie 정보 삽입)

 

PHP설정파일(php.ini)를 통한 적절한 세션 타임아웃 설정

 

session.gc_maxlifetime = 600 

session.gc_maxlifetime 을 통해 초 단위 세션 유지시간을 지정

 

service httpd restart 

 

세션 ID 탈취 -> 

HttpOnly 속성 쿠키를 통한 보안 

<script> alert(document.cookie) </script>  //DOM객체 다큐먼트.쿠키 XSS에 취약한지 보는 script

 

http나 https 헤더를 통해서 주고받는것 이외에 자바스크립트 DOM을 이용해서 정보를 획득하는 것을 막아주는 옵션 = HTTP Only 속성임

 

HTTP Only 속성이 붙은 쿠키는 HTTP 혹은 HTTPS를 통해 전송할 때만 사용되며 이외의 방법으로는 참조가 불가능하게 만드는 속성이다. 따라서 javascript등을 통해서 쿠키정보를(ex. document.cookie) 탈취하는 것을 방지할 수 있다. 

 

session.cookie_httponly=1

나중에 헤더정보 붙을때 어떻게 붙는지 볼거고 

httponly가 설정된 헤더

httponly를 설정하면 

<script> alert(document.cookie) </script> //쿠키를 읽어오기 위한 script가 안먹힘

 

대응책

세션ID를 로그인시마다 추측할 수 없는 랜덤한 값으로 새롭게 발급