세션 하이제킹에서 세션이라는 뜻은 웹에서 사용자를 식별할 수 있는 하나의 수단으로 사용되는 것이 세션. 그리고 이 세션을 통해서 사용자 A,B,C를 식별할 수 있다. 대표적으로 쇼핑몰에 들어갔는데 로그인을 하고 구매, 장바구니 내역을 다 볼 수 있는게 세션을 통해서 상태 관리가 되는 것.
세션이라고 하면 웹에서는 대단하게 중요하다고 볼 수 있다.
만약 이 세션이 탈취 당한다면 어떻게 될까?
A 사용자가 있고 해커가 있는데 해커가 A 사용자의 세션을 탈취했으면 해커가 A 사용자 도용이 가능해진다. 그래서 세션 하이제킹이라는 뜻은 세션 탈취를 의미한다. 하이제킹 = 가로채다.
아이디 패스워드를 모르는 상황에서도 계정 도용이 된다는 의미이다.
이전처럼 세션이 있다면 아이디 패스워드 없이도 계정을 도용하는 것.
은행에 갔는데 A라는 사용자 번호표 3번인데, A라는 사용자 이후로 사람이 100명이 늘어났고 해커의 순번은 101번일 때, 이 해커는 A라는 사용자의 번호표를 도용해 이 사람 몰래 자신의 것과 바꾸는 것. 101번을 몰래 넣어두고 3번을 훔쳐 3번인 척 하는 것.
공격원리 분석 : STORED XSS 를 예시로 ..
cross site scripting에 취약한 게시판에 악성 스크립트 글을 남긴다. 글을 남기고 나중에 사용자가 게시글을 읽을 때 게시글에 스크립트가 발생이 된다. 이때 스크립트에는 공격자 서버로 세션을 보내라는 스크립트가 들어가 있다. 따라서 사용자는 공격자 서버로 세션을 보내고 공격자 서버에는 사용자 세션이 담겨있게 되고 공격자는 이 세션을 가지고 권한 도용을 하게 된다. 탈취한 세션을 통해 공격자는 마치 이 사용자인 마냥 행새를 하게 된다.

다른 취약점보다는 까다로운 편. sql injection 같은 경우, 문자형 같은 경우에는 싱클쿼터에 대한 검증, 숫자형 같은 경우 숫자에 대한 검증만 하면 되지만 xxs 같은 경우 html을 사용을 해야하는 경우 굉장히 까다롭다. 어쩔 수 없이 html 태그를 사용해야 하는 경우.. 게시판의 내용이 예시가 있다. -> 보안을 고려하자니 서비스가 떨어지고 서비스를 고려하자니 보안이 떨어져 까다로운게 cross site scripting
다른 취약점은 예를 들어 파일 업로드 취약점은 확장자 검증하면 되고, 파일 다운로드 취약점도 경로 이동 문자 관련 검증하면 되는, 이런 검증이 확실하게 처리해도 서비스에 문제 없는 것들은 대응하기 쉬운데 이런 것들은 무조건 대응만 할 수 없고 환경에 따라 알맞게 적용해야하니 까다롭다.
유형별로 살펴보는 것이 필요하다. 무조건 xss라고 해서 꺾새를 막는다와 같은 공식이 불가. 어떤 상황에서 어떤 문자가 필수로 막혀야될지와 같은 부분을 살펴보는 건데
첫번째가 일반적으로 많이 발생하는 예시로 문서 내 태그 내에 있는게 아닌 순수 사용자 데이터가 출력되는 경우 -> script나 다른 태그를 사용해줘야 하기 때문에 반드시 꺾새 필요
두번째 예시는 태그 내에 어떤 값이나 속성, 특정 태그의 속성 값으로 들어가는 경우에는 꺾새가 필요하지 않고 더블 쿼터가 필수이다.
세번째 경우도 더블 쿼터가 필수이다. 스크립트 내에 사용될 경우 양 옆에 사용되는 부분에 더블쿼터가 반드시 사용되어야. 싱글쿼터로 되어 있는 경우 싱클쿼터가 사용되어야 한다.
네번째 예시는 숫자형으로 100번이라는 사용자 입력값이 담기는데 이때 입력값을 바꿔 변조할 수 있다.

따라서 xxs는 대응되는 상황별로 대응해야할 문자가 각기 다르다. 잘 파악해서 알맞게 대응해줘야 한다.



