본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


웹 취약점(Web vulnerability)

15. 세션 예측(SE)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2021. 12. 7.

세션 예측 취약점은, 단순히 숫자가 증가하는 방법이나 일정 패턴등을 활용하여 공격자가 세션의 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

 

Spring JWT 를 활용한 로그인

프론트프레임워크(라이브러리)인 앵귤러, 리엑트 및 뷰js등의 기능이 이제 슬슬 대세가 되는 것 같습니다. 이러한 프론트프레임워크(라이브러리)는 SPA 방식(Single Page Application) 이기 때문에 페이

lts0606.tistory.com

 

이상으로 세션 예측(SE) 조치 방법에 대해서 간단하게 살펴보았습니다.

궁금한점 또는 틀린 부분은 언제든 연락주세요! 👻

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글