세션 예측 취약점은, 단순히 숫자가 증가하는 방법이나 일정 패턴등을 활용하여 공격자가 세션의 ID를 예측하여 세션을 가로챌 수 있는 취약점 입니다.
브라우저와 서버는 세션과, 세션쿠키를 활용하여 서로의 정보를 일치시킵니다.
따라서 세션이름과 값을 공격자가 패턴을 분석하지 못하게 조치를 해야 합니다.
#방법1
세션을 활용한 로그인 및 정보저장 기능에서는 세션 예측을 방지하기 위하여 어플리케인서버의 버전을 향상된 버전으로 업그레이드 할 필요가 있습니다.
가령 운용중인 서비스가 대표적 어플리케이션 서버인 톰캣을 사용하는데 버전이 3.0, 4.0인 경우 매우 취약하므로 이러한 어플리케이션 서버의 버전을 올려주는 것 입니다.
#방법2
해커가 스크립트코드를 통하여 세션쿠키값을 가져가지 못하도록 세션쿠키에 옵션을 주는 방법 입니다.
예를 들어 톰캣 서버를 사용 한 다면 web.xml파일에 아래와 같은 옵션을 주어 보안을 향상시킬 수 있습니다.
또한 대표적인 세션키 값 이름을 바꾸는 것도 좋은 방법 입니다. (톰캣은 JSESSIONID라는 이름을 사용 합니다)
* 샘플 대상 파일 : web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<!-- 생략.. -->
<session-config>
<cookie-config>
<name>원하는이름입력</name> <!-- 세션키값 이름을 바꿉니다 -->
<http-only>true</http-only> <!-- document.cookie와 같은 자바스크립트로 쿠키를 조회하는 것을 막는 옵션 -->
</cookie-config>
</session-config>
</web-app>
#방법3
세션을 활용하여 로그인을 하는 방법을 서버 자원을 소모하는 세션(SESSION)을 활용하는 것이 아니라 JWT 같은 방식으로 전환을 하는 것 입니다.
이러한 방법을 사용하면 로그인과 관련된 정보는 암호화가되어 쉽게 해독을 할 수 없기 때문 입니다.
* JWT 방식 샘플
https://lts0606.tistory.com/530
이상으로 세션 예측(SE) 조치 방법에 대해서 간단하게 살펴보았습니다.
궁금한점 또는 틀린 부분은 언제든 연락주세요! 👻
'웹 취약점(Web vulnerability)' 카테고리의 다른 글
17. 불충분한 세션만료(SC) (0) | 2021.12.07 |
---|---|
16. 불충분한 인가(IN) (0) | 2021.12.07 |
14. 크로스 사이트 리퀘스트 변조(CSRF) (0) | 2021.12.06 |
13. 취약한 패스워드 복구(PR) (0) | 2021.12.06 |
12. 불충분한 인증(IA) (0) | 2021.12.02 |
댓글